diff options
Diffstat (limited to 'Tests/Game/Commands/test_LookCommand.gd')
| -rw-r--r-- | Tests/Game/Commands/test_LookCommand.gd | 58 |
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) |
