Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"version": "2.0.0",
"configurations": [
{
"name": "Test Drive - All",
"type": "godot",
"request": "launch",
"additional_options": "--single-threaded-scene --headless -s addons/test-drive/src/cli/td.gd"
},
{
"name": "Test Drive - Current File",
"type": "godot",
"request": "launch",
"additional_options": "--single-threaded-scene --headless -s addons/test-drive/src/cli/td.gd --file ${file}"
}
]
}
6 changes: 6 additions & 0 deletions addons/gdlib-editorui/addons.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@
"source": "remote",
"subfolder": "addons/gdlibnode",
"checkout": "v0.0.3"
},
"test-drive": {
"url": "https://github.com/TravelSizedLions/test-drive.git",
"source": "remote",
"subfolder": "addons/test-drive",
"checkout": "v0.0.3"
}
}
}
2 changes: 1 addition & 1 deletion addons/gdlib-editorui/src/ui_utils.gd
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ var main_screen: VBoxContainer:
return __main_screen

var __editor_base_control: Control
var editor: Control:
var editor:
get:
if not __editor_base_control:
__editor_base_control = __editor.get_base_control()
Expand Down
8 changes: 8 additions & 0 deletions project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,11 @@ config_version=5
config/name="gdutil-editorui"
run/main_scene="uid://bc3a5lv8ry5hg"
config/features=PackedStringArray("4.4", "Forward Plus")

[autoload]

TreeAccess="*res://addons/tree-access/src/tree_access.gd"

[editor_plugins]

enabled=PackedStringArray("res://addons/tree-access/plugin.cfg")
79 changes: 79 additions & 0 deletions tests/ui_utils.test.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
@tool
class_name EditorUITests extends TDTest

var spies
var editor_ui
var mouse_pos
func test_drive():
before_each(func():
mouse_pos = Vector2(0, 0)
var MockViewPort = mock(SubViewport)
MockViewPort.get_mouse_position.mock(func():
return mouse_pos
)
var viewport = MockViewPort.new()

var MockSceneTree = mock(SceneTree)
var scene_tree = MockSceneTree.new()

var MockBaseControl = mock(Control)
MockBaseControl.get_viewport.returns(viewport)
MockBaseControl.get_tree.returns(scene_tree)
var base_control = MockBaseControl.new()

var MockEditorInterface = mock(EditorInterfaceWrapper)
MockEditorInterface.get_editor_settings.returns(mock(EditorSettingsWrapper).new())
MockEditorInterface.get_editor_main_screen.returns(autofree(VBoxContainer.new()))
MockEditorInterface.get_base_control.returns(base_control)
var editor_interface = MockEditorInterface.new()

editor_ui = EditorUI.new()
editor_ui.__editor = editor_interface
spies = {
get_editor_main_screen=spy(editor_interface.get_editor_main_screen),
get_base_control=spy(editor_interface.get_base_control),
get_editor_settings=spy(editor_interface.get_editor_settings),
create_timer=spy(scene_tree.create_timer)
}

)

group('basics', func():
test("can get the editor's main screen", func():
assert_equal(spies.get_editor_main_screen.num_calls, 0)
assert_true(editor_ui.main_screen is VBoxContainer)
assert_equal(spies.get_editor_main_screen.num_calls, 1)
)

test("can get the editor's base control", func():
assert_equal(spies.get_base_control.num_calls, 0)
assert_exists(editor_ui.editor)
assert_equal(spies.get_base_control.num_calls, 1)
)

test("can get the editor settings", func():
assert_equal(spies.get_editor_settings.num_calls, 0)
assert_exists(editor_ui.settings)
assert_equal(spies.get_editor_settings.num_calls, 1)
)
)

group('is_mouse_over()', func():
test("returns true when the mouse is over the given control", func():
var control: Control = N.create_native(Control)
control.size = Vector2(1000, 1000)
control.global_position = Vector2.ZERO
mouse_pos.x = 500
mouse_pos.y = 500
assert_true(editor_ui.is_mouse_over(control))
)

test("returns false when the mouse is not over the given control", func():
var control: Control = N.create_native(Control)
control.size = Vector2(0, 0)
control.global_position = Vector2.ZERO
mouse_pos.x = 1500
mouse_pos.y = 1500
assert_false(editor_ui.is_mouse_over(control))
)
)
1 change: 1 addition & 0 deletions tests/ui_utils.test.gd.uid
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
uid://dspf3xux5o6oi