From 80318383088292aa50405ba6d0bb36208e5983ca Mon Sep 17 00:00:00 2001 From: Glenn Jackman Date: Thu, 15 Oct 2026 17:00:42 -0400 Subject: [PATCH 1/7] Add a template to resistor-color --- .../practice/resistor-color/.meta/template.j2 | 22 +++++++++++++++++++ .../resistor-color/resistor_color_test.gd | 9 +++----- 2 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 exercises/practice/resistor-color/.meta/template.j2 diff --git a/exercises/practice/resistor-color/.meta/template.j2 b/exercises/practice/resistor-color/.meta/template.j2 new file mode 100644 index 0000000..51baafc --- /dev/null +++ b/exercises/practice/resistor-color/.meta/template.j2 @@ -0,0 +1,22 @@ +{% 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"] }}] + +{%- endif %} +{%- if case["property"] == "colors" %} + var colors = [ + "black", + "brown", + "red", + "orange", + "yellow", + "green", + "blue", + "violet", + "grey", + "white" + ] + return [solution_script.{{ case["property"] }}(), colors] +{%- endif %} +{% endfor %} diff --git a/exercises/practice/resistor-color/resistor_color_test.gd b/exercises/practice/resistor-color/resistor_color_test.gd index 653b6b4..a26bdf3 100644 --- a/exercises/practice/resistor-color/resistor_color_test.gd +++ b/exercises/practice/resistor-color/resistor_color_test.gd @@ -1,15 +1,12 @@ -func test_color_codes_black(solution_script): +func test_black(solution_script): return [solution_script.color_code("black"), 0] - -func test_color_codes_white(solution_script): +func test_white(solution_script): return [solution_script.color_code("white"), 9] - -func test_color_codes_orange(solution_script): +func test_orange(solution_script): return [solution_script.color_code("orange"), 3] - func test_colors(solution_script): var colors = [ "black", From 66514271ff2713f79c4f4d4d64a1b3a6a50bfd19 Mon Sep 17 00:00:00 2001 From: Glenn Jackman Date: Thu, 15 Oct 2026 17:01:01 -0400 Subject: [PATCH 2/7] Add a template to resistor-color-duo --- .../practice/resistor-color-duo/.meta/example.gd | 2 +- .../practice/resistor-color-duo/.meta/template.j2 | 7 +++++++ .../resistor-color-duo/resistor_color_duo.gd | 2 +- .../resistor-color-duo/resistor_color_duo_test.gd | 14 +++++++------- 4 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 exercises/practice/resistor-color-duo/.meta/template.j2 diff --git a/exercises/practice/resistor-color-duo/.meta/example.gd b/exercises/practice/resistor-color-duo/.meta/example.gd index 952da12..0352296 100644 --- a/exercises/practice/resistor-color-duo/.meta/example.gd +++ b/exercises/practice/resistor-color-duo/.meta/example.gd @@ -12,7 +12,7 @@ const COLORS = [ ] -func color_code(colors): +func value(colors): var tens = colors[0] var ones = colors[1] return COLORS.find(tens) * 10 + COLORS.find(ones) diff --git a/exercises/practice/resistor-color-duo/.meta/template.j2 b/exercises/practice/resistor-color-duo/.meta/template.j2 new file mode 100644 index 0000000..d3734f7 --- /dev/null +++ b/exercises/practice/resistor-color-duo/.meta/template.j2 @@ -0,0 +1,7 @@ +{% for case in cases %} +func test_{{ case["func_name"] }}(solution_script): + var colors = {{ case["input"]["colors"] | togdscript }} + var expected = {{ case["expected"] }} + return [solution_script.{{ case["property"] | camel_to_snake }}(colors), expected] + +{% endfor %} diff --git a/exercises/practice/resistor-color-duo/resistor_color_duo.gd b/exercises/practice/resistor-color-duo/resistor_color_duo.gd index 087a9bb..52ad60d 100644 --- a/exercises/practice/resistor-color-duo/resistor_color_duo.gd +++ b/exercises/practice/resistor-color-duo/resistor_color_duo.gd @@ -1,2 +1,2 @@ -func color_code(colors): +func value(colors): pass diff --git a/exercises/practice/resistor-color-duo/resistor_color_duo_test.gd b/exercises/practice/resistor-color-duo/resistor_color_duo_test.gd index f1f7190..747d6a2 100644 --- a/exercises/practice/resistor-color-duo/resistor_color_duo_test.gd +++ b/exercises/practice/resistor-color-duo/resistor_color_duo_test.gd @@ -1,40 +1,40 @@ func test_brown_and_black(solution_script): var colors = ["brown", "black"] var expected = 10 - return [solution_script.color_code(colors), expected] + return [solution_script.value(colors), expected] func test_blue_and_grey(solution_script): var colors = ["blue", "grey"] var expected = 68 - return [solution_script.color_code(colors), expected] + return [solution_script.value(colors), expected] func test_yellow_and_violet(solution_script): var colors = ["yellow", "violet"] var expected = 47 - return [solution_script.color_code(colors), expected] + return [solution_script.value(colors), expected] func test_white_and_red(solution_script): var colors = ["white", "red"] var expected = 92 - return [solution_script.color_code(colors), expected] + return [solution_script.value(colors), expected] func test_orange_and_orange(solution_script): var colors = ["orange", "orange"] var expected = 33 - return [solution_script.color_code(colors), expected] + return [solution_script.value(colors), expected] func test_ignore_additional_colors(solution_script): var colors = ["green", "brown", "orange"] var expected = 51 - return [solution_script.color_code(colors), expected] + return [solution_script.value(colors), expected] func test_black_and_brown_one_digit(solution_script): var colors = ["black", "brown"] var expected = 1 - return [solution_script.color_code(colors), expected] + return [solution_script.value(colors), expected] From 841a22ab23a720c0980c12d51f62bbc7b70163b7 Mon Sep 17 00:00:00 2001 From: Glenn Jackman Date: Thu, 15 Oct 2026 17:01:10 -0400 Subject: [PATCH 3/7] Add a template to resistor-color-trio --- .../resistor-color-trio/.meta/example.gd | 4 +- .../resistor-color-trio/.meta/template.j2 | 7 ++++ .../resistor_color_trio.gd | 4 +- .../resistor_color_trio_test.gd | 41 +++++++++---------- 4 files changed, 31 insertions(+), 25 deletions(-) create mode 100644 exercises/practice/resistor-color-trio/.meta/template.j2 diff --git a/exercises/practice/resistor-color-trio/.meta/example.gd b/exercises/practice/resistor-color-trio/.meta/example.gd index aee6e2a..42ea3f6 100644 --- a/exercises/practice/resistor-color-trio/.meta/example.gd +++ b/exercises/practice/resistor-color-trio/.meta/example.gd @@ -1,4 +1,4 @@ -func color_code(colors): +func label(colors): var colors_code = ["black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"] var units = { @@ -18,4 +18,4 @@ func color_code(colors): return format_number(total) + " ohms" func format_number(n): - return str(int(n)) if n == int(n) else str(n) \ No newline at end of file + return str(int(n)) if n == int(n) else str(n) diff --git a/exercises/practice/resistor-color-trio/.meta/template.j2 b/exercises/practice/resistor-color-trio/.meta/template.j2 new file mode 100644 index 0000000..1c04e42 --- /dev/null +++ b/exercises/practice/resistor-color-trio/.meta/template.j2 @@ -0,0 +1,7 @@ +{% for case in cases %} +func test_{{ case["func_name"] }}(solution_script): + var colors = {{ case["input"]["colors"] | togdscript }} + var expected = "{{ case["expected"]["value"] }} {{ case["expected"]["unit"] }}" + return [solution_script.{{ case["property"] | camel_to_snake }}(colors), expected] + +{% endfor %} diff --git a/exercises/practice/resistor-color-trio/resistor_color_trio.gd b/exercises/practice/resistor-color-trio/resistor_color_trio.gd index 0956b0e..091742e 100644 --- a/exercises/practice/resistor-color-trio/resistor_color_trio.gd +++ b/exercises/practice/resistor-color-trio/resistor_color_trio.gd @@ -1,2 +1,2 @@ -func color_code(colors): - pass \ No newline at end of file +func label(colors): + pass diff --git a/exercises/practice/resistor-color-trio/resistor_color_trio_test.gd b/exercises/practice/resistor-color-trio/resistor_color_trio_test.gd index 4e0c180..93dae49 100644 --- a/exercises/practice/resistor-color-trio/resistor_color_trio_test.gd +++ b/exercises/practice/resistor-color-trio/resistor_color_trio_test.gd @@ -1,59 +1,58 @@ func test_orange_and_orange_and_black(solution_script): - var colors = ["orange", "orange", "black"] + var colors = ["orange", "orange", "black"] var expected = "33 ohms" - return [solution_script.color_code(colors), expected] + return [solution_script.label(colors), expected] func test_blue_and_grey_and_brown(solution_script): - var colors = ["blue", "grey", "brown"] + var colors = ["blue", "grey", "brown"] var expected = "680 ohms" - return [solution_script.color_code(colors), expected] + return [solution_script.label(colors), expected] func test_red_and_black_and_red(solution_script): - var colors = ["red", "black", "red"] + var colors = ["red", "black", "red"] var expected = "2 kiloohms" - return [solution_script.color_code(colors), expected] + return [solution_script.label(colors), expected] func test_green_and_brown_and_orange(solution_script): - var colors = ["green", "brown", "orange"] + var colors = ["green", "brown", "orange"] var expected = "51 kiloohms" - return [solution_script.color_code(colors), expected] + return [solution_script.label(colors), expected] func test_yellow_and_violet_and_yellow(solution_script): - var colors = ["yellow", "violet", "yellow"] + var colors = ["yellow", "violet", "yellow"] var expected = "470 kiloohms" - return [solution_script.color_code(colors), expected] + return [solution_script.label(colors), expected] func test_blue_and_violet_and_blue(solution_script): - var colors = ["blue", "violet", "blue"] + var colors = ["blue", "violet", "blue"] var expected = "67 megaohms" - return [solution_script.color_code(colors), expected] + return [solution_script.label(colors), expected] func test_minimum_possible_value(solution_script): - var colors = ["black", "black", "black"] + var colors = ["black", "black", "black"] var expected = "0 ohms" - return [solution_script.color_code(colors), expected] + return [solution_script.label(colors), expected] func test_maximum_possible_value(solution_script): - var colors = ["white", "white", "white"] + var colors = ["white", "white", "white"] var expected = "99 gigaohms" - return [solution_script.color_code(colors), expected] + return [solution_script.label(colors), expected] func test_first_two_colors_make_an_invalid_octal_number(solution_script): - var colors = ["black", "grey", "black"] + var colors = ["black", "grey", "black"] var expected = "8 ohms" - return [solution_script.color_code(colors), expected] + return [solution_script.label(colors), expected] func test_ignore_extra_colors(solution_script): - var colors = ["blue", "green", "yellow", "orange"] + var colors = ["blue", "green", "yellow", "orange"] var expected = "650 kiloohms" - return [solution_script.color_code(colors), expected] - + return [solution_script.label(colors), expected] From 3f5e93a2f020e4b6fe95f5543f72f965ad989f77 Mon Sep 17 00:00:00 2001 From: Glenn Jackman Date: Thu, 15 Oct 2026 17:02:02 -0400 Subject: [PATCH 4/7] Rename color_code to resistor_label in resistor-color-expert, to align with python implementation --- .../resistor-color-expert/.meta/example.gd | 4 +- .../resistor_color_expert.gd | 4 +- .../resistor_color_expert_test.gd | 40 +++++++++---------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/exercises/practice/resistor-color-expert/.meta/example.gd b/exercises/practice/resistor-color-expert/.meta/example.gd index c588911..184841b 100644 --- a/exercises/practice/resistor-color-expert/.meta/example.gd +++ b/exercises/practice/resistor-color-expert/.meta/example.gd @@ -1,4 +1,4 @@ -func color_code(colors): +func resistor_label(colors): var size = colors.size() if size == 1: return "0 ohms" @@ -34,4 +34,4 @@ func color_code(colors): return "%s ohms ±%s%%" % [format_number(total), tolerance] func format_number(n): - return str(int(n)) if n == int(n) else str(n) \ No newline at end of file + return str(int(n)) if n == int(n) else str(n) diff --git a/exercises/practice/resistor-color-expert/resistor_color_expert.gd b/exercises/practice/resistor-color-expert/resistor_color_expert.gd index 0956b0e..c063c7a 100644 --- a/exercises/practice/resistor-color-expert/resistor_color_expert.gd +++ b/exercises/practice/resistor-color-expert/resistor_color_expert.gd @@ -1,2 +1,2 @@ -func color_code(colors): - pass \ No newline at end of file +func resistor_label(colors): + pass diff --git a/exercises/practice/resistor-color-expert/resistor_color_expert_test.gd b/exercises/practice/resistor-color-expert/resistor_color_expert_test.gd index 0c4d2ab..928e15e 100644 --- a/exercises/practice/resistor-color-expert/resistor_color_expert_test.gd +++ b/exercises/practice/resistor-color-expert/resistor_color_expert_test.gd @@ -1,59 +1,59 @@ func test_orange_orange_black_and_red(solution_script): - var colors = ["orange", "orange", "black", "red"] + var colors = ["orange", "orange", "black", "red"] var expected = "33 ohms ±2%" - return [solution_script.color_code(colors), expected] + return [solution_script.resistor_label(colors), expected] func test_blue_grey_brown_and_violet(solution_script): - var colors = ["blue", "grey", "brown", "violet"] + var colors = ["blue", "grey", "brown", "violet"] var expected = "680 ohms ±0.1%" - return [solution_script.color_code(colors), expected] + return [solution_script.resistor_label(colors), expected] func test_red_black_red_and_green(solution_script): - var colors = ["red", "black", "red", "green"] + var colors = ["red", "black", "red", "green"] var expected = "2 kiloohms ±0.5%" - return [solution_script.color_code(colors), expected] + return [solution_script.resistor_label(colors), expected] func test_green_brown_orange_and_grey(solution_script): - var colors = ["green", "brown", "orange", "grey"] + var colors = ["green", "brown", "orange", "grey"] var expected = "51 kiloohms ±0.05%" - return [solution_script.color_code(colors), expected] + return [solution_script.resistor_label(colors), expected] func test_one_black_band(solution_script): - var colors = ["black"] + var colors = ["black"] var expected = "0 ohms" - return [solution_script.color_code(colors), expected] + return [solution_script.resistor_label(colors), expected] func test_orange_orange_yellow_black_and_brown(solution_script): - var colors = ["orange", "orange", "yellow", "black", "brown"] + var colors = ["orange", "orange", "yellow", "black", "brown"] var expected = "334 ohms ±1%" - return [solution_script.color_code(colors), expected] + return [solution_script.resistor_label(colors), expected] func test_red_green_yellow_yellow_and_brown(solution_script): - var colors = ["red", "green", "yellow", "yellow", "brown"] + var colors = ["red", "green", "yellow", "yellow", "brown"] var expected = "2.54 megaohms ±1%" - return [solution_script.color_code(colors), expected] + return [solution_script.resistor_label(colors), expected] func test_blue_grey_white_red_and_brown(solution_script): - var colors = ["blue", "grey", "white", "brown", "brown"] + var colors = ["blue", "grey", "white", "brown", "brown"] var expected = "6.89 kiloohms ±1%" - return [solution_script.color_code(colors), expected] + return [solution_script.resistor_label(colors), expected] func test_violet_orange_red_and_grey(solution_script): - var colors = ["violet", "orange", "red", "grey"] + var colors = ["violet", "orange", "red", "grey"] var expected = "7.3 kiloohms ±0.05%" - return [solution_script.color_code(colors), expected] + return [solution_script.resistor_label(colors), expected] func test_brown_red_orange_green_and_blue(solution_script): - var colors = ["brown", "red", "orange", "green", "blue"] + var colors = ["brown", "red", "orange", "green", "blue"] var expected = "12.3 megaohms ±0.25%" - return [solution_script.color_code(colors), expected] + return [solution_script.resistor_label(colors), expected] From 60b5ba999c55273d6b046c3f9381afb41b3006e8 Mon Sep 17 00:00:00 2001 From: Glenn Jackman Date: Thu, 15 Oct 2026 19:22:51 -0400 Subject: [PATCH 5/7] Replace python dict notation with dot notation --- .../practice/resistor-color-duo/.meta/template.j2 | 8 ++++---- .../practice/resistor-color-trio/.meta/template.j2 | 8 ++++---- exercises/practice/resistor-color/.meta/template.j2 | 10 +++++----- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/exercises/practice/resistor-color-duo/.meta/template.j2 b/exercises/practice/resistor-color-duo/.meta/template.j2 index d3734f7..a7e3436 100644 --- a/exercises/practice/resistor-color-duo/.meta/template.j2 +++ b/exercises/practice/resistor-color-duo/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} -func test_{{ case["func_name"] }}(solution_script): - var colors = {{ case["input"]["colors"] | togdscript }} - var expected = {{ case["expected"] }} - return [solution_script.{{ case["property"] | camel_to_snake }}(colors), expected] +func test_{{ case.func_name }}(solution_script): + var colors = {{ case.input.colors | togdscript }} + var expected = {{ case.expected }} + return [solution_script.{{ case.property | camel_to_snake }}(colors), expected] {% endfor %} diff --git a/exercises/practice/resistor-color-trio/.meta/template.j2 b/exercises/practice/resistor-color-trio/.meta/template.j2 index 1c04e42..e62abd7 100644 --- a/exercises/practice/resistor-color-trio/.meta/template.j2 +++ b/exercises/practice/resistor-color-trio/.meta/template.j2 @@ -1,7 +1,7 @@ {% for case in cases %} -func test_{{ case["func_name"] }}(solution_script): - var colors = {{ case["input"]["colors"] | togdscript }} - var expected = "{{ case["expected"]["value"] }} {{ case["expected"]["unit"] }}" - return [solution_script.{{ case["property"] | camel_to_snake }}(colors), expected] +func test_{{ case.func_name }}(solution_script): + var colors = {{ case.input.colors | togdscript }} + var expected = "{{ case.expected.value }} {{ case.expected.unit }}" + return [solution_script.{{ case.property | camel_to_snake }}(colors), expected] {% endfor %} diff --git a/exercises/practice/resistor-color/.meta/template.j2 b/exercises/practice/resistor-color/.meta/template.j2 index 51baafc..fef6da6 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"] }}] +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 }}] {%- endif %} -{%- if case["property"] == "colors" %} +{%- if case.property == "colors" %} var colors = [ "black", "brown", @@ -17,6 +17,6 @@ func test_{{ case["func_name"] }}(solution_script): "grey", "white" ] - return [solution_script.{{ case["property"] }}(), colors] + return [solution_script.{{ case.property }}(), colors] {%- endif %} {% endfor %} From cf193ac2f00a502efe6cdb4d7a6a3073d90af5d4 Mon Sep 17 00:00:00 2001 From: Glenn Jackman Date: Thu, 15 Oct 2026 20:41:05 -0400 Subject: [PATCH 6/7] Update exercises/practice/resistor-color/.meta/template.j2 Co-authored-by: Isaac Good --- exercises/practice/resistor-color/.meta/template.j2 | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/exercises/practice/resistor-color/.meta/template.j2 b/exercises/practice/resistor-color/.meta/template.j2 index fef6da6..c64e32f 100644 --- a/exercises/practice/resistor-color/.meta/template.j2 +++ b/exercises/practice/resistor-color/.meta/template.j2 @@ -5,18 +5,7 @@ func test_{{ case.func_name }}(solution_script): {%- endif %} {%- if case.property == "colors" %} - var colors = [ - "black", - "brown", - "red", - "orange", - "yellow", - "green", - "blue", - "violet", - "grey", - "white" - ] + var colors = {{ case.expected | togdscript }} return [solution_script.{{ case.property }}(), colors] {%- endif %} {% endfor %} From bd97d42a03423bf926ec10e5c6753acdbd3e955a Mon Sep 17 00:00:00 2001 From: Glenn Jackman Date: Fri, 16 Oct 2026 07:08:18 -0400 Subject: [PATCH 7/7] Update exercises/practice/resistor-color/.meta/template.j2 Co-authored-by: Isaac Good --- exercises/practice/resistor-color/.meta/template.j2 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/exercises/practice/resistor-color/.meta/template.j2 b/exercises/practice/resistor-color/.meta/template.j2 index c64e32f..0cf433f 100644 --- a/exercises/practice/resistor-color/.meta/template.j2 +++ b/exercises/practice/resistor-color/.meta/template.j2 @@ -3,8 +3,7 @@ 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 }}] -{%- endif %} -{%- if case.property == "colors" %} +{%- elif case.property == "colors" %} var colors = {{ case.expected | togdscript }} return [solution_script.{{ case.property }}(), colors] {%- endif %}