11#! /usr/bin/env bats
22load bats-extra
33
4- # local version: 1.0.0.0
5-
6- # Output your triplets, comma-separated, one per line.
7-
4+ # generated on 2026-06-29T06:52:43+00:00
5+ # local version: 2.0.0.0
86
97@test " triplets whose sum is 12" {
10- # [[ $BATS_RUN_SKIPPED == "true" ]] || skip
8+ # [[ $BATS_RUN_SKIPPED == "true" ]] || skip
119 run bash pythagorean_triplet.sh 12
1210 assert_success
1311 actual=$( sort -t, -n -k1,1 <<< " $output" )
14- expected=" 3,4,5"
12+ expected=$( cat << 'END_EXPECTED '
13+ 3,4,5
14+ END_EXPECTED
15+ )
1516 assert_equal " $actual " " $expected "
1617}
1718
@@ -20,7 +21,10 @@ load bats-extra
2021 run bash pythagorean_triplet.sh 108
2122 assert_success
2223 actual=$( sort -t, -n -k1,1 <<< " $output" )
23- expected=" 27,36,45"
24+ expected=$( cat << 'END_EXPECTED '
25+ 27,36,45
26+ END_EXPECTED
27+ )
2428 assert_equal " $actual " " $expected "
2529}
2630
@@ -29,26 +33,35 @@ load bats-extra
2933 run bash pythagorean_triplet.sh 1000
3034 assert_success
3135 actual=$( sort -t, -n -k1,1 <<< " $output" )
32- expected=" 200,375,425"
36+ expected=$( cat << 'END_EXPECTED '
37+ 200,375,425
38+ END_EXPECTED
39+ )
3340 assert_equal " $actual " " $expected "
3441}
3542
3643@test " no matching triplets for 1001" {
3744 [[ $BATS_RUN_SKIPPED == " true" ]] || skip
3845 run bash pythagorean_triplet.sh 1001
3946 assert_success
40- refute_output
41- }
47+ actual= $( sort -t, -n -k1,1 <<< " $output " )
48+ expected= $( cat << ' END_EXPECTED '
4249
43- # Note: using ANSI-C Quoting here
44- # see https://www.gnu.org/software/bash/manual/bash.html#ANSI_002dC-Quoting
50+ END_EXPECTED
51+ )
52+ assert_equal " $actual " " $expected "
53+ }
4554
4655@test " returns all matching triplets" {
4756 [[ $BATS_RUN_SKIPPED == " true" ]] || skip
4857 run bash pythagorean_triplet.sh 90
4958 assert_success
5059 actual=$( sort -t, -n -k1,1 <<< " $output" )
51- expected=$' 9,40,41\n 15,36,39'
60+ expected=$( cat << 'END_EXPECTED '
61+ 9,40,41
62+ 15,36,39
63+ END_EXPECTED
64+ )
5265 assert_equal " $actual " " $expected "
5366}
5467
@@ -57,29 +70,36 @@ load bats-extra
5770 run bash pythagorean_triplet.sh 840
5871 assert_success
5972 actual=$( sort -t, -n -k1,1 <<< " $output" )
60- expected=" 40,399,401
73+ expected=$( cat << 'END_EXPECTED '
74+ 40,399,401
617556,390,394
6276105,360,375
6377120,350,370
6478140,336,364
6579168,315,357
6680210,280,350
67- 240,252,348"
81+ 240,252,348
82+ END_EXPECTED
83+ )
6884 assert_equal " $actual " " $expected "
6985}
7086
71- # This test is very time-consuming for a brute force solution.
72- # Uncomment and run only for extra credit (or punishment).
87+ @ test " triplets for large number " {
88+ [[ $BATS_RUN_SKIPPED == " true " ]] || skip
7389
74- # @test "triplets for large number" {
75- # [[ $BATS_RUN_SKIPPED == "true" ]] || skip
76- # run bash pythagorean_triplet.sh 30000
77- # assert_success
78- # actual=$( sort -t, -n -k1,1 <<< "$output" )
79- # expected="1200,14375,14425
80- # 1875,14000,14125
81- # 5000,12000,13000
82- # 6000,11250,12750
83- # 7500,10000,12500"
84- # assert_equal "$actual" "$expected"
85- # }
90+ # This test is very time-consuming for a brute force solution.
91+ # Remove the skip and run only for extra credit (or punishment).
92+ [[ $RUN_HARD_TEST == " true" ]] || skip
93+ run bash pythagorean_triplet.sh 30000
94+ assert_success
95+ actual=$( sort -t, -n -k1,1 <<< " $output" )
96+ expected=$( cat << 'END_EXPECTED '
97+ 1200,14375,14425
98+ 1875,14000,14125
99+ 5000,12000,13000
100+ 6000,11250,12750
101+ 7500,10000,12500
102+ END_EXPECTED
103+ )
104+ assert_equal " $actual " " $expected "
105+ }
0 commit comments