Skip to content

Commit 93db4cc

Browse files
authored
[largest-series-product] Add a Jinja test template (#804)
1 parent ed32816 commit 93db4cc

3 files changed

Lines changed: 34 additions & 20 deletions

File tree

exercises/practice/largest-series-product/.meta/example.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ die() { echo "$*" >&2; exit 1; }
77

88
nondig="*[^[:digit:]]*" # contains a non-digit
99

10-
[[ $series == $nondig ]] && die "input must only contain digits" # pattern is unquoted
10+
[[ $series == $nondig ]] && die "digits input must only contain digits" # pattern is unquoted
1111
(( span > ${#series} )) && die "span must not exceed string length"
1212
(( span < 0 )) && die "span must not be negative"
1313

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{{ header }}
2+
{% for idx, case in cases %}
3+
@test "{{ case["description"] }}" {
4+
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
5+
run bash {{ solution }} "{{ case["input"]["digits"] }}" "{{ case["input"]["span"] }}"
6+
{%- if case["expect_error"] %}
7+
expected="{{ case["expect_error_msg"] }}"
8+
assert_failure
9+
assert_output --partial "$expected"
10+
{%- else %}
11+
expected={{ case["expected"] }}
12+
assert_success
13+
assert_output "$expected"
14+
{%- endif %}
15+
}
16+
{% endfor %}

exercises/practice/largest-series-product/largest_series_product.bats

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,108 @@
11
#!/usr/bin/env bats
22
load bats-extra
33

4-
# local version: 1.2.0.0
5-
4+
# generated on 2026-06-28T21:57:09+00:00
5+
# local version: 2.0.0.0
66

77
@test "finds the largest product if span equals length" {
8-
#[[ $BATS_RUN_SKIPPED == "true" ]] || skip
9-
run bash largest_series_product.sh 29 2
8+
# [[ $BATS_RUN_SKIPPED == "true" ]] || skip
9+
run bash largest_series_product.sh "29" "2"
1010
expected=18
1111
assert_success
1212
assert_output "$expected"
1313
}
1414

1515
@test "can find the largest product of 2 with numbers in order" {
1616
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
17-
run bash largest_series_product.sh 0123456789 2
17+
run bash largest_series_product.sh "0123456789" "2"
1818
expected=72
1919
assert_success
2020
assert_output "$expected"
2121
}
2222

2323
@test "can find the largest product of 2" {
2424
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
25-
run bash largest_series_product.sh 576802143 2
25+
run bash largest_series_product.sh "576802143" "2"
2626
expected=48
2727
assert_success
2828
assert_output "$expected"
2929
}
3030

3131
@test "can find the largest product of 3 with numbers in order" {
3232
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
33-
run bash largest_series_product.sh 0123456789 3
33+
run bash largest_series_product.sh "0123456789" "3"
3434
expected=504
3535
assert_success
3636
assert_output "$expected"
3737
}
3838

3939
@test "can find the largest product of 3" {
4040
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
41-
run bash largest_series_product.sh 1027839564 3
41+
run bash largest_series_product.sh "1027839564" "3"
4242
expected=270
4343
assert_success
4444
assert_output "$expected"
4545
}
4646

4747
@test "can find the largest product of 5 with numbers in order" {
4848
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
49-
run bash largest_series_product.sh 0123456789 5
49+
run bash largest_series_product.sh "0123456789" "5"
5050
expected=15120
5151
assert_success
5252
assert_output "$expected"
5353
}
5454

5555
@test "can get the largest product of a big number" {
5656
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
57-
run bash largest_series_product.sh 73167176531330624919225119674426574742355349194934 6
57+
run bash largest_series_product.sh "73167176531330624919225119674426574742355349194934" "6"
5858
expected=23520
5959
assert_success
6060
assert_output "$expected"
6161
}
6262

6363
@test "reports zero if the only digits are zero" {
6464
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
65-
run bash largest_series_product.sh 0000 2
65+
run bash largest_series_product.sh "0000" "2"
6666
expected=0
6767
assert_success
6868
assert_output "$expected"
6969
}
7070

7171
@test "reports zero if all spans include zero" {
7272
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
73-
run bash largest_series_product.sh 99099 3
73+
run bash largest_series_product.sh "99099" "3"
7474
expected=0
7575
assert_success
7676
assert_output "$expected"
7777
}
7878

79-
# error cases
80-
8179
@test "rejects span longer than string length" {
8280
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
83-
run bash largest_series_product.sh 123 4
81+
run bash largest_series_product.sh "123" "4"
8482
expected="span must not exceed string length"
8583
assert_failure
8684
assert_output --partial "$expected"
8785
}
8886

8987
@test "rejects empty string and nonzero span" {
9088
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
91-
run bash largest_series_product.sh "" 1
89+
run bash largest_series_product.sh "" "1"
9290
expected="span must not exceed string length"
9391
assert_failure
9492
assert_output --partial "$expected"
9593
}
9694

9795
@test "rejects invalid character in digits" {
9896
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
99-
run bash largest_series_product.sh 1234a5 2
100-
expected="input must only contain digits"
97+
run bash largest_series_product.sh "1234a5" "2"
98+
expected="digits input must only contain digits"
10199
assert_failure
102100
assert_output --partial "$expected"
103101
}
104102

105103
@test "rejects negative span" {
106104
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
107-
run bash largest_series_product.sh 12345 -1
105+
run bash largest_series_product.sh "12345" "-1"
108106
expected="span must not be negative"
109107
assert_failure
110108
assert_output --partial "$expected"

0 commit comments

Comments
 (0)