diff --git a/bin/generate_tests b/bin/generate_tests index e332f1bf..ce8257b1 100755 --- a/bin/generate_tests +++ b/bin/generate_tests @@ -68,13 +68,13 @@ def get_cases(specs: pathlib.Path, exercise: pathlib.Path) -> list[dict]: return cases -def filter_togdscript(obj) -> str: - """Filter `togdscript` that converts an arbitrary object to the GDScript version.""" +def filter_quote(obj) -> str: + """Filter `quote` that converts an arbitrary object to the GDScript version.""" if isinstance(obj, dict): - out = ", ".join(f"{filter_togdscript(k)}: {filter_togdscript(v)}" for k, v in obj.items()) + out = ", ".join(f"{filter_quote(k)}: {filter_quote(v)}" for k, v in obj.items()) return "{" + out + "}" if isinstance(obj, list): - out = ", ".join(filter_togdscript(i) for i in obj) + out = ", ".join(filter_quote(i) for i in obj) return f"[{out}]" if obj is True: return "true" @@ -91,7 +91,7 @@ def filter_togdscript(obj) -> str: if "'" not in obj: return "'" + obj + "'" return '"' + obj.replace('"', '\\"') + '"' - return TypeError(f"filter_togdscript for type {type(obj)} not supported") + return TypeError(f"filter_quote for type {type(obj)} not supported") def filter_tojson(data, separators=(',', ':'), indent=None) -> str: @@ -102,41 +102,20 @@ def filter_tojson(data, separators=(',', ':'), indent=None) -> str: def jinja_env(exercise: pathlib.Path) -> jinja2.Environment: """Return a configured Jinja env with filters added.""" env = jinja2.Environment(loader=jinja2.FileSystemLoader(exercise / ".meta")) - # Shell quoting - env.filters["quote"] = shlex.quote - # JSON formatting, default to compact form (`jq -c`). - env.filters["tojson"] = filter_tojson - # GDScript - env.filters["togdscript"] = filter_togdscript + # GDScript quoting + env.filters["quote"] = filter_quote # String escaping, ANSI-C style. env.filters["repr"] = repr # Return a dict with only specified keys kepts. env.filters["camel_to_snake"] = lambda x: re.sub(r"([a-z])([A-Z])", (lambda m: f"{m.group(1)}_{m.group(2).lower()}"), x) - env.filters["format_list"] = lambda x: shlex.quote( - "[" + ",".join(f'"{i}"' if isinstance(i, str) else str(i) for i in x) + "]" - ) return env -def bool_to_str(obj): - """Convert boolean values to strings.""" - if isinstance(obj, dict): - return {key: bool_to_str(val) for key, val in obj.items()} - if isinstance(obj, list): - return [bool_to_str(val) for val in obj] - if obj is True: - return "true" - if obj is False: - return "false" - return obj - - def generate(specs: pathlib.Path, exercise: pathlib.Path) -> None: """Generate and write test file for a given spec and exercise.""" cases = get_cases(specs, exercise) translation = str.maketrans({i: "_" for i in string.punctuation + " "}) for case in cases: - case["expected"] = bool_to_str(case["expected"]) case["func_name"] = re.sub("_+", "_", case["description"].lower().translate(translation)) if len(case.get("input", {}).values()) == 1: case["given"] = list(case["input"].values())[0] diff --git a/exercises/practice/acronym/.meta/template.j2 b/exercises/practice/acronym/.meta/template.j2 index cdabb806..94cd437c 100644 --- a/exercises/practice/acronym/.meta/template.j2 +++ b/exercises/practice/acronym/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | togdscript }}) - var want = {{ case.expected | togdscript }} + var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | quote }}) + var want = {{ case.expected | quote }} return [got, want] {% endfor %} diff --git a/exercises/practice/allergies/.meta/template.j2 b/exercises/practice/allergies/.meta/template.j2 index 22c4d6a4..8e3004fd 100644 --- a/exercises/practice/allergies/.meta/template.j2 +++ b/exercises/practice/allergies/.meta/template.j2 @@ -9,7 +9,7 @@ func _sorted(array): func test_{{ case.input.item }}_{{ case.func_name }}(allergies): allergies.score = {{ case.input.score }} - return [allergies.allergic_to("{{ case.input.item }}"), {{ case.expected }}] + return [allergies.allergic_to("{{ case.input.item }}"), {{ case.expected | quote }}] {%- else %} func test_list_when_{{ case.func_name }}(allergies): diff --git a/exercises/practice/alphametics/.meta/template.j2 b/exercises/practice/alphametics/.meta/template.j2 index cdabb806..94cd437c 100644 --- a/exercises/practice/alphametics/.meta/template.j2 +++ b/exercises/practice/alphametics/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | togdscript }}) - var want = {{ case.expected | togdscript }} + var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | quote }}) + var want = {{ case.expected | quote }} return [got, want] {% endfor %} diff --git a/exercises/practice/binary-search-tree/.meta/template.j2 b/exercises/practice/binary-search-tree/.meta/template.j2 index 063bba98..fc985a35 100644 --- a/exercises/practice/binary-search-tree/.meta/template.j2 +++ b/exercises/practice/binary-search-tree/.meta/template.j2 @@ -12,13 +12,13 @@ func equal(a, b): {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var bst = solution_script.BinarySearchTree.new({{ case.given | togdscript | replace('"', '') }}) + var bst = solution_script.BinarySearchTree.new({{ case.given | quote | replace('"', '') }}) var got = bst.{{ case.property | camel_to_snake }}() {%- if case.property == "data" %} var want = {{ node(case.expected) }} return [equal(got, want), true] {%- else %} - var want = {{ case.expected | togdscript | replace('"', '') }} + var want = {{ case.expected | quote | replace('"', '') }} return [got, want] {%- endif %} diff --git a/exercises/practice/camicia/.meta/template.j2 b/exercises/practice/camicia/.meta/template.j2 index 8acd492c..8f505e99 100644 --- a/exercises/practice/camicia/.meta/template.j2 +++ b/exercises/practice/camicia/.meta/template.j2 @@ -1,9 +1,9 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var want = {{ case.expected | togdscript }} + var want = {{ case.expected | quote }} var got = solution_script.{{ case.property | camel_to_snake }}( - {{ case.input.playerA | togdscript }}, - {{ case.input.playerB | togdscript }} + {{ case.input.playerA | quote }}, + {{ case.input.playerB | quote }} ) return [got, want] diff --git a/exercises/practice/difference-of-squares/.meta/template.j2 b/exercises/practice/difference-of-squares/.meta/template.j2 index 6441884a..d0aa8e8c 100644 --- a/exercises/practice/difference-of-squares/.meta/template.j2 +++ b/exercises/practice/difference-of-squares/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var inputs = {{ case.given | togdscript }} - var expected = {{ case.expected | togdscript }} + var inputs = {{ case.given | quote }} + var expected = {{ case.expected | quote }} return [solution_script.{{ case.property | camel_to_snake }}(inputs), expected] {% endfor %} diff --git a/exercises/practice/etl/.meta/template.j2 b/exercises/practice/etl/.meta/template.j2 index 4d353cd5..320ba083 100644 --- a/exercises/practice/etl/.meta/template.j2 +++ b/exercises/practice/etl/.meta/template.j2 @@ -1,10 +1,10 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): var inputs = { {%- for key, val in case.given.items() %} - {{ key }}: {{ val | togdscript }},{% endfor %} + {{ key }}: {{ val | quote }},{% endfor %} } var expected = { {%- for key, val in case.expected.items() %} - {{ key | togdscript }}: {{ val | togdscript }},{% endfor %} + {{ key | quote }}: {{ val | quote }},{% endfor %} } return [solution_script.{{ case.property | camel_to_snake }}(inputs), expected] diff --git a/exercises/practice/flatten-array/.meta/template.j2 b/exercises/practice/flatten-array/.meta/template.j2 index ce04991a..a6711bfd 100644 --- a/exercises/practice/flatten-array/.meta/template.j2 +++ b/exercises/practice/flatten-array/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var inputs = {{ case.given | togdscript }} - var expected = {{ case.expected | togdscript }} + var inputs = {{ case.given | quote }} + var expected = {{ case.expected | quote }} return [solution_script.{{ case.property }}(inputs), expected] {% endfor %} diff --git a/exercises/practice/game-of-life/.meta/template.j2 b/exercises/practice/game-of-life/.meta/template.j2 index 911c1b91..cdfa05d1 100644 --- a/exercises/practice/game-of-life/.meta/template.j2 +++ b/exercises/practice/game-of-life/.meta/template.j2 @@ -1,10 +1,10 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): var initial = [{% for row in case.given %} - {{ row | togdscript }},{% endfor %} + {{ row | quote }},{% endfor %} ] var want = [{% for row in case.expected %} - {{ row | togdscript }},{% endfor %} + {{ row | quote }},{% endfor %} ] return [solution_script.{{ case.property | camel_to_snake }}(initial), want] diff --git a/exercises/practice/gigasecond/.meta/template.j2 b/exercises/practice/gigasecond/.meta/template.j2 index f9310259..a05dc080 100644 --- a/exercises/practice/gigasecond/.meta/template.j2 +++ b/exercises/practice/gigasecond/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %}{% if case.property == "add" %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | togdscript }}) - var want = {{ case.expected | togdscript }} + var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | quote }}) + var want = {{ case.expected | quote }} return [got, want] {% endif %}{% endfor %} diff --git a/exercises/practice/hamming/.meta/template.j2 b/exercises/practice/hamming/.meta/template.j2 index 28c96e45..bffcf531 100644 --- a/exercises/practice/hamming/.meta/template.j2 +++ b/exercises/practice/hamming/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var strand1 = {{ case.input.strand1 | togdscript }} - var strand2 = {{ case.input.strand2 | togdscript }} + var strand1 = {{ case.input.strand1 | quote }} + var strand2 = {{ case.input.strand2 | quote }} var got = solution_script.{{ case.property }}(strand1, strand2) {%- if not case.expect_error %} var want = {{ case.expected }} diff --git a/exercises/practice/hello-world/.meta/template.j2 b/exercises/practice/hello-world/.meta/template.j2 index 61345d78..f1d30efc 100644 --- a/exercises/practice/hello-world/.meta/template.j2 +++ b/exercises/practice/hello-world/.meta/template.j2 @@ -1,6 +1,6 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var expected = {{ case.expected | togdscript }} + var expected = {{ case.expected | quote }} var got = solution_script.{{ case.property | camel_to_snake }}() return [got, expected] diff --git a/exercises/practice/isogram/isogram_test.gd b/exercises/practice/isogram/isogram_test.gd index 8fa8946a..101325ae 100644 --- a/exercises/practice/isogram/isogram_test.gd +++ b/exercises/practice/isogram/isogram_test.gd @@ -1,82 +1,82 @@ func test_empty_string(solution_script): var got = solution_script.is_isogram("") - var want = true + var want = True return [got, want] func test_isogram_with_only_lower_case_characters(solution_script): var got = solution_script.is_isogram("isogram") - var want = true + var want = True return [got, want] func test_word_with_one_duplicated_character(solution_script): var got = solution_script.is_isogram("eleven") - var want = false + var want = False return [got, want] func test_word_with_one_duplicated_character_from_the_end_of_the_alphabet(solution_script): var got = solution_script.is_isogram("zzyzx") - var want = false + var want = False return [got, want] func test_longest_reported_english_isogram(solution_script): var got = solution_script.is_isogram("subdermatoglyphic") - var want = true + var want = True return [got, want] func test_word_with_duplicated_character_in_mixed_case(solution_script): var got = solution_script.is_isogram("Alphabet") - var want = false + var want = False return [got, want] func test_word_with_duplicated_character_in_mixed_case_lowercase_first(solution_script): var got = solution_script.is_isogram("alphAbet") - var want = false + var want = False return [got, want] func test_hypothetical_isogrammic_word_with_hyphen(solution_script): var got = solution_script.is_isogram("thumbscrew-japingly") - var want = true + var want = True return [got, want] func test_hypothetical_word_with_duplicated_character_following_hyphen(solution_script): var got = solution_script.is_isogram("thumbscrew-jappingly") - var want = false + var want = False return [got, want] func test_isogram_with_duplicated_hyphen(solution_script): var got = solution_script.is_isogram("six-year-old") - var want = true + var want = True return [got, want] func test_made_up_name_that_is_an_isogram(solution_script): var got = solution_script.is_isogram("Emily Jung Schwartzkopf") - var want = true + var want = True return [got, want] func test_duplicated_character_in_the_middle(solution_script): var got = solution_script.is_isogram("accentor") - var want = false + var want = False return [got, want] func test_same_first_and_last_characters(solution_script): var got = solution_script.is_isogram("angola") - var want = false + var want = False return [got, want] func test_word_with_duplicated_character_and_with_two_hyphens(solution_script): var got = solution_script.is_isogram("up-to-date") - var want = false + var want = False return [got, want] diff --git a/exercises/practice/killer-sudoku-helper/.meta/template.j2 b/exercises/practice/killer-sudoku-helper/.meta/template.j2 index 7e0499ba..99afdb42 100644 --- a/exercises/practice/killer-sudoku-helper/.meta/template.j2 +++ b/exercises/practice/killer-sudoku-helper/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given.sum }}, {{ case.given.size }}, {{ case.given.exclude | togdscript }}) - var want = {{ case.expected | togdscript }} + var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given.sum }}, {{ case.given.size }}, {{ case.given.exclude | quote }}) + var want = {{ case.expected | quote }} got.sort() want.sort() return [got, want] diff --git a/exercises/practice/leap/leap_test.gd b/exercises/practice/leap/leap_test.gd index 5bbdad7e..44fdf50b 100644 --- a/exercises/practice/leap/leap_test.gd +++ b/exercises/practice/leap/leap_test.gd @@ -1,52 +1,52 @@ func test_year_not_divisible_by_4_in_common_year(solution_script): var got = solution_script.leap(2015) - var want = false + var want = False return [got, want] func test_year_divisible_by_2_not_divisible_by_4_in_common_year(solution_script): var got = solution_script.leap(1970) - var want = false + var want = False return [got, want] func test_year_divisible_by_4_not_divisible_by_100_in_leap_year(solution_script): var got = solution_script.leap(1996) - var want = true + var want = True return [got, want] func test_year_divisible_by_4_and_5_is_still_a_leap_year(solution_script): var got = solution_script.leap(1960) - var want = true + var want = True return [got, want] func test_year_divisible_by_100_not_divisible_by_400_in_common_year(solution_script): var got = solution_script.leap(2100) - var want = false + var want = False return [got, want] func test_year_divisible_by_100_but_not_by_3_is_still_not_a_leap_year(solution_script): var got = solution_script.leap(1900) - var want = false + var want = False return [got, want] func test_year_divisible_by_400_is_leap_year(solution_script): var got = solution_script.leap(2000) - var want = true + var want = True return [got, want] func test_year_divisible_by_400_but_not_by_125_is_still_a_leap_year(solution_script): var got = solution_script.leap(2400) - var want = true + var want = True return [got, want] func test_year_divisible_by_200_not_divisible_by_400_in_common_year(solution_script): var got = solution_script.leap(1800) - var want = false + var want = False return [got, want] diff --git a/exercises/practice/luhn/luhn_test.gd b/exercises/practice/luhn/luhn_test.gd index 0e415cb5..d66a978e 100644 --- a/exercises/practice/luhn/luhn_test.gd +++ b/exercises/practice/luhn/luhn_test.gd @@ -1,154 +1,154 @@ func test_single_digit_strings_can_not_be_valid(solution_script): solution_script.card_num = "1" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_a_single_zero_is_invalid(solution_script): solution_script.card_num = "0" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_a_simple_valid_sin_that_remains_valid_if_reversed(solution_script): solution_script.card_num = "059" var got = solution_script.valid() - var want = true + var want = True return [got, want] func test_a_simple_valid_sin_that_becomes_invalid_if_reversed(solution_script): solution_script.card_num = "59" var got = solution_script.valid() - var want = true + var want = True return [got, want] func test_a_valid_canadian_sin(solution_script): solution_script.card_num = "055 444 285" var got = solution_script.valid() - var want = true + var want = True return [got, want] func test_invalid_canadian_sin(solution_script): solution_script.card_num = "055 444 286" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_invalid_credit_card(solution_script): solution_script.card_num = "8273 1232 7352 0569" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_invalid_long_number_with_an_even_remainder(solution_script): solution_script.card_num = "1 2345 6789 1234 5678 9012" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_invalid_long_number_with_a_remainder_divisible_by_5(solution_script): solution_script.card_num = "1 2345 6789 1234 5678 9013" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_valid_number_with_an_even_number_of_digits(solution_script): solution_script.card_num = "095 245 88" var got = solution_script.valid() - var want = true + var want = True return [got, want] func test_valid_number_with_an_odd_number_of_spaces(solution_script): solution_script.card_num = "234 567 891 234" var got = solution_script.valid() - var want = true + var want = True return [got, want] func test_valid_strings_with_a_non_digit_added_at_the_end_become_invalid(solution_script): solution_script.card_num = "059a" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_valid_strings_with_punctuation_included_become_invalid(solution_script): solution_script.card_num = "055-444-285" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_valid_strings_with_symbols_included_become_invalid(solution_script): solution_script.card_num = "055# 444$ 285" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_single_zero_with_space_is_invalid(solution_script): solution_script.card_num = " 0" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_more_than_a_single_zero_is_valid(solution_script): solution_script.card_num = "0000 0" var got = solution_script.valid() - var want = true + var want = True return [got, want] func test_input_digit_9_is_correctly_converted_to_output_digit_9(solution_script): solution_script.card_num = "091" var got = solution_script.valid() - var want = true + var want = True return [got, want] func test_very_long_input_is_valid(solution_script): solution_script.card_num = "9999999999 9999999999 9999999999 9999999999" var got = solution_script.valid() - var want = true + var want = True return [got, want] func test_valid_luhn_with_an_odd_number_of_digits_and_non_zero_first_digit(solution_script): solution_script.card_num = "109" var got = solution_script.valid() - var want = true + var want = True return [got, want] func test_using_ascii_value_for_non_doubled_non_digit_isn_t_allowed(solution_script): solution_script.card_num = "055b 444 285" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_using_ascii_value_for_doubled_non_digit_isn_t_allowed(solution_script): solution_script.card_num = ":9" var got = solution_script.valid() - var want = false + var want = False return [got, want] func test_non_numeric_non_space_char_in_the_middle_with_a_sum_that_s_divisible_by_10_isn_t_allowed(solution_script): solution_script.card_num = "59%59" var got = solution_script.valid() - var want = false + var want = False return [got, want] diff --git a/exercises/practice/matching-brackets/.meta/template.j2 b/exercises/practice/matching-brackets/.meta/template.j2 index 2de124fa..d0aa8e8c 100644 --- a/exercises/practice/matching-brackets/.meta/template.j2 +++ b/exercises/practice/matching-brackets/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var inputs = {{ case.given | togdscript }} - var expected = {{ case.expected }} + var inputs = {{ case.given | quote }} + var expected = {{ case.expected | quote }} return [solution_script.{{ case.property | camel_to_snake }}(inputs), expected] {% endfor %} diff --git a/exercises/practice/pangram/.meta/template.j2 b/exercises/practice/pangram/.meta/template.j2 index 82d992c2..a63723ac 100644 --- a/exercises/practice/pangram/.meta/template.j2 +++ b/exercises/practice/pangram/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.is_pangram({{ case.given | togdscript }}) - var want = {{ case.expected }} + var got = solution_script.is_pangram({{ case.given | quote }}) + var want = {{ case.expected | quote }} return [got, want] {% endfor %} diff --git a/exercises/practice/perfect-numbers/.meta/template.j2 b/exercises/practice/perfect-numbers/.meta/template.j2 index 7bbac1a1..22be7aa2 100644 --- a/exercises/practice/perfect-numbers/.meta/template.j2 +++ b/exercises/practice/perfect-numbers/.meta/template.j2 @@ -1,8 +1,8 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property }}({{ case.given | togdscript }}) + var got = solution_script.{{ case.property }}({{ case.given | quote }}) {%- if not case.expect_error %} - var want = {{ case.expected | togdscript }} + var want = {{ case.expected | quote }} {%- else %} var want = null {%- endif %} diff --git a/exercises/practice/phone-number/.meta/template.j2 b/exercises/practice/phone-number/.meta/template.j2 index 7bbac1a1..22be7aa2 100644 --- a/exercises/practice/phone-number/.meta/template.j2 +++ b/exercises/practice/phone-number/.meta/template.j2 @@ -1,8 +1,8 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property }}({{ case.given | togdscript }}) + var got = solution_script.{{ case.property }}({{ case.given | quote }}) {%- if not case.expect_error %} - var want = {{ case.expected | togdscript }} + var want = {{ case.expected | quote }} {%- else %} var want = null {%- endif %} diff --git a/exercises/practice/prime-factors/.meta/template.j2 b/exercises/practice/prime-factors/.meta/template.j2 index 8ff6b47b..1a5a46de 100644 --- a/exercises/practice/prime-factors/.meta/template.j2 +++ b/exercises/practice/prime-factors/.meta/template.j2 @@ -1,6 +1,6 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var want = {{ case.expected | togdscript }} + var want = {{ case.expected | quote }} var got = solution_script.{{ case.property }}({{ case.given }}) return [got, want] diff --git a/exercises/practice/prism/.meta/template.j2 b/exercises/practice/prism/.meta/template.j2 index 7af6e28d..c3dc97bc 100644 --- a/exercises/practice/prism/.meta/template.j2 +++ b/exercises/practice/prism/.meta/template.j2 @@ -6,7 +6,7 @@ func test_{{ case.func_name }}(solution_script): [{{ prism.id }}, Vector2({{ prism.x }}, {{ prism.y }}), {{ prism.angle }}],{% endfor %} ] - var want = {{ case.expected.sequence | togdscript }} + var want = {{ case.expected.sequence | quote }} var got = solution_script.{{ case.property | camel_to_snake }}(position, angle, prisms) return [got, want] diff --git a/exercises/practice/protein-translation/.meta/template.j2 b/exercises/practice/protein-translation/.meta/template.j2 index 7755992d..2c7ad247 100644 --- a/exercises/practice/protein-translation/.meta/template.j2 +++ b/exercises/practice/protein-translation/.meta/template.j2 @@ -1,8 +1,8 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | togdscript }}) + var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | quote }}) {%- if not case.expect_error %} - var want = {{ case.expected | togdscript }} + var want = {{ case.expected | quote }} {%- else %} var want = null {%- endif %} diff --git a/exercises/practice/pythagorean-triplet/.meta/template.j2 b/exercises/practice/pythagorean-triplet/.meta/template.j2 index cdabb806..94cd437c 100644 --- a/exercises/practice/pythagorean-triplet/.meta/template.j2 +++ b/exercises/practice/pythagorean-triplet/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | togdscript }}) - var want = {{ case.expected | togdscript }} + var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | quote }}) + var want = {{ case.expected | quote }} return [got, want] {% endfor %} diff --git a/exercises/practice/resistor-color-duo/.meta/template.j2 b/exercises/practice/resistor-color-duo/.meta/template.j2 index a7e3436b..0655cdf9 100644 --- a/exercises/practice/resistor-color-duo/.meta/template.j2 +++ b/exercises/practice/resistor-color-duo/.meta/template.j2 @@ -1,6 +1,6 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var colors = {{ case.input.colors | togdscript }} + var colors = {{ case.input.colors | quote }} var expected = {{ case.expected }} return [solution_script.{{ case.property | camel_to_snake }}(colors), expected] diff --git a/exercises/practice/resistor-color-tolerance/.meta/template.j2 b/exercises/practice/resistor-color-tolerance/.meta/template.j2 index 8254ea9a..c477756a 100644 --- a/exercises/practice/resistor-color-tolerance/.meta/template.j2 +++ b/exercises/practice/resistor-color-tolerance/.meta/template.j2 @@ -1,6 +1,6 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var colors = {{ case.input.colors | togdscript }} + var colors = {{ case.input.colors | quote }} {%- if case.expected.tolerance %} var expected = "{{ case.expected.value }} {{ case.expected.unit }} {{ case.expected.tolerance }}" {%- else %} diff --git a/exercises/practice/resistor-color-trio/.meta/template.j2 b/exercises/practice/resistor-color-trio/.meta/template.j2 index e62abd7f..48087b04 100644 --- a/exercises/practice/resistor-color-trio/.meta/template.j2 +++ b/exercises/practice/resistor-color-trio/.meta/template.j2 @@ -1,6 +1,6 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var colors = {{ case.input.colors | togdscript }} + var colors = {{ case.input.colors | quote }} var expected = "{{ case.expected.value }} {{ case.expected.unit }}" return [solution_script.{{ case.property | camel_to_snake }}(colors), expected] diff --git a/exercises/practice/resistor-color/.meta/template.j2 b/exercises/practice/resistor-color/.meta/template.j2 index 0cf433f4..e350d1f6 100644 --- a/exercises/practice/resistor-color/.meta/template.j2 +++ b/exercises/practice/resistor-color/.meta/template.j2 @@ -1,10 +1,10 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): {%- if case.property == "colorCode" %} - return [solution_script.{{ case.property | camel_to_snake }}({{ case.input.color | togdscript }}), {{ case.expected }}] + return [solution_script.{{ case.property | camel_to_snake }}({{ case.input.color | quote }}), {{ case.expected }}] {%- elif case.property == "colors" %} - var colors = {{ case.expected | togdscript }} + var colors = {{ case.expected | quote }} return [solution_script.{{ case.property }}(), colors] {%- endif %} {% endfor %} diff --git a/exercises/practice/run-length-encoding/.meta/template.j2 b/exercises/practice/run-length-encoding/.meta/template.j2 index b2b39997..e0dbf47f 100644 --- a/exercises/practice/run-length-encoding/.meta/template.j2 +++ b/exercises/practice/run-length-encoding/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.property }}_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property}}({{ case.given | togdscript }}) - var want = {{ case.expected | togdscript }} + var got = solution_script.{{ case.property}}({{ case.given | quote }}) + var want = {{ case.expected | quote }} return [got, want] {% endfor %} diff --git a/exercises/practice/saddle-points/.meta/template.j2 b/exercises/practice/saddle-points/.meta/template.j2 index a276e579..95b7eddc 100644 --- a/exercises/practice/saddle-points/.meta/template.j2 +++ b/exercises/practice/saddle-points/.meta/template.j2 @@ -1,6 +1,6 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | togdscript }}) + var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | quote }}) var want = [{% for pair in case.expected %}[{{ pair.row }}, {{ pair.column }}]{% if not loop.last %}, {% endif %}{% endfor %}] got.sort() want.sort() diff --git a/exercises/practice/save-the-cow/.meta/template.j2 b/exercises/practice/save-the-cow/.meta/template.j2 index d6e28a87..40a253ef 100644 --- a/exercises/practice/save-the-cow/.meta/template.j2 +++ b/exercises/practice/save-the-cow/.meta/template.j2 @@ -1,23 +1,23 @@ {% for case in cases %} {%- if not case.expect_error %}{% for prop, val in case.expected.items() %} func test_{{ case.func_name }}__{{ prop | camel_to_snake }}(solution_script): - var game = solution_script.SaveTheCow.new({{ case.input.word | togdscript }}) - for letter in {{ case.input.guesses | togdscript }}: + var game = solution_script.SaveTheCow.new({{ case.input.word | quote }}) + for letter in {{ case.input.guesses | quote }}: game.guess(letter) if game.error != null: return [game.error, null] - return [game.{{ prop | camel_to_snake }}, {{ val | togdscript }}] + return [game.{{ prop | camel_to_snake }}, {{ val | quote }}] {% endfor %} {%- else %} func test_{{ case.func_name }}__error(solution_script): - var game = solution_script.SaveTheCow.new({{ case.input.word | togdscript }}) - for letter in {{ case.input.guesses[:-1] | togdscript }}: + var game = solution_script.SaveTheCow.new({{ case.input.word | quote }}) + for letter in {{ case.input.guesses[:-1] | quote }}: game.guess(letter) if game.error != null: return [game.error, null] - game.guess({{ case.input.guesses[-1] | togdscript }}) - return [game.error, {{ case.expect_error_msg | togdscript }}] + game.guess({{ case.input.guesses[-1] | quote }}) + return [game.error, {{ case.expect_error_msg | quote }}] {% endif %} {%- endfor %} diff --git a/exercises/practice/scrabble-score/.meta/template.j2 b/exercises/practice/scrabble-score/.meta/template.j2 index ae209dc4..27e6343c 100644 --- a/exercises/practice/scrabble-score/.meta/template.j2 +++ b/exercises/practice/scrabble-score/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property }}({{ case.given | togdscript }}) - var want = {{ case.expected | togdscript }} + var got = solution_script.{{ case.property }}({{ case.given | quote }}) + var want = {{ case.expected | quote }} return [got, want] {% endfor %} diff --git a/exercises/practice/secret-handshake/.meta/template.j2 b/exercises/practice/secret-handshake/.meta/template.j2 index ed3db07b..9244aea4 100644 --- a/exercises/practice/secret-handshake/.meta/template.j2 +++ b/exercises/practice/secret-handshake/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): var got = solution_script.{{ case.property }}({{ case.given }}) - var want = {{ case.expected | togdscript }} + var want = {{ case.expected | quote }} return [got, want] {% endfor %} diff --git a/exercises/practice/series/.meta/template.j2 b/exercises/practice/series/.meta/template.j2 index 1581f920..4dde4413 100644 --- a/exercises/practice/series/.meta/template.j2 +++ b/exercises/practice/series/.meta/template.j2 @@ -5,7 +5,7 @@ func test_{{ case.property }}_{{ case.func_name }}(solution_script): {%- else %} var expected = null {%- endif %} - var got = solution_script.{{ case.property }}({{ case.input.series | togdscript }}, {{ case.input.sliceLength }}) + var got = solution_script.{{ case.property }}({{ case.input.series | quote }}, {{ case.input.sliceLength }}) return [got, expected] {% endfor %} diff --git a/exercises/practice/simple-cipher/.meta/template.j2 b/exercises/practice/simple-cipher/.meta/template.j2 index f9c8dba7..80b3983a 100644 --- a/exercises/practice/simple-cipher/.meta/template.j2 +++ b/exercises/practice/simple-cipher/.meta/template.j2 @@ -24,8 +24,8 @@ func test_key_is_made_only_of_lowercase_letters(solution_script): {% for case in cases %}{% if case.descriptions[0] == "Substitution cipher" and case.input.keys() | length == 2 %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.Cipher.new({{ case.input.key | togdscript }}).{{ case.property | camel_to_snake }}({{ (case.input.plaintext or case.input.ciphertext) | togdscript }}) - var want = {{ case.expected | togdscript }} + var got = solution_script.Cipher.new({{ case.input.key | quote }}).{{ case.property | camel_to_snake }}({{ (case.input.plaintext or case.input.ciphertext) | quote }}) + var want = {{ case.expected | quote }} return [got, want] {% endif %}{% endfor %} diff --git a/exercises/practice/simple-linked-list/.meta/template.j2 b/exercises/practice/simple-linked-list/.meta/template.j2 index 9b85790a..1bb49ade 100644 --- a/exercises/practice/simple-linked-list/.meta/template.j2 +++ b/exercises/practice/simple-linked-list/.meta/template.j2 @@ -1,6 +1,6 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var linked_list = solution_script.LinkedList.new({{ case.input.initialValues | togdscript }}) + var linked_list = solution_script.LinkedList.new({{ case.input.initialValues | quote }}) var res = 0 {% for op in case.input.operations %} {%- if op.operation == "count" %} @@ -27,8 +27,8 @@ func test_{{ case.func_name }}(solution_script): return [false, "peek() = %d; expected %d" % [res, {{ op.expected }}]] {%- elif op.operation == "toList" %} res = linked_list.to_list() - if res != {{ op.expected | togdscript }}: - return [false, "to_list() = %s; expected %s" % [res, {{ op.expected | togdscript }}]] + if res != {{ op.expected | quote }}: + return [false, "to_list() = %s; expected %s" % [res, {{ op.expected | quote }}]] {%- else %} linked_list.{{ op.operation }}() {%- endif %} diff --git a/exercises/practice/space-age/.meta/template.j2 b/exercises/practice/space-age/.meta/template.j2 index bf9c3876..d1512bfe 100644 --- a/exercises/practice/space-age/.meta/template.j2 +++ b/exercises/practice/space-age/.meta/template.j2 @@ -4,7 +4,7 @@ func _round(value): {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.on_planet({{ case.input.planet | togdscript }}, {{ case.input.seconds }}) + var got = solution_script.on_planet({{ case.input.planet | quote }}, {{ case.input.seconds }}) {%- if not case.expect_error %} var want = {{ case.expected }} return [_round(got), _round(want)] diff --git a/exercises/practice/square-root/.meta/template.j2 b/exercises/practice/square-root/.meta/template.j2 index cdabb806..94cd437c 100644 --- a/exercises/practice/square-root/.meta/template.j2 +++ b/exercises/practice/square-root/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | togdscript }}) - var want = {{ case.expected | togdscript }} + var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | quote }}) + var want = {{ case.expected | quote }} return [got, want] {% endfor %} diff --git a/exercises/practice/sublist/.meta/template.j2 b/exercises/practice/sublist/.meta/template.j2 index d757a407..85187802 100644 --- a/exercises/practice/sublist/.meta/template.j2 +++ b/exercises/practice/sublist/.meta/template.j2 @@ -1,8 +1,8 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var want = {{ case.expected | togdscript }} - var list_one = {{ case.input.listOne | togdscript }} - var list_two = {{ case.input.listTwo | togdscript }} + var want = {{ case.expected | quote }} + var list_one = {{ case.input.listOne | quote }} + var list_two = {{ case.input.listTwo | quote }} var got = solution_script.{{ case.property }}(list_one, list_two) return [got, want] diff --git a/exercises/practice/sum-of-multiples/.meta/template.j2 b/exercises/practice/sum-of-multiples/.meta/template.j2 index fa12674b..b54636a2 100644 --- a/exercises/practice/sum-of-multiples/.meta/template.j2 +++ b/exercises/practice/sum-of-multiples/.meta/template.j2 @@ -1,6 +1,6 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property }}({{ case.input.factors | togdscript }}, {{ case.input.limit }}) + var got = solution_script.{{ case.property }}({{ case.input.factors | quote }}, {{ case.input.limit }}) var want = {{ case.expected }} return [got, want] diff --git a/exercises/practice/swift-scheduling/.meta/template.j2 b/exercises/practice/swift-scheduling/.meta/template.j2 index 8e7336c3..6091e0d9 100644 --- a/exercises/practice/swift-scheduling/.meta/template.j2 +++ b/exercises/practice/swift-scheduling/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property | camel_to_snake }}({{ case.input.meetingStart | togdscript }}, {{ case.input.description | togdscript }}) - var want = {{ case.expected | togdscript }} + var got = solution_script.{{ case.property | camel_to_snake }}({{ case.input.meetingStart | quote }}, {{ case.input.description | quote }}) + var want = {{ case.expected | quote }} return [got, want] {% endfor %} diff --git a/exercises/practice/triangle/.meta/template.j2 b/exercises/practice/triangle/.meta/template.j2 index ae21b00f..a7bbf3cf 100644 --- a/exercises/practice/triangle/.meta/template.j2 +++ b/exercises/practice/triangle/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.property }}_{{ case.func_name }}(solution_script): - var args = {{ case.given | togdscript }} - var expected = {{ case.expected }} + var args = {{ case.given | quote }} + var expected = {{ case.expected | quote }} var got = solution_script.is_{{ case.property }}(args) return [got, expected] diff --git a/exercises/practice/two-bucket/.meta/template.j2 b/exercises/practice/two-bucket/.meta/template.j2 index e14ab8ec..05de1a70 100644 --- a/exercises/practice/two-bucket/.meta/template.j2 +++ b/exercises/practice/two-bucket/.meta/template.j2 @@ -3,13 +3,13 @@ func test_{{ case.func_name }}(solution_script): {%- if not case.expect_error %} var want = { "moves": {{ case.expected.moves }}, - "goal_bucket": {{ case.expected.goalBucket | togdscript }}, + "goal_bucket": {{ case.expected.goalBucket | quote }}, "other_bucket": {{ case.expected.otherBucket }}, } {%- else %} var want = null {%- endif %} - var got = solution_script.{{ case.property }}({{ case.input.bucketOne }}, {{ case.input.bucketTwo }}, {{ case.input.goal }}, {{ case.input.startBucket | togdscript }}) + var got = solution_script.{{ case.property }}({{ case.input.bucketOne }}, {{ case.input.bucketTwo }}, {{ case.input.goal }}, {{ case.input.startBucket | quote }}) return [got, want] {% endfor %} diff --git a/exercises/practice/variable-length-quantity/.meta/template.j2 b/exercises/practice/variable-length-quantity/.meta/template.j2 index 96a66e5c..c2f91e27 100644 --- a/exercises/practice/variable-length-quantity/.meta/template.j2 +++ b/exercises/practice/variable-length-quantity/.meta/template.j2 @@ -5,7 +5,7 @@ func test_{{ case.func_name }}(solution_script): {% else %} var want = null {% endif %} - var input = {{ case.given | togdscript }} + var input = {{ case.given | quote }} var got = solution_script.{{ case.property | camel_to_snake }}(input) return [got, want] diff --git a/exercises/practice/word-count/.meta/template.j2 b/exercises/practice/word-count/.meta/template.j2 index cdabb806..94cd437c 100644 --- a/exercises/practice/word-count/.meta/template.j2 +++ b/exercises/practice/word-count/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} func test_{{ case.func_name }}(solution_script): - var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | togdscript }}) - var want = {{ case.expected | togdscript }} + var got = solution_script.{{ case.property | camel_to_snake }}({{ case.given | quote }}) + var want = {{ case.expected | quote }} return [got, want] {% endfor %}