trackler 2.0.0.1 → 2.0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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
  }