summaryrefslogtreecommitdiff
path: root/Tests/Game/Commands/test_LookCommand.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/Game/Commands/test_LookCommand.gd')
-rw-r--r--Tests/Game/Commands/test_LookCommand.gd58
1 files changed, 58 insertions, 0 deletions
diff --git a/Tests/Game/Commands/test_LookCommand.gd b/Tests/Game/Commands/test_LookCommand.gd
new file mode 100644
index 0000000..558efc1
--- /dev/null
+++ b/Tests/Game/Commands/test_LookCommand.gd
@@ -0,0 +1,58 @@
+extends CommandParserTestBase
+
+const LookCommand = preload("res://Scripts/Game/Commands/LookCommand.cs")
+
+var _around_permutations = generate_capitalization_permutations('around')
+var _at_permutations = generate_capitalization_permutations('at')
+var _look_permutations = generate_capitalization_permutations('look')
+
+func parse(input: String) -> LookCommand:
+ return autofree(_instance.TryParse(input))
+
+func after_all():
+ assert_no_new_orphans()
+
+func test_parsing_look_command_without_an_argument_returns_non_null():
+ assert_not_null(parse('look'))
+
+func test_parsing_look_command_is_case_insensitive(permutation=use_parameters(_look_permutations)):
+ assert_not_null(parse(permutation))
+
+func test_parsing_look_command_without_an_argument_returns_look_command_with_an_emtpy_target():
+ assert_eq('', parse('look').Target)
+
+func test_parsing_look_at_command_is_case_insensitive(permutation=use_parameters(_at_permutations)):
+ assert_not_null(parse('look ' + permutation))
+
+func test_parsing_look_at_command_without_further_arguments_returns_look_command_with_an_emtpy_target():
+ assert_eq('', parse('look at').Target)
+
+func test_parsing_look_at_command_without_further_arguments_returns_look_command_with_non_null_modifier():
+ assert_not_null(parse('look at').Modifier)
+
+func test_parsing_look_at_command_without_further_arguments_returns_look_command_with_at_modifier():
+ assert_eq('At', parse('look at').ModifierAsString)
+
+func test_parsing_look_at_command_with_more_arguments_returns_look_command_with_non_empty_target():
+ assert_ne('', parse('look at door on the left').Target)
+
+func test_parsing_look_at_command_with_an_additional_argument_returns_look_command_with_the_additional_argument_as_the_target():
+ assert_eq('window', parse('look at window').Target)
+
+func test_parsing_look_at_command_with_multiple_additional_arguments_returns_look_command_with_the_additional_arguments_as_the_target():
+ assert_eq('table near the door', parse('look at table near the door').Target)
+
+func test_parsing_look_around_command_is_case_insensitive(permutation=use_parameters(_around_permutations)):
+ assert_not_null(parse('look ' + permutation))
+
+func test_parsing_look_around_command_without_further_arguments_returns_look_command_with_an_empty_target():
+ assert_eq('', parse('look around').Target)
+
+func test_parsing_look_around_command_without_further_arguments_returns_look_command_with_non_null_modifier():
+ assert_not_null(parse('look around').Modifier)
+
+func test_parsing_look_around_command_without_further_arguments_returns_look_command_with_around_modifier():
+ assert_eq('Around', parse('look around').ModifierAsString)
+
+func test_parsing_look_around_command_ignores_all_additional_arguments():
+ assert_eq('', parse('look around the room').Target)