trackler 2.0.0.1 → 2.0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. checksums.yaml +4 -4
  2. data/bin/bump-content +3 -1
  3. data/bin/verify-metadata +2 -2
  4. data/common/exercises/alphametics/canonical-data.json +19 -9
  5. data/common/exercises/food-chain/canonical-data.json +7 -1
  6. data/common/exercises/grains/canonical-data.json +66 -0
  7. data/common/exercises/raindrops/description.md +4 -5
  8. data/common/exercises/triangle/canonical-data.json +81 -54
  9. data/lib/trackler/version.rb +1 -1
  10. data/tracks/c/config.json +26 -19
  11. data/tracks/c/exercises/allergies/makefile +15 -0
  12. data/tracks/c/exercises/allergies/src/allergies.h +21 -0
  13. data/tracks/c/exercises/allergies/src/example.c +32 -0
  14. data/tracks/c/exercises/allergies/src/example.h +26 -0
  15. data/tracks/c/exercises/allergies/test/test_allergies.c +203 -0
  16. data/tracks/c/exercises/allergies/test/vendor/unity.c +1300 -0
  17. data/tracks/c/exercises/allergies/test/vendor/unity.h +274 -0
  18. data/tracks/c/exercises/allergies/test/vendor/unity_internals.h +701 -0
  19. data/tracks/c/exercises/atbash-cipher/makefile +16 -0
  20. data/tracks/c/exercises/atbash-cipher/src/example.c +71 -0
  21. data/tracks/c/exercises/atbash-cipher/src/example.h +7 -0
  22. data/tracks/c/exercises/atbash-cipher/test/test_atbash_cipher.c +113 -0
  23. data/tracks/c/exercises/atbash-cipher/test/vendor/unity.c +1300 -0
  24. data/tracks/c/exercises/atbash-cipher/test/vendor/unity.h +274 -0
  25. data/tracks/c/exercises/atbash-cipher/test/vendor/unity_internals.h +701 -0
  26. data/tracks/c/exercises/phone-number/makefile +16 -0
  27. data/tracks/c/exercises/phone-number/src/example.c +66 -0
  28. data/tracks/c/exercises/phone-number/src/example.h +8 -0
  29. data/tracks/c/exercises/phone-number/test/test_phone_number.c +108 -0
  30. data/tracks/c/exercises/phone-number/test/vendor/unity.c +1300 -0
  31. data/tracks/c/exercises/phone-number/test/vendor/unity.h +274 -0
  32. data/tracks/c/exercises/phone-number/test/vendor/unity_internals.h +701 -0
  33. data/tracks/csharp/config.json +8 -0
  34. data/tracks/csharp/exercises/bowling/BowlingTest.cs +188 -33
  35. data/tracks/csharp/exercises/bowling/Example.cs +38 -9
  36. data/tracks/csharp/exercises/rectangles/Example.cs +91 -0
  37. data/tracks/csharp/exercises/rectangles/RectanglesTest.cs +133 -0
  38. data/tracks/elisp/docs/INSTALLATION.org +1 -1
  39. data/tracks/elixir/config.json +8 -66
  40. data/tracks/elixir/docs/LEARNING.md +1 -1
  41. data/tracks/elixir/exercises/diamond/diamond_test.exs +12 -12
  42. data/tracks/elixir/exercises/grep/example.exs +92 -0
  43. data/tracks/elixir/exercises/grep/grep.exs +6 -0
  44. data/tracks/elixir/exercises/grep/grep_test.exs +259 -0
  45. data/tracks/elixir/exercises/markdown/markdown.exs +59 -2
  46. data/tracks/elixir/exercises/nucleotide-count/nucleotide_count_test.exs +4 -4
  47. data/tracks/elixir/exercises/phone-number/phone_number_test.exs +5 -0
  48. data/tracks/fsharp/exercises/bowling/BowlingTest.fs +158 -43
  49. data/tracks/fsharp/exercises/bowling/Example.fs +53 -24
  50. data/tracks/go/config.json +5 -0
  51. data/tracks/go/exercises/diamond/diamond_test.go +227 -0
  52. data/tracks/go/exercises/diamond/example.go +47 -0
  53. data/tracks/go/exercises/food-chain/example.go +1 -1
  54. data/tracks/go/exercises/food-chain/food_chain_test.go +30 -6
  55. data/tracks/go/exercises/nucleotide-count/example.go +21 -8
  56. data/tracks/go/exercises/nucleotide-count/nucleotide_count_test.go +45 -37
  57. data/tracks/haskell/exercises/anagram/test/Tests.hs +1 -11
  58. data/tracks/java/bin/journey-test.sh +165 -128
  59. data/tracks/java/docs/ABOUT.md +5 -8
  60. data/tracks/java/exercises/hello-world/build.gradle +0 -6
  61. data/tracks/java/exercises/hello-world/src/test/java/HelloWorldTest.java +0 -1
  62. data/tracks/java/exercises/meetup/build.gradle +0 -1
  63. data/tracks/java/exercises/meetup/src/example/java/Meetup.java +9 -7
  64. data/tracks/java/exercises/meetup/src/test/java/MeetupTest.java +185 -188
  65. data/tracks/lua/config.json +0 -73
  66. data/tracks/lua/exercises/bowling/bowling_spec.lua +92 -48
  67. data/tracks/lua/exercises/bowling/example.lua +4 -1
  68. data/tracks/objective-c/config.json +9 -30
  69. data/tracks/objective-c/exercises/pangram/PangramExample.h +7 -0
  70. data/tracks/objective-c/exercises/pangram/PangramExample.m +21 -0
  71. data/tracks/objective-c/exercises/pangram/PangramTest.m +51 -0
  72. data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
  73. data/tracks/ocaml/README.md +46 -1
  74. data/tracks/ocaml/SETUP.md +21 -2
  75. data/tracks/ocaml/config.json +48 -78
  76. data/tracks/perl5/README.md +15 -8
  77. data/tracks/perl5/testall.pl +5 -5
  78. data/tracks/php/config.json +26 -34
  79. data/tracks/php/docs/ABOUT.md +15 -0
  80. data/tracks/php/exercises/allergies/allergies_test.php +121 -0
  81. data/tracks/php/exercises/allergies/example.php +64 -0
  82. data/tracks/php/exercises/etl/etl_test.php +52 -0
  83. data/tracks/php/exercises/etl/example.php +12 -0
  84. data/tracks/php/exercises/nucleotide-count/example.php +25 -0
  85. data/tracks/php/exercises/nucleotide-count/nucleotide-count_test.php +36 -0
  86. data/tracks/php/exercises/pig-latin/example.php +25 -29
  87. data/tracks/php/exercises/pig-latin/pig-latin_test.php +26 -19
  88. data/tracks/php/exercises/space-age/example.php +65 -0
  89. data/tracks/php/exercises/space-age/space-age_test.php +70 -0
  90. data/tracks/php/exercises/triangle/example.php +43 -0
  91. data/tracks/php/exercises/triangle/triangle_test.php +140 -0
  92. data/tracks/pony/exercises/anagram/example.pony +6 -6
  93. data/tracks/pony/exercises/anagram/test.pony +3 -4
  94. data/tracks/pony/exercises/bob/test.pony +23 -23
  95. data/tracks/pony/exercises/difference-of-squares/test.pony +11 -11
  96. data/tracks/pony/exercises/hamming/example.pony +3 -3
  97. data/tracks/pony/exercises/hamming/test.pony +16 -16
  98. data/tracks/pony/exercises/hello-world/test.pony +5 -4
  99. data/tracks/pony/exercises/leap/test.pony +8 -8
  100. data/tracks/python/config.json +18 -0
  101. data/tracks/python/exercises/diamond/diamond_test.py +33 -0
  102. data/tracks/python/exercises/diamond/example.py +15 -0
  103. data/tracks/python/exercises/linked-list/example.py +47 -0
  104. data/tracks/python/exercises/linked-list/linked_list.py +13 -0
  105. data/tracks/python/exercises/linked-list/linked_list_test.py +49 -0
  106. data/tracks/python/exercises/list-ops/example.py +55 -0
  107. data/tracks/python/exercises/list-ops/list_ops.py +38 -0
  108. data/tracks/python/exercises/list-ops/list_ops_test.py +136 -0
  109. data/tracks/ruby/bin/generate +22 -2
  110. data/tracks/ruby/config.json +12 -83
  111. data/tracks/ruby/exercises/allergies/allergies_test.rb +0 -1
  112. data/tracks/ruby/exercises/atbash-cipher/atbash_cipher_test.rb +0 -1
  113. data/tracks/ruby/exercises/beer-song/beer_song_test.rb +1 -2
  114. data/tracks/ruby/exercises/binary/example.rb +0 -1
  115. data/tracks/ruby/exercises/binary-search-tree/binary_search_tree_test.rb +1 -1
  116. data/tracks/ruby/exercises/bowling/.version +1 -0
  117. data/tracks/ruby/exercises/bowling/bowling_test.rb +109 -133
  118. data/tracks/ruby/exercises/bowling/example.rb +7 -7
  119. data/tracks/ruby/exercises/bowling/example.tt +27 -0
  120. data/tracks/ruby/exercises/circular-buffer/circular_buffer_test.rb +0 -2
  121. data/tracks/ruby/exercises/clock/example.rb +0 -2
  122. data/tracks/ruby/exercises/connect/connect_test.rb +0 -1
  123. data/tracks/ruby/exercises/custom-set/custom_set_test.rb +0 -1
  124. data/tracks/ruby/exercises/diamond/diamond_test.rb +0 -1
  125. data/tracks/ruby/exercises/etl/etl_test.rb +1 -1
  126. data/tracks/ruby/exercises/house/house_test.rb +0 -1
  127. data/tracks/ruby/exercises/isogram/isogram_test.rb +2 -2
  128. data/tracks/ruby/exercises/largest-series-product/example.tt +0 -3
  129. data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +0 -4
  130. data/tracks/ruby/exercises/linked-list/linked_list_test.rb +1 -1
  131. data/tracks/ruby/exercises/meetup/meetup_test.rb +0 -1
  132. data/tracks/ruby/exercises/nth-prime/example.tt +0 -2
  133. data/tracks/ruby/exercises/nth-prime/nth_prime_test.rb +0 -2
  134. data/tracks/ruby/exercises/ocr-numbers/ocr_numbers_test.rb +1 -2
  135. data/tracks/ruby/exercises/protein-translation/protein_translation_test.rb +0 -1
  136. data/tracks/ruby/exercises/proverb/proverb_test.rb +1 -3
  137. data/tracks/ruby/exercises/queen-attack/example.rb +3 -1
  138. data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +34 -8
  139. data/tracks/ruby/exercises/robot-simulator/robot_simulator_test.rb +1 -1
  140. data/tracks/ruby/exercises/strain/strain_test.rb +2 -2
  141. data/tracks/ruby/exercises/tournament/.version +1 -0
  142. data/tracks/ruby/exercises/tournament/example.rb +54 -0
  143. data/tracks/ruby/exercises/tournament/example.tt +23 -0
  144. data/tracks/ruby/exercises/tournament/tournament_test.rb +92 -0
  145. data/tracks/ruby/exercises/transpose/.version +1 -0
  146. data/tracks/ruby/exercises/transpose/example.rb +14 -0
  147. data/tracks/ruby/exercises/transpose/example.tt +22 -0
  148. data/tracks/ruby/exercises/transpose/transpose_test.rb +303 -0
  149. data/tracks/ruby/lib/bowling_cases.rb +46 -0
  150. data/tracks/ruby/lib/isogram_cases.rb +1 -1
  151. data/tracks/ruby/lib/tournament_cases.rb +45 -0
  152. data/tracks/ruby/lib/transpose_cases.rb +45 -0
  153. data/tracks/rust/config.json +2 -0
  154. data/tracks/rust/exercises/bowling/.gitignore +7 -0
  155. data/tracks/rust/exercises/bowling/Cargo.toml +3 -0
  156. data/tracks/rust/exercises/bowling/example.rs +134 -0
  157. data/tracks/rust/exercises/bowling/tests/bowling.rs +373 -0
  158. data/tracks/rust/exercises/grains/.gitignore +7 -0
  159. data/tracks/rust/exercises/grains/Cargo.toml +3 -0
  160. data/tracks/rust/exercises/grains/example.rs +11 -0
  161. data/tracks/rust/exercises/grains/src/lib.rs +7 -0
  162. data/tracks/rust/exercises/grains/tests/grains.rs +63 -0
  163. data/tracks/rust/problems.md +2 -0
  164. data/tracks/scala/README.md +38 -0
  165. data/tracks/scala/config.json +20 -74
  166. data/tracks/scala/exercises/accumulate/src/test/scala/accumulate_test.scala +4 -0
  167. data/tracks/scala/exercises/allergies/src/test/scala/allergies_test.scala +11 -0
  168. data/tracks/scala/exercises/alphametics/build.sbt +6 -0
  169. data/tracks/scala/exercises/alphametics/example.scala +125 -0
  170. data/tracks/scala/exercises/alphametics/src/main/scala/.keep +0 -0
  171. data/tracks/scala/exercises/alphametics/src/test/scala/AlphameticsTest.scala +62 -0
  172. data/tracks/scala/exercises/atbash-cipher/src/test/scala/atbash_test.scala +8 -0
  173. data/tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala +4 -0
  174. data/tracks/scala/exercises/binary/src/test/scala/binary_test.scala +13 -0
  175. data/tracks/scala/exercises/binary-search-tree/src/test/scala/BstTest.scala +11 -0
  176. data/tracks/scala/exercises/bowling/Example.scala +116 -0
  177. data/tracks/scala/exercises/bowling/build.sbt +3 -0
  178. data/tracks/scala/exercises/bowling/src/main/scala/Bowling.scala +11 -0
  179. data/tracks/scala/exercises/bowling/src/test/scala/BowlingSuite.scala +237 -0
  180. data/tracks/scala/exercises/clock/src/test/scala/ClockTest.scala +50 -0
  181. data/tracks/scala/exercises/connect/README.md +17 -0
  182. data/tracks/scala/exercises/connect/src/test/scala/ConnectTest.scala +7 -0
  183. data/tracks/scala/exercises/crypto-square/src/test/scala/{CrytpoSquareTest.scala → CryptoSquareTest.scala} +9 -0
  184. data/tracks/scala/exercises/custom-set/src/test/scala/CustomSetTest.scala +36 -0
  185. data/tracks/scala/exercises/difference-of-squares/src/test/scala/squares_test.scala +8 -0
  186. data/tracks/scala/exercises/forth/src/test/scala/ForthTest.scala +22 -0
  187. data/tracks/scala/exercises/hexadecimal/src/test/scala/HexadecimalTest.scala +8 -0
  188. data/tracks/scala/exercises/kindergarten-garden/src/test/scala/GardenTest.scala +5 -0
  189. data/tracks/scala/exercises/largest-series-product/src/test/scala/SeriesTest.scala +2 -0
  190. data/tracks/scala/exercises/linked-list/src/test/scala/DequeTest.scala +4 -0
  191. data/tracks/scala/exercises/luhn/src/test/scala/LuhnTest.scala +4 -0
  192. data/tracks/scala/exercises/matrix/src/test/scala/MatrixTest.scala +2 -0
  193. data/tracks/scala/exercises/minesweeper/src/test/scala/MinesweeperTest.scala +6 -0
  194. data/tracks/scala/exercises/nth-prime/src/test/scala/PrimeTest.scala +5 -0
  195. data/tracks/scala/exercises/ocr-numbers/src/test/scala/OcrTest.scala +15 -0
  196. data/tracks/scala/exercises/octal/src/test/scala/OctalTest.scala +7 -0
  197. data/tracks/scala/exercises/parallel-letter-frequency/src/test/scala/FrequencyTest.scala +8 -0
  198. data/tracks/scala/exercises/pascals-triangle/src/test/scala/PascalsTriangleTest.scala +5 -0
  199. data/tracks/scala/exercises/pig-latin/src/test/scala/PigLatinTest.scala +4 -0
  200. data/tracks/scala/exercises/pythagorean-triplet/src/test/scala/PythagoreanTripletTest.scala +3 -0
  201. data/tracks/scala/exercises/queen-attack/src/test/scala/QueensTest.scala +5 -0
  202. data/tracks/scala/exercises/robot-simulator/src/test/scala/RobotTest.scala +16 -8
  203. data/tracks/scala/exercises/say/src/test/scala/SayTest.scala +34 -17
  204. data/tracks/scala/exercises/scrabble-score/src/test/scala/scrabble_score_test.scala +6 -0
  205. data/tracks/scala/exercises/secret-handshake/src/test/scala/SecretHandshakeTest.scala +18 -9
  206. data/tracks/scala/exercises/series/src/test/scala/SeriesTest.scala +4 -2
  207. data/tracks/scala/exercises/sieve/src/test/scala/SieveTest.scala +8 -4
  208. data/tracks/scala/exercises/simple-cipher/src/test/scala/CipherTest.scala +17 -9
  209. data/tracks/scala/exercises/sublist/src/test/scala/sublist_test.scala +17 -0
  210. data/tracks/scala/exercises/trinary/src/test/scala/TrinaryTest.scala +14 -7
  211. data/tracks/scala/exercises/wordy/src/test/scala/WordProblemTest.scala +28 -14
  212. data/tracks/scala/project/Build.scala +3 -3
  213. data/tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala +57 -0
  214. data/tracks/sml/config.json +41 -6
  215. data/tracks/sml/exercises/flatten-array/example.sml +6 -0
  216. data/tracks/sml/exercises/flatten-array/test_flatten_array.sml +10 -0
  217. data/tracks/sml/exercises/nth-prime/example.sml +46 -0
  218. data/tracks/sml/exercises/nth-prime/test_nth_prime.sml +14 -0
  219. data/tracks/sml/exercises/raindrops/example.sml +9 -0
  220. data/tracks/sml/exercises/raindrops/raindrops.sml +2 -0
  221. data/tracks/sml/exercises/raindrops/test_raindrops.sml +95 -0
  222. data/tracks/swift/config.json +269 -328
  223. data/tracks/swift/exercises/pangram/PangramExample.swift +17 -0
  224. data/tracks/swift/exercises/pangram/PangramTest.swift +43 -0
  225. data/tracks/swift/xcodeProject/xSwift.xcodeproj/project.pbxproj +16 -0
  226. metadata +95 -3
@@ -8,58 +8,68 @@ class CustomSetTest extends FunSuite with Matchers {
8
8
  }
9
9
 
10
10
  test("sets with elements are not empty") {
11
+ pending
11
12
  val set = CustomSet.fromList(List(1))
12
13
  CustomSet.empty(set) should be (false)
13
14
  }
14
15
 
15
16
  // Contains test cases - Sets can report if they contain an element
16
17
  test("nothing is contained in an empty set") {
18
+ pending
17
19
  val set = CustomSet.fromList(List())
18
20
  CustomSet.member(set, 1) should be (false)
19
21
  }
20
22
 
21
23
  test("when the element is in the set") {
24
+ pending
22
25
  val set = CustomSet.fromList(List(1, 2, 3))
23
26
  CustomSet.member(set, 1) should be (true)
24
27
  }
25
28
 
26
29
  test("when the element is not in the set") {
30
+ pending
27
31
  val set = CustomSet.fromList(List(1, 2, 3))
28
32
  CustomSet.member(set, 4) should be (false)
29
33
  }
30
34
 
31
35
  // Subset test cases - A set is a subset if all of its elements are contained in the other set
32
36
  test("empty set is a subset of another empty set") {
37
+ pending
33
38
  val set1 = CustomSet.fromList(List())
34
39
  val set2 = CustomSet.fromList(List())
35
40
  CustomSet.isSubsetOf(set1, set2) should be (true)
36
41
  }
37
42
 
38
43
  test("empty set is a subset of non-empty set") {
44
+ pending
39
45
  val set1 = CustomSet.fromList(List())
40
46
  val set2 = CustomSet.fromList(List(1))
41
47
  CustomSet.isSubsetOf(set1, set2) should be (true)
42
48
  }
43
49
 
44
50
  test("non-empty set is not a subset of empty set") {
51
+ pending
45
52
  val set1 = CustomSet.fromList(List(1))
46
53
  val set2 = CustomSet.fromList(List())
47
54
  CustomSet.isSubsetOf(set1, set2) should be (false)
48
55
  }
49
56
 
50
57
  test("set is a subset of set with exact same elements") {
58
+ pending
51
59
  val set1 = CustomSet.fromList(List(1, 2, 3))
52
60
  val set2 = CustomSet.fromList(List(1, 2, 3))
53
61
  CustomSet.isSubsetOf(set1, set2) should be (true)
54
62
  }
55
63
 
56
64
  test("set is a subset of larger set with same elements") {
65
+ pending
57
66
  val set1 = CustomSet.fromList(List(1, 2, 3))
58
67
  val set2 = CustomSet.fromList(List(4, 1, 2, 3))
59
68
  CustomSet.isSubsetOf(set1, set2) should be (true)
60
69
  }
61
70
 
62
71
  test("set is not a subset of set that does not contain its elements") {
72
+ pending
63
73
  val set1 = CustomSet.fromList(List(1, 2, 3))
64
74
  val set2 = CustomSet.fromList(List(4, 1, 3))
65
75
  CustomSet.isSubsetOf(set1, set2) should be (false)
@@ -67,30 +77,35 @@ class CustomSetTest extends FunSuite with Matchers {
67
77
 
68
78
  // Disjoint test cases - Sets are disjoint if they share no elements
69
79
  test("the empty set is disjoint with itself") {
80
+ pending
70
81
  val set1 = CustomSet.fromList(List())
71
82
  val set2 = CustomSet.fromList(List())
72
83
  CustomSet.isDisjointFrom(set1, set2) should be (true)
73
84
  }
74
85
 
75
86
  test("empty set is disjoint with non-empty set") {
87
+ pending
76
88
  val set1 = CustomSet.fromList(List())
77
89
  val set2 = CustomSet.fromList(List(1))
78
90
  CustomSet.isDisjointFrom(set1, set2) should be (true)
79
91
  }
80
92
 
81
93
  test("non-empty set is disjoint with empty set") {
94
+ pending
82
95
  val set1 = CustomSet.fromList(List(1))
83
96
  val set2 = CustomSet.fromList(List())
84
97
  CustomSet.isDisjointFrom(set1, set2) should be (true)
85
98
  }
86
99
 
87
100
  test("sets are not disjoint if they share an element") {
101
+ pending
88
102
  val set1 = CustomSet.fromList(List(1, 2))
89
103
  val set2 = CustomSet.fromList(List(2, 3))
90
104
  CustomSet.isDisjointFrom(set1, set2) should be (false)
91
105
  }
92
106
 
93
107
  test("sets are disjoint if they share no elements") {
108
+ pending
94
109
  val set1 = CustomSet.fromList(List(1, 2))
95
110
  val set2 = CustomSet.fromList(List(3, 4))
96
111
  CustomSet.isDisjointFrom(set1, set2) should be (true)
@@ -98,30 +113,35 @@ class CustomSetTest extends FunSuite with Matchers {
98
113
 
99
114
  // Equal test cases - Sets with the same elements are equal
100
115
  test("empty sets are equal") {
116
+ pending
101
117
  val set1 = CustomSet.fromList(List())
102
118
  val set2 = CustomSet.fromList(List())
103
119
  CustomSet.isEqual(set1, set2) should be (true)
104
120
  }
105
121
 
106
122
  test("empty set is not equal to non-empty set") {
123
+ pending
107
124
  val set1 = CustomSet.fromList(List())
108
125
  val set2 = CustomSet.fromList(List(1, 2, 3))
109
126
  CustomSet.isEqual(set1, set2) should be (false)
110
127
  }
111
128
 
112
129
  test("non-empty set is not equal to empty set") {
130
+ pending
113
131
  val set1 = CustomSet.fromList(List(1, 2, 3))
114
132
  val set2 = CustomSet.fromList(List())
115
133
  CustomSet.isEqual(set1, set2) should be (false)
116
134
  }
117
135
 
118
136
  test("sets with the same elements are equal") {
137
+ pending
119
138
  val set1 = CustomSet.fromList(List(1, 2))
120
139
  val set2 = CustomSet.fromList(List(2, 1))
121
140
  CustomSet.isEqual(set1, set2) should be (true)
122
141
  }
123
142
 
124
143
  test("sets with different elements are not equal") {
144
+ pending
125
145
  val set1 = CustomSet.fromList(List(1, 2, 3))
126
146
  val set2 = CustomSet.fromList(List(1, 2, 4))
127
147
  CustomSet.isEqual(set1, set2) should be (false)
@@ -129,18 +149,21 @@ class CustomSetTest extends FunSuite with Matchers {
129
149
 
130
150
  // Add test cases - Unique elements can be added to a set
131
151
  test("add to empty set") {
152
+ pending
132
153
  val set = CustomSet.fromList(List())
133
154
  val expected = CustomSet.fromList(List(3))
134
155
  CustomSet.isEqual(CustomSet.insert(set, 3 ), expected) should be (true)
135
156
  }
136
157
 
137
158
  test("add to non-empty set") {
159
+ pending
138
160
  val set = CustomSet.fromList(List(1, 2, 4))
139
161
  val expected = CustomSet.fromList(List(1, 2, 3, 4))
140
162
  CustomSet.isEqual(CustomSet.insert(set, 3 ), expected) should be (true)
141
163
  }
142
164
 
143
165
  test("adding an existing element does not change the set") {
166
+ pending
144
167
  val set = CustomSet.fromList(List(1, 2, 3))
145
168
  val expected = CustomSet.fromList(List(1, 2, 3))
146
169
  CustomSet.isEqual(CustomSet.insert(set, 3 ), expected) should be (true)
@@ -148,6 +171,7 @@ class CustomSetTest extends FunSuite with Matchers {
148
171
 
149
172
  // Intersection test cases - Intersect returns a set of all shared elements
150
173
  test("intersection of two empty sets is an empty set") {
174
+ pending
151
175
  val set1 = CustomSet.fromList(List())
152
176
  val set2 = CustomSet.fromList(List())
153
177
  val expected = CustomSet.fromList(List())
@@ -155,6 +179,7 @@ class CustomSetTest extends FunSuite with Matchers {
155
179
  }
156
180
 
157
181
  test("intersection of an empty set and non-empty set is an empty set") {
182
+ pending
158
183
  val set1 = CustomSet.fromList(List())
159
184
  val set2 = CustomSet.fromList(List(3, 2, 5))
160
185
  val expected = CustomSet.fromList(List())
@@ -162,6 +187,7 @@ class CustomSetTest extends FunSuite with Matchers {
162
187
  }
163
188
 
164
189
  test("intersection of a non-empty set and an empty set is an empty set") {
190
+ pending
165
191
  val set1 = CustomSet.fromList(List(1, 2, 3, 4))
166
192
  val set2 = CustomSet.fromList(List())
167
193
  val expected = CustomSet.fromList(List())
@@ -169,6 +195,7 @@ class CustomSetTest extends FunSuite with Matchers {
169
195
  }
170
196
 
171
197
  test("intersection of two sets with no shared elements is an empty set") {
198
+ pending
172
199
  val set1 = CustomSet.fromList(List(1, 2, 3))
173
200
  val set2 = CustomSet.fromList(List(4, 5, 6))
174
201
  val expected = CustomSet.fromList(List())
@@ -176,6 +203,7 @@ class CustomSetTest extends FunSuite with Matchers {
176
203
  }
177
204
 
178
205
  test("intersection of two sets with shared elements is a set of the shared elements") {
206
+ pending
179
207
  val set1 = CustomSet.fromList(List(1, 2, 3, 4))
180
208
  val set2 = CustomSet.fromList(List(3, 2, 5))
181
209
  val expected = CustomSet.fromList(List(2, 3))
@@ -184,6 +212,7 @@ class CustomSetTest extends FunSuite with Matchers {
184
212
 
185
213
  // Difference test cases - Difference (or Complement) of a set is a set of all elements that are only in the first set
186
214
  test("difference of two empty sets is an empty set") {
215
+ pending
187
216
  val set1 = CustomSet.fromList(List())
188
217
  val set2 = CustomSet.fromList(List())
189
218
  val expected = CustomSet.fromList(List())
@@ -191,6 +220,7 @@ class CustomSetTest extends FunSuite with Matchers {
191
220
  }
192
221
 
193
222
  test("difference of empty set and non-empty set is an empty set") {
223
+ pending
194
224
  val set1 = CustomSet.fromList(List())
195
225
  val set2 = CustomSet.fromList(List(3, 2, 5))
196
226
  val expected = CustomSet.fromList(List())
@@ -198,6 +228,7 @@ class CustomSetTest extends FunSuite with Matchers {
198
228
  }
199
229
 
200
230
  test("difference of a non-empty set and an empty set is the non-empty set") {
231
+ pending
201
232
  val set1 = CustomSet.fromList(List(1, 2, 3, 4))
202
233
  val set2 = CustomSet.fromList(List())
203
234
  val expected = CustomSet.fromList(List(1, 2, 3, 4))
@@ -205,6 +236,7 @@ class CustomSetTest extends FunSuite with Matchers {
205
236
  }
206
237
 
207
238
  test("difference of two non-empty sets is a set of elements that are only in the first set") {
239
+ pending
208
240
  val set1 = CustomSet.fromList(List(3, 2, 1))
209
241
  val set2 = CustomSet.fromList(List(2, 4))
210
242
  val expected = CustomSet.fromList(List(1, 3))
@@ -213,6 +245,7 @@ class CustomSetTest extends FunSuite with Matchers {
213
245
 
214
246
  // Union test cases - Union returns a set of all elements in either set
215
247
  test("union of empty sets is an empty set") {
248
+ pending
216
249
  val set1 = CustomSet.fromList(List())
217
250
  val set2 = CustomSet.fromList(List())
218
251
  val expected = CustomSet.fromList(List())
@@ -220,6 +253,7 @@ class CustomSetTest extends FunSuite with Matchers {
220
253
  }
221
254
 
222
255
  test("union of an empty set and non-empty set is the non-empty set") {
256
+ pending
223
257
  val set1 = CustomSet.fromList(List())
224
258
  val set2 = CustomSet.fromList(List(2))
225
259
  val expected = CustomSet.fromList(List(2))
@@ -227,6 +261,7 @@ class CustomSetTest extends FunSuite with Matchers {
227
261
  }
228
262
 
229
263
  test("union of a non-empty set and empty set is the non-empty set") {
264
+ pending
230
265
  val set1 = CustomSet.fromList(List(1, 3))
231
266
  val set2 = CustomSet.fromList(List())
232
267
  val expected = CustomSet.fromList(List(1, 3))
@@ -234,6 +269,7 @@ class CustomSetTest extends FunSuite with Matchers {
234
269
  }
235
270
 
236
271
  test("union of non-empty sets contains all unique elements") {
272
+ pending
237
273
  val set1 = CustomSet.fromList(List(1, 3))
238
274
  val set2 = CustomSet.fromList(List(2, 3))
239
275
  val expected = CustomSet.fromList(List(3, 2, 1))
@@ -7,41 +7,49 @@ class SquaresTest extends FlatSpec with Matchers {
7
7
  }
8
8
 
9
9
  it should "calc sum of squares to 5" in {
10
+ pending
10
11
  val result = Squares().sumOfSquares(5)
11
12
  result should equal (55)
12
13
  }
13
14
 
14
15
  it should "calc difference of sums to 5" in {
16
+ pending
15
17
  val result = Squares().difference(5)
16
18
  result should equal (170)
17
19
  }
18
20
 
19
21
  it should "calc square of sums to 10" in {
22
+ pending
20
23
  val result = Squares().squareOfSums(10)
21
24
  result should equal (3025)
22
25
  }
23
26
 
24
27
  it should "calc sum of squares to 10" in {
28
+ pending
25
29
  val result = Squares().sumOfSquares(10)
26
30
  result should equal (385)
27
31
  }
28
32
 
29
33
  it should "calc difference of sums to 10" in {
34
+ pending
30
35
  val result = Squares().difference(10)
31
36
  result should equal (2640)
32
37
  }
33
38
 
34
39
  it should "calc square of sums to 100" in {
40
+ pending
35
41
  val result = Squares().squareOfSums(100)
36
42
  result should equal (25502500)
37
43
  }
38
44
 
39
45
  it should "calc sum of squares to 100" in {
46
+ pending
40
47
  val result = Squares().sumOfSquares(100)
41
48
  result should equal (338350)
42
49
  }
43
50
 
44
51
  it should "calc difference of sums to 100" in {
52
+ pending
45
53
  val result = Squares().difference(100)
46
54
  result should equal (25164150)
47
55
  }
@@ -11,6 +11,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
11
11
  }
12
12
 
13
13
  "numbers" should "just get pushed onto the stack" in {
14
+ pending
14
15
  forth.eval("1 2 3 4 5") match {
15
16
  case Right(state) => state.toString should equal("1 2 3 4 5")
16
17
  case Left(error) => fail("error pushing numbers on stack - " + error)
@@ -18,6 +19,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
18
19
  }
19
20
 
20
21
  "non-word characters" should "be handled as separators" in {
22
+ pending
21
23
  // Note the Ogham Space Mark ( ), this is a spacing character.
22
24
  // Also note that if Regex is used for your solution then handling
23
25
  // Unicode requires and additional flag in the Regex string "(?U)".
@@ -28,6 +30,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
28
30
  }
29
31
 
30
32
  "basic arithmetic" should "evaluate" in {
33
+ pending
31
34
  forth.eval("1 2 + 4 -") match {
32
35
  case Right(state) => state.toString should equal("-1")
33
36
  case Left(error) => fail("error handling basic arithmetic - " + error)
@@ -35,6 +38,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
35
38
  }
36
39
 
37
40
  "basic mul/div" should "evaluate" in {
41
+ pending
38
42
  forth.eval("2 4 * 3 /") match {
39
43
  case Right(state) => state.toString should equal("2")
40
44
  case Left(error) => fail("error handling basic mul/div - " + error)
@@ -42,6 +46,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
42
46
  }
43
47
 
44
48
  "division by zero" should "return error" in {
49
+ pending
45
50
  forth.eval("4 2 2 - /") match {
46
51
  case Right(state) => fail("division by zero should return error")
47
52
  case Left(error) => error should equal(ForthError.DivisionByZero)
@@ -49,6 +54,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
49
54
  }
50
55
 
51
56
  "dup" should "dupe the top of the stack" in {
57
+ pending
52
58
  forth.eval("1 DUP") match {
53
59
  case Right(state) => state.toString should equal("1 1")
54
60
  case Left(error) => fail("error handling dup - " + error)
@@ -61,6 +67,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
61
67
  }
62
68
 
63
69
  "dup on empty stack" should "result in error" in {
70
+ pending
64
71
  forth.eval("dup") match {
65
72
  case Right(state) => fail("dup on empty stack should return error")
66
73
  case Left(error) => error should equal(ForthError.StackUnderflow)
@@ -68,6 +75,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
68
75
  }
69
76
 
70
77
  "drop" should "remove an item from the stack" in {
78
+ pending
71
79
  forth.eval("1 2 drop") match {
72
80
  case Right(state) => state.toString should equal("1")
73
81
  case Left(error) => fail("error handling drop - " + error)
@@ -75,6 +83,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
75
83
  }
76
84
 
77
85
  "drop on 1 item stack" should "result in empty" in {
86
+ pending
78
87
  forth.eval("1 drop") match {
79
88
  case Right(state) => state.toString should equal("")
80
89
  case Left(error) => fail("error handling drop on 1 item stack - " + error)
@@ -82,6 +91,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
82
91
  }
83
92
 
84
93
  "drop on empty stack" should "result in error" in {
94
+ pending
85
95
  forth.eval("drop") match {
86
96
  case Right(state) => fail("drop on empty stack should return error")
87
97
  case Left(error) => error should equal(ForthError.StackUnderflow)
@@ -89,6 +99,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
89
99
  }
90
100
 
91
101
  "swap" should "swap the top of the stack" in {
102
+ pending
92
103
  forth.eval("1 2 swap") match {
93
104
  case Right(state) => state.toString should equal("2 1")
94
105
  case Left(error) => fail("error handling swap - " + error)
@@ -101,6 +112,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
101
112
  }
102
113
 
103
114
  "swap on empty" should "result in error" in {
115
+ pending
104
116
  forth.eval("swap") match {
105
117
  case Right(state) => fail("swap on empty stack should return error")
106
118
  case Left(error) => error should equal(ForthError.StackUnderflow)
@@ -108,6 +120,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
108
120
  }
109
121
 
110
122
  "swap on single item stack" should "result in error" in {
123
+ pending
111
124
  forth.eval("1 swap") match {
112
125
  case Right(state) => fail("swap on single item stack should return error")
113
126
  case Left(error) => error should equal(ForthError.StackUnderflow)
@@ -115,6 +128,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
115
128
  }
116
129
 
117
130
  "over" should "dupe second item in stack" in {
131
+ pending
118
132
  forth.eval("1 2 over") match {
119
133
  case Right(state) => state.toString should equal("1 2 1")
120
134
  case Left(error) => fail("error handling over - " + error)
@@ -127,6 +141,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
127
141
  }
128
142
 
129
143
  "over on empty" should "result in error" in {
144
+ pending
130
145
  forth.eval("over") match {
131
146
  case Right(state) => fail("over on empty stack should return error")
132
147
  case Left(error) => error should equal(ForthError.StackUnderflow)
@@ -134,6 +149,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
134
149
  }
135
150
 
136
151
  "over on single item stack" should "result in error" in {
152
+ pending
137
153
  forth.eval("1 over") match {
138
154
  case Right(state) => fail("over on single item stack should return error")
139
155
  case Left(error) => error should equal(ForthError.StackUnderflow)
@@ -141,6 +157,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
141
157
  }
142
158
 
143
159
  "define a new word and usage" should "result in stack update" in {
160
+ pending
144
161
  forth.eval(": dupe-twice dup dup ;\r 1 dupe-twice") match {
145
162
  case Right(state) => state.toString should equal("1 1 1")
146
163
  case Left(error) => fail("error handling define new word and use - " + error)
@@ -148,6 +165,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
148
165
  }
149
166
 
150
167
  "redefine an existing word and usage" should "result in stack update" in {
168
+ pending
151
169
  forth.eval(": foo dup ;\r: foo dup dup ;\n1 foo") match {
152
170
  case Right(state) => state.toString should equal("1 1 1")
153
171
  case Left(error) => fail("error handling redefine word and use - " + error)
@@ -155,6 +173,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
155
173
  }
156
174
 
157
175
  "define a built in word" should "result in stack update using redefinition" in {
176
+ pending
158
177
  forth.eval(": swap dup ;\r 1 swap") match {
159
178
  case Right(state) => state.toString should equal("1 1")
160
179
  case Left(error) => fail("error handling redefining built in word and use - " + error)
@@ -162,6 +181,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
162
181
  }
163
182
 
164
183
  "defining a word with odd chars" should "update the stack" in {
184
+ pending
165
185
  forth.eval(": €A 220371 ; €A") match {
166
186
  case Right(state) => state.toString should equal("220371")
167
187
  case Left(error) => fail("error handling word definition with odd chars - " + error)
@@ -169,6 +189,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
169
189
  }
170
190
 
171
191
  "defining a number" should "result in an error" in {
192
+ pending
172
193
  forth.eval(": 1 2 ;") match {
173
194
  case Right(state) => fail("defining a new word using a number should result in an error")
174
195
  case Left(error) => error should equal(ForthError.InvalidWord)
@@ -176,6 +197,7 @@ class ForthTest extends FlatSpec with Matchers with EitherValues {
176
197
  }
177
198
 
178
199
  "calling a non-existent word" should "result in an error" in {
200
+ pending
179
201
  forth.eval("1 foo") match {
180
202
  case Right(state) => fail("calling a non-existent word should result in an error")
181
203
  case Left(error) => error should equal(ForthError.InvalidWord)
@@ -6,36 +6,44 @@ class HexadecimalTest extends FlatSpec with Matchers {
6
6
  }
7
7
 
8
8
  it should "handle zeros" in {
9
+ pending
9
10
  Hexadecimal.hexToInt("00000000") should equal(0)
10
11
  }
11
12
 
12
13
  it should "handle single digit" in {
14
+ pending
13
15
  Hexadecimal.hexToInt("1") should equal(1)
14
16
  }
15
17
 
16
18
  it should "handle single hex digit" in {
19
+ pending
17
20
  Hexadecimal.hexToInt("c") should equal(12)
18
21
  }
19
22
 
20
23
  it should "handle upper case" in {
24
+ pending
21
25
  Hexadecimal.hexToInt("C") should equal(12)
22
26
  }
23
27
 
24
28
  it should "handle multiple digits" in {
29
+ pending
25
30
  Hexadecimal.hexToInt("10") should equal(16)
26
31
  }
27
32
 
28
33
  it should "handle multiple hex digits" in {
34
+ pending
29
35
  Hexadecimal.hexToInt("AF") should equal(175)
30
36
  }
31
37
 
32
38
  it should "handle complex strings" in {
39
+ pending
33
40
  Hexadecimal.hexToInt("19ace") should equal(105166)
34
41
  Hexadecimal.hexToInt("ffffff") should equal(16777215)
35
42
  Hexadecimal.hexToInt("ffff00") should equal(16776960)
36
43
  }
37
44
 
38
45
  it should "handle invalid strings" in {
46
+ pending
39
47
  Hexadecimal.hexToInt("carrot") should equal(0)
40
48
  Hexadecimal.hexToInt("abczcba") should equal(0)
41
49
  }
@@ -7,6 +7,7 @@ class GardenTest extends FunSuite with Matchers {
7
7
  }
8
8
 
9
9
  test("alice tests") {
10
+ pending
10
11
  Garden.defaultGarden("RC\nGG").getPlants("Alice") should
11
12
  equal(List(Plant.Radishes, Plant.Clover, Plant.Grass, Plant.Grass))
12
13
  Garden.defaultGarden("VC\nRC").getPlants("Alice") should
@@ -14,11 +15,13 @@ class GardenTest extends FunSuite with Matchers {
14
15
  }
15
16
 
16
17
  test("small garden") {
18
+ pending
17
19
  Garden.defaultGarden("VVCG\nVVRC").getPlants("Bob") should
18
20
  equal(List(Plant.Clover, Plant.Grass, Plant.Radishes, Plant.Clover))
19
21
  }
20
22
 
21
23
  test("medium garden") {
24
+ pending
22
25
  val garden = Garden.defaultGarden("VVCCGG\nVVCCGG")
23
26
  garden.getPlants("Bob") should
24
27
  equal(List(Plant.Clover, Plant.Clover, Plant.Clover, Plant.Clover))
@@ -27,6 +30,7 @@ class GardenTest extends FunSuite with Matchers {
27
30
  }
28
31
 
29
32
  test("full garden") {
33
+ pending
30
34
  val garden = Garden.defaultGarden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV")
31
35
  garden.getPlants("Alice") should
32
36
  equal(List(Plant.Violets, Plant.Radishes, Plant.Violets, Plant.Radishes))
@@ -53,6 +57,7 @@ class GardenTest extends FunSuite with Matchers {
53
57
  }
54
58
 
55
59
  test("surprise garden") {
60
+ pending
56
61
  val garden = Garden(List("Samantha", "Patricia", "Xander", "Roger"), "VCRRGVRG\nRVGCCGCV")
57
62
  garden.getPlants("Patricia") should
58
63
  equal(List(Plant.Violets, Plant.Clover, Plant.Radishes, Plant.Violets))
@@ -10,6 +10,7 @@ class SeriesTest extends FlatSpec with Matchers {
10
10
  }
11
11
 
12
12
  it should "find largestProduct in long strings" in {
13
+ pending
13
14
  Series.largestProduct(6,
14
15
  "73167176531330624919225119674426574742355349194934") should equal(Some(23520))
15
16
  Series.largestProduct(6,
@@ -17,6 +18,7 @@ class SeriesTest extends FlatSpec with Matchers {
17
18
  }
18
19
 
19
20
  it should "find largestProduct boundary conditions" in {
21
+ pending
20
22
  Series.largestProduct(0, "") should equal(Some(1))
21
23
  Series.largestProduct(0, "123") should equal(Some(1))
22
24
  Series.largestProduct(1, "") should equal(None)
@@ -12,6 +12,7 @@ class DequeTest extends FlatSpec with Matchers {
12
12
  }
13
13
 
14
14
  it should "handle push then shift" in {
15
+ pending
15
16
  val deque = Deque[Char]()
16
17
  deque.push('a')
17
18
  deque.push('b')
@@ -21,6 +22,7 @@ class DequeTest extends FlatSpec with Matchers {
21
22
  }
22
23
 
23
24
  it should "handle unshift then shift" in {
25
+ pending
24
26
  val deque = Deque[Char]()
25
27
  deque.unshift('a')
26
28
  deque.unshift('b')
@@ -29,6 +31,7 @@ class DequeTest extends FlatSpec with Matchers {
29
31
  }
30
32
 
31
33
  it should "handle unshift then pop" in {
34
+ pending
32
35
  val deque = Deque[Char]()
33
36
  deque.unshift('a')
34
37
  deque.unshift('b')
@@ -37,6 +40,7 @@ class DequeTest extends FlatSpec with Matchers {
37
40
  }
38
41
 
39
42
  it should "handle complex interaction" in {
43
+ pending
40
44
  val deque = Deque[Int]()
41
45
  deque.push(1)
42
46
  deque.push(2)
@@ -8,11 +8,13 @@ class LuhnTest extends FlatSpec with Matchers {
8
8
  }
9
9
 
10
10
  it should "create addends" in {
11
+ pending
11
12
  Luhn(12121).addends should equal(List(1, 4, 1, 4, 1))
12
13
  Luhn(8631).addends should equal(List(7, 6, 6, 1))
13
14
  }
14
15
 
15
16
  it should "create checksum" in {
17
+ pending
16
18
  // NOTE: this differs from the ruby and js, the checksum really should
17
19
  // be mod 10 like we are testing here.
18
20
  Luhn(4913).checksum should equal(2)
@@ -20,11 +22,13 @@ class LuhnTest extends FlatSpec with Matchers {
20
22
  }
21
23
 
22
24
  it should "check validity" in {
25
+ pending
23
26
  Luhn(738).isValid should be (false)
24
27
  Luhn(8739567).isValid should be (true)
25
28
  }
26
29
 
27
30
  it should "create luhn values" in {
31
+ pending
28
32
  Luhn(123).create should be (1230)
29
33
  Luhn(873956).create should be (8739567)
30
34
  Luhn(837263756).create should be (8372637564L)
@@ -7,11 +7,13 @@ class MatrixTest extends FlatSpec with Matchers {
7
7
  }
8
8
 
9
9
  it should "extract a col" in {
10
+ pending
10
11
  Matrix("1 2\n10 20").cols(0) should be (Vector(1, 10))
11
12
  Matrix("1 2\n10 20\n100 200").cols(1) should be (Vector(2, 20, 200))
12
13
  }
13
14
 
14
15
  it should "support equality" in {
16
+ pending
15
17
  Matrix("1 2\n10 20") should be (Matrix("1 2\n10 20"))
16
18
  Matrix("1 2\n10 20") should not be Matrix("20 10\n100 200")
17
19
  }