summaryrefslogtreecommitdiff
path: root/Tests/Game/test_Input.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/Game/test_Input.gd')
-rw-r--r--Tests/Game/test_Input.gd86
1 files changed, 86 insertions, 0 deletions
diff --git a/Tests/Game/test_Input.gd b/Tests/Game/test_Input.gd
new file mode 100644
index 0000000..fca14e5
--- /dev/null
+++ b/Tests/Game/test_Input.gd
@@ -0,0 +1,86 @@
+extends GutTest
+
+const Scene = preload('res://Scenes/Game/Input.tscn')
+const GameInput = preload('res://Scripts/Game/Input.cs')
+
+var _instance: GameInput = null
+var _sender = InputSender.new(Input)
+
+const _invalid_input = 'ThisIsNotAValidCommand!'
+const _valid_input = 'look at door'
+const _command_submitted = 'CommandSubmitted'
+const _unknown_input_submitted = 'UnknownInputSubmitted'
+
+func _get_input_node() -> LineEdit:
+ return _instance.get_node('%TextInput') as LineEdit
+
+func _set_input_text(text):
+ var textInputNode = _get_input_node()
+ textInputNode.text = text
+ textInputNode.emit_signal('text_changed', textInputNode.text)
+
+func before_each():
+ _instance = add_child_autofree(Scene.instance())
+
+func after_each():
+ _sender.release_all()
+ _sender.clear()
+
+func after_all():
+ assert_no_new_orphans()
+
+func test_can_instantiate():
+ assert_not_null(_instance)
+
+func test_has_CommandSubmitted_signal():
+ assert_has_signal(_instance, _command_submitted)
+
+func test_has_UnknownInputSubmitted_signal():
+ assert_has_signal(_instance, _unknown_input_submitted)
+
+func test_TextInput_has_focus_when_scene_is_instantiated():
+ assert_true(_get_input_node().has_focus())
+
+func test_CommandSubmitted_signal_is_not_emitted_when_enter_is_pressed_without_text_in_TextInput():
+ watch_signals(_instance)
+ yield(UiHelpers.press_key(_sender, KEY_ENTER), 'idle')
+ assert_signal_not_emitted(_instance, _command_submitted)
+
+func test_UknownInputSumbmitted_signal_is_not_emitted_when_enter_is_pressed_without_text_in_TextInput():
+ watch_signals(_instance)
+ yield(UiHelpers.press_key(_sender, KEY_ENTER), 'idle')
+ assert_signal_not_emitted(_instance, _unknown_input_submitted)
+
+func test_CommandSubmitted_signal_is_emitted_when_enter_is_pressed_with_a_valid_command_in_TextInput():
+ watch_signals(_instance)
+ _set_input_text(_valid_input)
+ yield(UiHelpers.press_key(_sender, KEY_ENTER), 'idle')
+ assert_signal_emitted(_instance, _command_submitted)
+
+func test_UnknownInputSubmitted_signal_is_not_emitted_when_enter_is_pressed_with_an_invalid_command_in_TextInput():
+ watch_signals(_instance)
+ _set_input_text(_valid_input)
+ yield(UiHelpers.press_key(_sender, KEY_ENTER), 'idle')
+ assert_signal_not_emitted(_instance, _unknown_input_submitted)
+
+func test_CommandSubmitted_signal_is_not_emitted_when_enter_is_pressed_with_an_invalid_command_in_TextInput():
+ watch_signals(_instance)
+ _set_input_text(_invalid_input)
+ yield(UiHelpers.press_key(_sender, KEY_ENTER), 'idle')
+ assert_signal_not_emitted(_instance, _command_submitted)
+
+func test_UnknownInputSubmitted_signal_is_emitted_when_enter_is_pressed_with_a_valid_command_in_TextInput():
+ watch_signals(_instance)
+ _set_input_text(_invalid_input)
+ yield(UiHelpers.press_key(_sender, KEY_ENTER), 'idle')
+ assert_signal_emitted(_instance, _unknown_input_submitted)
+
+func test_TextInput_is_empty_after_submitting_a_valid_command():
+ _set_input_text(_valid_input)
+ yield(UiHelpers.press_key(_sender, KEY_ENTER), 'idle')
+ assert_true(_get_input_node().text.empty())
+
+func test_TextInput_is_empty_after_submitting_an_invalid_command():
+ _set_input_text(_invalid_input)
+ yield(UiHelpers.press_key(_sender, KEY_ENTER), 'idle')
+ assert_true(_get_input_node().text.empty())