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())