trackler 2.2.1.96 → 2.2.1.97

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/fsharp/exercises/bowling/BowlingTest.fs +77 -42
  4. data/tracks/fsharp/generators/Generators.fs +24 -0
  5. data/tracks/go/exercises/acronym/cases_test.go +2 -6
  6. data/tracks/go/exercises/anagram/cases_test.go +2 -40
  7. data/tracks/go/exercises/hamming/.meta/gen.go +7 -5
  8. data/tracks/go/exercises/hamming/cases_test.go +2 -2
  9. data/tracks/go/exercises/largest-series-product/.meta/gen.go +6 -4
  10. data/tracks/go/exercises/largest-series-product/cases_test.go +2 -2
  11. data/tracks/go/exercises/leap/.meta/gen.go +5 -3
  12. data/tracks/go/exercises/leap/cases_test.go +2 -2
  13. data/tracks/go/exercises/nth-prime/.meta/gen.go +5 -3
  14. data/tracks/go/exercises/nth-prime/cases_test.go +2 -2
  15. data/tracks/java/exercises/allergies/.meta/hints.md +58 -0
  16. data/tracks/java/exercises/allergies/README.md +62 -0
  17. data/tracks/java/exercises/atbash-cipher/.meta/hints.md +58 -0
  18. data/tracks/java/exercises/atbash-cipher/README.md +62 -0
  19. data/tracks/java/exercises/bob/.meta/hints.md +58 -0
  20. data/tracks/java/exercises/bob/README.md +62 -0
  21. data/tracks/java/exercises/bracket-push/.meta/hints.md +58 -0
  22. data/tracks/java/exercises/bracket-push/README.md +62 -0
  23. data/tracks/java/exercises/hello-world/.meta/version +1 -0
  24. data/tracks/java/exercises/pascals-triangle/.meta/hints.md +58 -0
  25. data/tracks/java/exercises/pascals-triangle/README.md +62 -0
  26. data/tracks/java/exercises/series/.meta/hints.md +58 -0
  27. data/tracks/java/exercises/series/README.md +62 -0
  28. data/tracks/python/exercises/grep/grep_test.py +142 -79
  29. data/tracks/python/exercises/house/example.py +3 -3
  30. data/tracks/python/exercises/house/house.py +1 -1
  31. data/tracks/python/exercises/luhn/example.py +4 -4
  32. data/tracks/python/exercises/luhn/luhn.py +1 -1
  33. metadata +9 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81eca53e081d3529ffccdc505c2470677bcd75fa
4
- data.tar.gz: 5c658d2fdc47d731a5c12857851e327019bfcf0f
3
+ metadata.gz: a879165bbaf3374166c71dc34a41c6aec1bb4810
4
+ data.tar.gz: c2523fd9d3a926cc23467b989899bdf68f0fa565
5
5
  SHA512:
6
- metadata.gz: dcb54de6244b11bc2ac9ade0eee35db7a0436a8fbb1eabcd8f5d6be9e46df5a4d35015df8f3f0c31ffb470b766bce0d0b07fb426566a22de1ca454809860f3a1
7
- data.tar.gz: b188c9715563d6aa42540f7f85295b58c99841515fdcc8ef9e3322d8887006a8a08ac664bc05bf7a0875d94019e9e8901f46d0a6e4a937283162775204e9fe57
6
+ metadata.gz: 1cc0663e27885b9b49fe12f96d9157edd8e461124f5dec5d6e6cd80e479086938f1064cd8bc14eaba7e81b52d491f1e2332c3d754f8c81b31063939d2a541d3d
7
+ data.tar.gz: a0dac94954516db51e090848ee10285b9303d1e5b6f0fb3ad23a1a4e465c50cadab72b7d98503922a9c8e1c5a2cf768ed6411e69513a1c34fb0b16f52621d5b8
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.96"
2
+ VERSION = "2.2.1.97"
3
3
  end
@@ -1,7 +1,9 @@
1
+ // This file was auto-generated based on version 1.1.0 of the canonical data.
2
+
1
3
  module BowlingTest
2
4
 
3
- open Xunit
4
5
  open FsUnit.Xunit
6
+ open Xunit
5
7
 
6
8
  open Bowling
7
9
 
@@ -12,141 +14,174 @@ let ``Should be able to score a game with all zeros`` () =
12
14
  let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
13
15
  let game = rollMany rolls (newGame())
14
16
  score game |> should equal <| Some 0
15
-
17
+
16
18
  [<Fact(Skip = "Remove to run test")>]
17
19
  let ``Should be able to score a game with no strikes or spares`` () =
18
20
  let rolls = [3; 6; 3; 6; 3; 6; 3; 6; 3; 6; 3; 6; 3; 6; 3; 6; 3; 6; 3; 6]
19
21
  let game = rollMany rolls (newGame())
20
22
  score game |> should equal <| Some 90
21
-
23
+
22
24
  [<Fact(Skip = "Remove to run test")>]
23
25
  let ``A spare followed by zeros is worth ten points`` () =
24
26
  let rolls = [6; 4; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
25
27
  let game = rollMany rolls (newGame())
26
28
  score game |> should equal <| Some 10
27
-
29
+
28
30
  [<Fact(Skip = "Remove to run test")>]
29
31
  let ``Points scored in the roll after a spare are counted twice`` () =
30
32
  let rolls = [6; 4; 3; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
31
33
  let game = rollMany rolls (newGame())
32
34
  score game |> should equal <| Some 16
33
-
35
+
34
36
  [<Fact(Skip = "Remove to run test")>]
35
37
  let ``Consecutive spares each get a one roll bonus`` () =
36
38
  let rolls = [5; 5; 3; 7; 4; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
37
39
  let game = rollMany rolls (newGame())
38
40
  score game |> should equal <| Some 31
39
-
41
+
40
42
  [<Fact(Skip = "Remove to run test")>]
41
43
  let ``A spare in the last frame gets a one roll bonus that is counted once`` () =
42
44
  let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 7; 3; 7]
43
45
  let game = rollMany rolls (newGame())
44
46
  score game |> should equal <| Some 17
45
-
47
+
46
48
  [<Fact(Skip = "Remove to run test")>]
47
- let ``A strike earns ten points in frame with a single roll`` () =
49
+ let ``A strike earns ten points in a frame with a single roll`` () =
48
50
  let rolls = [10; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
49
51
  let game = rollMany rolls (newGame())
50
52
  score game |> should equal <| Some 10
51
-
53
+
52
54
  [<Fact(Skip = "Remove to run test")>]
53
55
  let ``Points scored in the two rolls after a strike are counted twice as a bonus`` () =
54
56
  let rolls = [10; 5; 3; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
55
57
  let game = rollMany rolls (newGame())
56
58
  score game |> should equal <| Some 26
57
-
59
+
58
60
  [<Fact(Skip = "Remove to run test")>]
59
61
  let ``Consecutive strikes each get the two roll bonus`` () =
60
62
  let rolls = [10; 10; 10; 5; 3; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
61
63
  let game = rollMany rolls (newGame())
62
64
  score game |> should equal <| Some 81
63
-
65
+
64
66
  [<Fact(Skip = "Remove to run test")>]
65
67
  let ``A strike in the last frame gets a two roll bonus that is counted once`` () =
66
68
  let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 7; 1]
67
69
  let game = rollMany rolls (newGame())
68
70
  score game |> should equal <| Some 18
69
-
71
+
70
72
  [<Fact(Skip = "Remove to run test")>]
71
73
  let ``Rolling a spare with the two roll bonus does not get a bonus roll`` () =
72
74
  let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 7; 3]
73
75
  let game = rollMany rolls (newGame())
74
76
  score game |> should equal <| Some 20
75
-
77
+
76
78
  [<Fact(Skip = "Remove to run test")>]
77
79
  let ``Strikes with the two roll bonus do not get bonus rolls`` () =
78
80
  let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 10; 10]
79
81
  let game = rollMany rolls (newGame())
80
82
  score game |> should equal <| Some 30
81
-
83
+
82
84
  [<Fact(Skip = "Remove to run test")>]
83
85
  let ``A strike with the one roll bonus after a spare in the last frame does not get a bonus`` () =
84
86
  let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 7; 3; 10]
85
87
  let game = rollMany rolls (newGame())
86
88
  score game |> should equal <| Some 20
87
-
89
+
88
90
  [<Fact(Skip = "Remove to run test")>]
89
91
  let ``All strikes is a perfect game`` () =
90
92
  let rolls = [10; 10; 10; 10; 10; 10; 10; 10; 10; 10; 10; 10]
91
93
  let game = rollMany rolls (newGame())
92
94
  score game |> should equal <| Some 300
93
-
95
+
94
96
  [<Fact(Skip = "Remove to run test")>]
95
- let ``Rolls can not score negative points`` () =
96
- let rolls = [-1; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
97
- let game = rollMany rolls (newGame())
97
+ let ``Rolls cannot score negative points`` () =
98
+ let rolls = []
99
+ let startingRolls = rollMany rolls (newGame())
100
+ let game = roll -1 startingRolls
98
101
  score game |> should equal None
99
-
102
+
100
103
  [<Fact(Skip = "Remove to run test")>]
101
- let ``A roll can not score more than 10 points`` () =
102
- let rolls = [11; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
103
- let game = rollMany rolls (newGame())
104
+ let ``A roll cannot score more than 10 points`` () =
105
+ let rolls = []
106
+ let startingRolls = rollMany rolls (newGame())
107
+ let game = roll 11 startingRolls
104
108
  score game |> should equal None
105
-
109
+
106
110
  [<Fact(Skip = "Remove to run test")>]
107
- let ``Two rolls in a frame can not score more than 10 points`` () =
108
- let rolls = [5; 6; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
109
- let game = rollMany rolls (newGame())
111
+ let ``Two rolls in a frame cannot score more than 10 points`` () =
112
+ let rolls = [5]
113
+ let startingRolls = rollMany rolls (newGame())
114
+ let game = roll 6 startingRolls
110
115
  score game |> should equal None
111
-
116
+
112
117
  [<Fact(Skip = "Remove to run test")>]
113
- let ``Two bonus rolls after a strike in the last frame can not score more than 10 points`` () =
114
- let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 5; 6]
118
+ let ``Bonus roll after a strike in the last frame cannot score more than 10 points`` () =
119
+ let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10]
120
+ let startingRolls = rollMany rolls (newGame())
121
+ let game = roll 11 startingRolls
122
+ score game |> should equal None
123
+
124
+ [<Fact(Skip = "Remove to run test")>]
125
+ let ``Two bonus rolls after a strike in the last frame cannot score more than 10 points`` () =
126
+ let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 5]
127
+ let startingRolls = rollMany rolls (newGame())
128
+ let game = roll 6 startingRolls
129
+ score game |> should equal None
130
+
131
+ [<Fact(Skip = "Remove to run test")>]
132
+ let ``Two bonus rolls after a strike in the last frame can score more than 10 points if one is a strike`` () =
133
+ let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 10; 6]
115
134
  let game = rollMany rolls (newGame())
135
+ score game |> should equal <| Some 26
136
+
137
+ [<Fact(Skip = "Remove to run test")>]
138
+ let ``The second bonus rolls after a strike in the last frame cannot be a strike if the first one is not a strike`` () =
139
+ let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 6]
140
+ let startingRolls = rollMany rolls (newGame())
141
+ let game = roll 10 startingRolls
142
+ score game |> should equal None
143
+
144
+ [<Fact(Skip = "Remove to run test")>]
145
+ let ``Second bonus roll after a strike in the last frame cannot score more than 10 points`` () =
146
+ let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 10]
147
+ let startingRolls = rollMany rolls (newGame())
148
+ let game = roll 11 startingRolls
116
149
  score game |> should equal None
117
-
150
+
118
151
  [<Fact(Skip = "Remove to run test")>]
119
- let ``An unstarted game can not be scored`` () =
152
+ let ``An unstarted game cannot be scored`` () =
120
153
  let rolls = []
121
154
  let game = rollMany rolls (newGame())
122
155
  score game |> should equal None
123
-
156
+
124
157
  [<Fact(Skip = "Remove to run test")>]
125
- let ``An incomplete game can not be scored`` () =
158
+ let ``An incomplete game cannot be scored`` () =
126
159
  let rolls = [0; 0]
127
160
  let game = rollMany rolls (newGame())
128
161
  score game |> should equal None
129
-
162
+
130
163
  [<Fact(Skip = "Remove to run test")>]
131
- let ``A game with more than ten frames can not be scored`` () =
132
- let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
133
- let game = rollMany rolls (newGame())
164
+ let ``Cannot roll if game already has ten frames`` () =
165
+ let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
166
+ let startingRolls = rollMany rolls (newGame())
167
+ let game = roll 0 startingRolls
134
168
  score game |> should equal None
135
-
169
+
136
170
  [<Fact(Skip = "Remove to run test")>]
137
171
  let ``Bonus rolls for a strike in the last frame must be rolled before score can be calculated`` () =
138
172
  let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10]
139
173
  let game = rollMany rolls (newGame())
140
174
  score game |> should equal None
141
-
175
+
142
176
  [<Fact(Skip = "Remove to run test")>]
143
177
  let ``Both bonus rolls for a strike in the last frame must be rolled before score can be calculated`` () =
144
178
  let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 10]
145
179
  let game = rollMany rolls (newGame())
146
180
  score game |> should equal None
147
-
181
+
148
182
  [<Fact(Skip = "Remove to run test")>]
149
183
  let ``Bonus roll for a spare in the last frame must be rolled before score can be calculated`` () =
150
184
  let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 7; 3]
151
185
  let game = rollMany rolls (newGame())
152
- score game |> should equal None
186
+ score game |> should equal None
187
+
@@ -132,6 +132,30 @@ type BookStore() =
132
132
  override __.PropertiesUsedAsSutParameter canonicalDataCase =
133
133
  base.PropertiesUsedAsSutParameter canonicalDataCase |> List.except ["targetgrouping"]
134
134
 
135
+ type Bowling() =
136
+ inherit GeneratorExercise()
137
+
138
+ override __.RenderSut _ ="score game"
139
+
140
+ override __.RenderSetup canonicalDataCase =
141
+ "let rollMany rolls game = List.fold (fun game pins -> roll pins game) game rolls"
142
+
143
+ override __.RenderArrange canonicalDataCase =
144
+ seq {
145
+ let arr = (canonicalDataCase.Input.["previousRolls"] :?> JToken).ToObject<string[]>()
146
+ yield sprintf "let rolls = %s" (formatList arr)
147
+ if canonicalDataCase.Input.ContainsKey "roll" then
148
+ let roll = canonicalDataCase.Input.["roll"] :?> int64
149
+ yield sprintf "let startingRolls = rollMany rolls (newGame())"
150
+ yield sprintf "let game = roll %i startingRolls" roll
151
+ else
152
+ yield sprintf "let game = rollMany rolls (newGame())"
153
+ }
154
+ |> Seq.toList
155
+
156
+ override __.RenderExpected (_, _, value) =
157
+ if value :? JObject then "None" else sprintf "<| Some %s" (formatValue value)
158
+
135
159
  type BracketPush() =
136
160
  inherit GeneratorExercise()
137
161
 
@@ -1,8 +1,8 @@
1
1
  package acronym
2
2
 
3
3
  // Source: exercism/problem-specifications
4
- // Commit: c5fb622 acronym: Update json for new "input" policy (#1032)
5
- // Problem Specifications Version: 1.2.0
4
+ // Commit: 5ae1dba Acronym canonical-data: Remove redundant test case
5
+ // Problem Specifications Version: 1.3.0
6
6
 
7
7
  type acronymTest struct {
8
8
  input string
@@ -22,10 +22,6 @@ var stringTestCases = []acronymTest{
22
22
  input: "First In, First Out",
23
23
  expected: "FIFO",
24
24
  },
25
- {
26
- input: "PHP: Hypertext Preprocessor",
27
- expected: "PHP",
28
- },
29
25
  {
30
26
  input: "GNU Image Manipulation Program",
31
27
  expected: "GIMP",
@@ -1,8 +1,8 @@
1
1
  package anagram
2
2
 
3
3
  // Source: exercism/problem-specifications
4
- // Commit: a0f7663 anagram: Update json for new "input" policy (#1036)
5
- // Problem Specifications Version: 1.1.0
4
+ // Commit: b8359f9 Anagram canonical-data: Update version
5
+ // Problem Specifications Version: 1.2.0
6
6
 
7
7
  var testCases = []struct {
8
8
  description string
@@ -20,23 +20,6 @@ var testCases = []struct {
20
20
  "pants"},
21
21
  expected: []string{},
22
22
  },
23
- {
24
- description: "detects simple anagram",
25
- subject: "ant",
26
- candidates: []string{
27
- "tan",
28
- "stand",
29
- "at"},
30
- expected: []string{
31
- "tan"},
32
- },
33
- {
34
- description: "does not detect false positives",
35
- subject: "galea",
36
- candidates: []string{
37
- "eagle"},
38
- expected: []string{},
39
- },
40
23
  {
41
24
  description: "detects two anagrams",
42
25
  subject: "master",
@@ -82,20 +65,6 @@ var testCases = []struct {
82
65
  "regally",
83
66
  "largely"},
84
67
  },
85
- {
86
- description: "does not detect identical words",
87
- subject: "corn",
88
- candidates: []string{
89
- "corn",
90
- "dark",
91
- "Corn",
92
- "rank",
93
- "CORN",
94
- "cron",
95
- "park"},
96
- expected: []string{
97
- "cron"},
98
- },
99
68
  {
100
69
  description: "does not detect non-anagrams with identical checksum",
101
70
  subject: "mass",
@@ -133,13 +102,6 @@ var testCases = []struct {
133
102
  expected: []string{
134
103
  "Carthorse"},
135
104
  },
136
- {
137
- description: "does not detect a word as its own anagram",
138
- subject: "banana",
139
- candidates: []string{
140
- "Banana"},
141
- expected: []string{},
142
- },
143
105
  {
144
106
  description: "does not detect a anagram if the original word is repeated",
145
107
  subject: "go",
@@ -25,9 +25,11 @@ type js struct {
25
25
 
26
26
  type oneCase struct {
27
27
  Description string
28
- Strand1 string
29
- Strand2 string
30
- Expected interface{}
28
+ Input struct {
29
+ Strand1 string
30
+ Strand2 string
31
+ }
32
+ Expected interface{}
31
33
  }
32
34
 
33
35
  func (o oneCase) Want() int {
@@ -49,8 +51,8 @@ var testCases = []struct {
49
51
  want int
50
52
  }{
51
53
  {{range .J.Cases}}{ // {{.Description}}
52
- {{printf "%q" .Strand1}},
53
- {{printf "%q" .Strand2}},
54
+ {{printf "%q" .Input.Strand1}},
55
+ {{printf "%q" .Input.Strand2}},
54
56
  {{.Want}},
55
57
  },
56
58
  {{end}}}
@@ -1,8 +1,8 @@
1
1
  package hamming
2
2
 
3
3
  // Source: exercism/problem-specifications
4
- // Commit: f79dfd7 Simplify two tests so the difference is easily spotted.
5
- // Problem Specifications Version: 2.0.1
4
+ // Commit: b5d154b hamming: move inputs (strand1, strand2) to input object
5
+ // Problem Specifications Version: 2.1.0
6
6
 
7
7
  var testCases = []struct {
8
8
  s1 string
@@ -22,9 +22,11 @@ func main() {
22
22
  type js struct {
23
23
  Cases []struct {
24
24
  Description string
25
- Digits string
26
- Span int
27
- Expected int64
25
+ Input struct {
26
+ Digits string
27
+ Span int
28
+ }
29
+ Expected int64
28
30
  }
29
31
  }
30
32
 
@@ -39,6 +41,6 @@ var tests = []struct {
39
41
  product int64
40
42
  ok bool
41
43
  }{
42
- {{range .J.Cases}}{ "{{.Digits}}", {{.Span}}, {{.Expected}}, {{ge .Expected 0}}},
44
+ {{range .J.Cases}}{ "{{.Input.Digits}}", {{.Input.Span}}, {{.Expected}}, {{ge .Expected 0}}},
43
45
  {{end}}}
44
46
  `
@@ -1,8 +1,8 @@
1
1
  package lsproduct
2
2
 
3
3
  // Source: exercism/problem-specifications
4
- // Commit: e79b832 largest-series-product: Fix canonical-data.json formatting
5
- // Problem Specifications Version: 1.0.0
4
+ // Commit: 92b86a8 largest-series-product: Apply new "input" policy
5
+ // Problem Specifications Version: 1.1.0
6
6
 
7
7
  var tests = []struct {
8
8
  digits string
@@ -22,8 +22,10 @@ func main() {
22
22
  type js struct {
23
23
  Cases []struct {
24
24
  Description string
25
- Input int
26
- Expected bool
25
+ Input struct {
26
+ Year int
27
+ }
28
+ Expected bool
27
29
  }
28
30
  }
29
31
 
@@ -37,6 +39,6 @@ var testCases = []struct {
37
39
  expected bool
38
40
  description string
39
41
  }{
40
- {{range .J.Cases}}{ {{.Input}}, {{.Expected}}, {{printf "%q" .Description}}},
42
+ {{range .J.Cases}}{ {{.Input.Year}}, {{.Expected}}, {{printf "%q" .Description}}},
41
43
  {{end}}}
42
44
  `