summaryrefslogtreecommitdiff
path: root/Tests/Game/test_CommandInputArea.gd
blob: c233ec49f8d2dee39d57f3534011a7cb9362818c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
extends GutTest

const Scene = preload('res://Scenes/Game/CommandInputArea.tscn')
const GameInput = preload('res://Scripts/Game/CommandInputArea.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 before_all():
	_sender.set_auto_flush_input(true)

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)
	UiHelpers.press_key(_sender, KEY_ENTER)
	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)
	UiHelpers.press_key(_sender, KEY_ENTER)
	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)
	UiHelpers.press_key(_sender, KEY_ENTER)
	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)
	UiHelpers.press_key(_sender, KEY_ENTER)
	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)
	UiHelpers.press_key(_sender, KEY_ENTER)
	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)
	UiHelpers.press_key(_sender, KEY_ENTER)
	assert_signal_emitted(_instance, _unknown_input_submitted)

func test_TextInput_is_empty_after_submitting_a_valid_command():
	_set_input_text(_valid_input)
	UiHelpers.press_key(_sender, KEY_ENTER)
	assert_true(_get_input_node().text.empty())

func test_TextInput_is_empty_after_submitting_an_invalid_command():
	_set_input_text(_invalid_input)
	UiHelpers.press_key(_sender, KEY_ENTER)
	assert_true(_get_input_node().text.empty())