extends CommandParserTestBase const LookCommand = preload("res://Scripts/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 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)