trackler 2.0.0.2 → 2.0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (197) hide show
  1. checksums.yaml +4 -4
  2. data/common/exercises/forth/canonical-data.json +1 -1
  3. data/common/exercises/pangram/canonical-data.json +0 -10
  4. data/common/exercises/run-length-encoding/canonical-data.json +21 -11
  5. data/lib/trackler/version.rb +1 -1
  6. data/tracks/bash/SETUP.md +2 -39
  7. data/tracks/bash/config.json +0 -9
  8. data/tracks/bash/exercises/hello-world/HINTS.md +38 -0
  9. data/tracks/bash/exercises/hello-world/hello_world_test.sh +0 -14
  10. data/tracks/haskell/.travis.yml +2 -13
  11. data/tracks/haskell/README.md +2 -1
  12. data/tracks/haskell/config.json +6 -0
  13. data/tracks/haskell/exercises/accumulate/examples/success-standard/package.yaml +16 -0
  14. data/tracks/haskell/exercises/accumulate/{src/Example.hs → examples/success-standard/src/Accumulate.hs} +0 -0
  15. data/tracks/haskell/exercises/all-your-base/examples/success-standard/package.yaml +16 -0
  16. data/tracks/haskell/exercises/all-your-base/{src/Example.hs → examples/success-standard/src/Base.hs} +0 -0
  17. data/tracks/haskell/exercises/allergies/examples/success-standard/package.yaml +16 -0
  18. data/tracks/haskell/exercises/allergies/{src/Example.hs → examples/success-standard/src/Allergies.hs} +0 -0
  19. data/tracks/haskell/exercises/alphametics/HINTS.md +5 -0
  20. data/tracks/haskell/exercises/alphametics/examples/success-standard/package.yaml +18 -0
  21. data/tracks/haskell/exercises/alphametics/examples/success-standard/src/Alphametics.hs +116 -0
  22. data/tracks/haskell/exercises/alphametics/package.yaml +20 -0
  23. data/tracks/haskell/exercises/alphametics/src/Alphametics.hs +4 -0
  24. data/tracks/haskell/exercises/alphametics/stack.yaml +1 -0
  25. data/tracks/haskell/exercises/alphametics/test/Tests.hs +78 -0
  26. data/tracks/haskell/exercises/anagram/examples/{list-string → success-liststring}/package.yaml +0 -1
  27. data/tracks/haskell/exercises/anagram/examples/{list-string → success-liststring/src}/Anagram.hs +0 -0
  28. data/tracks/haskell/exercises/anagram/examples/{set-text → success-settext}/package.yaml +0 -0
  29. data/tracks/haskell/exercises/anagram/examples/{set-text → success-settext/src}/Anagram.hs +0 -0
  30. data/tracks/haskell/exercises/atbash-cipher/examples/success-standard/package.yaml +18 -0
  31. data/tracks/haskell/exercises/atbash-cipher/{src/Example.hs → examples/success-standard/src/Atbash.hs} +0 -0
  32. data/tracks/haskell/exercises/bank-account/examples/success-standard/package.yaml +18 -0
  33. data/tracks/haskell/exercises/bank-account/{src/Example.hs → examples/success-standard/src/BankAccount.hs} +0 -0
  34. data/tracks/haskell/exercises/beer-song/examples/success-standard/package.yaml +16 -0
  35. data/tracks/haskell/exercises/beer-song/{src/Example.hs → examples/success-standard/src/Beer.hs} +0 -0
  36. data/tracks/haskell/exercises/binary-search-tree/examples/success-standard/package.yaml +16 -0
  37. data/tracks/haskell/exercises/binary-search-tree/{src/Example.hs → examples/success-standard/src/BST.hs} +0 -0
  38. data/tracks/haskell/exercises/binary/examples/success-standard/package.yaml +16 -0
  39. data/tracks/haskell/exercises/binary/{src/Example.hs → examples/success-standard/src/Binary.hs} +0 -0
  40. data/tracks/haskell/exercises/bob/examples/success-standard/package.yaml +16 -0
  41. data/tracks/haskell/exercises/bob/{src/Example.hs → examples/success-standard/src/Bob.hs} +0 -0
  42. data/tracks/haskell/exercises/change/examples/success-standard/package.yaml +16 -0
  43. data/tracks/haskell/exercises/change/{src/Example.hs → examples/success-standard/src/Change.hs} +0 -0
  44. data/tracks/haskell/exercises/clock/examples/success-standard/package.yaml +16 -0
  45. data/tracks/haskell/exercises/clock/{src/Example.hs → examples/success-standard/src/Clock.hs} +0 -0
  46. data/tracks/haskell/exercises/connect/examples/success-standard/package.yaml +18 -0
  47. data/tracks/haskell/exercises/connect/{src/Example.hs → examples/success-standard/src/Connect.hs} +0 -0
  48. data/tracks/haskell/exercises/crypto-square/examples/success-standard/package.yaml +18 -0
  49. data/tracks/haskell/exercises/crypto-square/{src/Example.hs → examples/success-standard/src/CryptoSquare.hs} +0 -0
  50. data/tracks/haskell/exercises/custom-set/examples/success-standard/package.yaml +16 -0
  51. data/tracks/haskell/exercises/custom-set/{src/Example.hs → examples/success-standard/src/CustomSet.hs} +0 -0
  52. data/tracks/haskell/exercises/difference-of-squares/examples/success-standard/package.yaml +16 -0
  53. data/tracks/haskell/exercises/difference-of-squares/{src/Example.hs → examples/success-standard/src/Squares.hs} +0 -0
  54. data/tracks/haskell/exercises/etl/examples/success-standard/package.yaml +17 -0
  55. data/tracks/haskell/exercises/etl/{src/Example.hs → examples/success-standard/src/ETL.hs} +0 -0
  56. data/tracks/haskell/exercises/food-chain/examples/success-standard/package.yaml +18 -0
  57. data/tracks/haskell/exercises/food-chain/{src/Example.hs → examples/success-standard/src/FoodChain.hs} +0 -0
  58. data/tracks/haskell/exercises/forth/HINTS.md +2 -2
  59. data/tracks/haskell/exercises/forth/examples/success-standard/package.yaml +19 -0
  60. data/tracks/haskell/exercises/forth/{src/Example.hs → examples/success-standard/src/Forth.hs} +3 -3
  61. data/tracks/haskell/exercises/forth/package.yaml +0 -1
  62. data/tracks/haskell/exercises/forth/src/Forth.hs +3 -3
  63. data/tracks/haskell/exercises/forth/test/Tests.hs +120 -65
  64. data/tracks/haskell/exercises/gigasecond/examples/success-standard/package.yaml +17 -0
  65. data/tracks/haskell/exercises/gigasecond/{src/Example.hs → examples/success-standard/src/Gigasecond.hs} +0 -0
  66. data/tracks/haskell/exercises/go-counting/examples/success-standard/package.yaml +20 -0
  67. data/tracks/haskell/exercises/go-counting/{src/Example.hs → examples/success-standard/src/Counting.hs} +0 -0
  68. data/tracks/haskell/exercises/grade-school/examples/success-standard/package.yaml +18 -0
  69. data/tracks/haskell/exercises/grade-school/{src/Example.hs → examples/success-standard/src/School.hs} +0 -0
  70. data/tracks/haskell/exercises/grains/examples/success-standard/package.yaml +16 -0
  71. data/tracks/haskell/exercises/grains/{src/Example.hs → examples/success-standard/src/Grains.hs} +0 -0
  72. data/tracks/haskell/exercises/grains/test/Tests.hs +1 -2
  73. data/tracks/haskell/exercises/hamming/examples/success-standard/package.yaml +16 -0
  74. data/tracks/haskell/exercises/hamming/{src/Example.hs → examples/success-standard/src/Hamming.hs} +0 -0
  75. data/tracks/haskell/exercises/hexadecimal/examples/success-standard/package.yaml +16 -0
  76. data/tracks/haskell/exercises/hexadecimal/{src/Example.hs → examples/success-standard/src/Hexadecimal.hs} +0 -0
  77. data/tracks/haskell/exercises/house/examples/success-standard/package.yaml +16 -0
  78. data/tracks/haskell/exercises/house/{src/Example.hs → examples/success-standard/src/House.hs} +0 -0
  79. data/tracks/haskell/exercises/kindergarten-garden/examples/success-standard/package.yaml +19 -0
  80. data/tracks/haskell/exercises/kindergarten-garden/{src/Example.hs → examples/success-standard/src/Garden.hs} +0 -0
  81. data/tracks/haskell/exercises/largest-series-product/examples/success-standard/package.yaml +18 -0
  82. data/tracks/haskell/exercises/largest-series-product/{src/Example.hs → examples/success-standard/src/Series.hs} +0 -0
  83. data/tracks/haskell/exercises/leap/examples/success-standard/package.yaml +16 -0
  84. data/tracks/haskell/exercises/leap/{src/Example.hs → examples/success-standard/src/LeapYear.hs} +0 -0
  85. data/tracks/haskell/exercises/lens-person/examples/success-standard/package.yaml +19 -0
  86. data/tracks/haskell/exercises/lens-person/{src/Example.hs → examples/success-standard/src/Person.hs} +0 -0
  87. data/tracks/haskell/exercises/linked-list/examples/success-standard/package.yaml +18 -0
  88. data/tracks/haskell/exercises/linked-list/{src/Example.hs → examples/success-standard/src/Deque.hs} +0 -0
  89. data/tracks/haskell/exercises/list-ops/examples/success-standard/package.yaml +16 -0
  90. data/tracks/haskell/exercises/list-ops/{src/Example.hs → examples/success-standard/src/ListOps.hs} +0 -0
  91. data/tracks/haskell/exercises/luhn/examples/success-standard/package.yaml +16 -0
  92. data/tracks/haskell/exercises/luhn/{src/Example.hs → examples/success-standard/src/Luhn.hs} +0 -0
  93. data/tracks/haskell/exercises/matrix/examples/success-standard/package.yaml +17 -0
  94. data/tracks/haskell/exercises/matrix/{src/Example.hs → examples/success-standard/src/Matrix.hs} +0 -0
  95. data/tracks/haskell/exercises/meetup/examples/success-standard/package.yaml +17 -0
  96. data/tracks/haskell/exercises/meetup/{src/Example.hs → examples/success-standard/src/Meetup.hs} +0 -0
  97. data/tracks/haskell/exercises/minesweeper/examples/success-standard/package.yaml +16 -0
  98. data/tracks/haskell/exercises/minesweeper/{src/Example.hs → examples/success-standard/src/Minesweeper.hs} +0 -0
  99. data/tracks/haskell/exercises/nth-prime/examples/success-standard/package.yaml +16 -0
  100. data/tracks/haskell/exercises/nth-prime/{src/Example.hs → examples/success-standard/src/Prime.hs} +0 -0
  101. data/tracks/haskell/exercises/nucleotide-count/examples/success-standard/package.yaml +17 -0
  102. data/tracks/haskell/exercises/nucleotide-count/{src/Example.hs → examples/success-standard/src/DNA.hs} +0 -0
  103. data/tracks/haskell/exercises/ocr-numbers/examples/success-standard/package.yaml +19 -0
  104. data/tracks/haskell/exercises/ocr-numbers/{src/Example.hs → examples/success-standard/src/OCR.hs} +0 -0
  105. data/tracks/haskell/exercises/octal/examples/success-standard/package.yaml +17 -0
  106. data/tracks/haskell/exercises/octal/{src/Example.hs → examples/success-standard/src/Octal.hs} +0 -0
  107. data/tracks/haskell/exercises/palindrome-products/examples/success-standard/package.yaml +16 -0
  108. data/tracks/haskell/exercises/palindrome-products/{src/Example.hs → examples/success-standard/src/Palindromes.hs} +0 -0
  109. data/tracks/haskell/exercises/parallel-letter-frequency/examples/success-standard/package.yaml +20 -0
  110. data/tracks/haskell/exercises/parallel-letter-frequency/{src/Example.hs → examples/success-standard/src/Frequency.hs} +0 -0
  111. data/tracks/haskell/exercises/pascals-triangle/examples/success-standard/package.yaml +16 -0
  112. data/tracks/haskell/exercises/pascals-triangle/{src/Example.hs → examples/success-standard/src/Triangle.hs} +0 -0
  113. data/tracks/haskell/exercises/phone-number/examples/success-standard/package.yaml +16 -0
  114. data/tracks/haskell/exercises/phone-number/{src/Example.hs → examples/success-standard/src/Phone.hs} +0 -0
  115. data/tracks/haskell/exercises/pig-latin/examples/success-standard/package.yaml +16 -0
  116. data/tracks/haskell/exercises/pig-latin/{src/Example.hs → examples/success-standard/src/PigLatin.hs} +0 -0
  117. data/tracks/haskell/exercises/pig-latin/test/Tests.hs +2 -1
  118. data/tracks/haskell/exercises/pov/examples/success-standard/package.yaml +17 -0
  119. data/tracks/haskell/exercises/pov/{src/Example.hs → examples/success-standard/src/POV.hs} +0 -0
  120. data/tracks/haskell/exercises/pov/test/Tests.hs +34 -8
  121. data/tracks/haskell/exercises/prime-factors/examples/success-standard/package.yaml +16 -0
  122. data/tracks/haskell/exercises/prime-factors/{src/Example.hs → examples/success-standard/src/PrimeFactors.hs} +0 -0
  123. data/tracks/haskell/exercises/pythagorean-triplet/examples/success-standard/package.yaml +16 -0
  124. data/tracks/haskell/exercises/pythagorean-triplet/{src/Example.hs → examples/success-standard/src/Triplet.hs} +0 -0
  125. data/tracks/haskell/exercises/queen-attack/examples/success-standard/package.yaml +16 -0
  126. data/tracks/haskell/exercises/queen-attack/{src/Example.hs → examples/success-standard/src/Queens.hs} +0 -0
  127. data/tracks/haskell/exercises/raindrops/examples/success-standard/package.yaml +16 -0
  128. data/tracks/haskell/exercises/raindrops/{src/Example.hs → examples/success-standard/src/Raindrops.hs} +0 -0
  129. data/tracks/haskell/exercises/rna-transcription/examples/success-standard/package.yaml +18 -0
  130. data/tracks/haskell/exercises/rna-transcription/{src/Example.hs → examples/success-standard/src/DNA.hs} +0 -0
  131. data/tracks/haskell/exercises/robot-name/examples/success-standard/package.yaml +18 -0
  132. data/tracks/haskell/exercises/robot-name/{src/Example.hs → examples/success-standard/src/Robot.hs} +0 -0
  133. data/tracks/haskell/exercises/robot-simulator/examples/success-standard/package.yaml +16 -0
  134. data/tracks/haskell/exercises/robot-simulator/{src/Example.hs → examples/success-standard/src/Robot.hs} +0 -0
  135. data/tracks/haskell/exercises/roman-numerals/examples/success-standard/package.yaml +16 -0
  136. data/tracks/haskell/exercises/roman-numerals/{src/Example.hs → examples/success-standard/src/Roman.hs} +0 -0
  137. data/tracks/haskell/exercises/saddle-points/examples/success-standard/package.yaml +19 -0
  138. data/tracks/haskell/exercises/saddle-points/{src/Example.hs → examples/success-standard/src/Matrix.hs} +0 -0
  139. data/tracks/haskell/exercises/say/examples/success-standard/package.yaml +18 -0
  140. data/tracks/haskell/exercises/say/{src/Example.hs → examples/success-standard/src/Say.hs} +0 -0
  141. data/tracks/haskell/exercises/say/test/Tests.hs +4 -2
  142. data/tracks/haskell/exercises/scrabble-score/examples/success-standard/package.yaml +18 -0
  143. data/tracks/haskell/exercises/scrabble-score/{src/Example.hs → examples/success-standard/src/Scrabble.hs} +0 -0
  144. data/tracks/haskell/exercises/secret-handshake/examples/success-standard/package.yaml +16 -0
  145. data/tracks/haskell/exercises/secret-handshake/{src/Example.hs → examples/success-standard/src/SecretHandshake.hs} +0 -0
  146. data/tracks/haskell/exercises/series/examples/success-standard/package.yaml +16 -0
  147. data/tracks/haskell/exercises/series/{src/Example.hs → examples/success-standard/src/Series.hs} +0 -0
  148. data/tracks/haskell/exercises/sgf-parsing/examples/success-standard/package.yaml +20 -0
  149. data/tracks/haskell/exercises/sgf-parsing/{src/Example.hs → examples/success-standard/src/Sgf.hs} +0 -0
  150. data/tracks/haskell/exercises/sieve/examples/success-standard/package.yaml +18 -0
  151. data/tracks/haskell/exercises/sieve/{src/Example.hs → examples/success-standard/src/Sieve.hs} +0 -0
  152. data/tracks/haskell/exercises/simple-cipher/examples/success-standard/package.yaml +18 -0
  153. data/tracks/haskell/exercises/simple-cipher/{src/Example.hs → examples/success-standard/src/Cipher.hs} +0 -0
  154. data/tracks/haskell/exercises/simple-linked-list/examples/success-standard/package.yaml +16 -0
  155. data/tracks/haskell/exercises/simple-linked-list/{src/Example.hs → examples/success-standard/src/LinkedList.hs} +0 -0
  156. data/tracks/haskell/exercises/space-age/examples/success-double/package.yaml +0 -3
  157. data/tracks/haskell/exercises/space-age/examples/success-double/{SpaceAge.hs → src/SpaceAge.hs} +0 -0
  158. data/tracks/haskell/exercises/space-age/examples/success-rational/package.yaml +0 -3
  159. data/tracks/haskell/exercises/space-age/examples/success-rational/{SpaceAge.hs → src/SpaceAge.hs} +0 -0
  160. data/tracks/haskell/exercises/strain/examples/success-standard/package.yaml +16 -0
  161. data/tracks/haskell/exercises/strain/{src/Example.hs → examples/success-standard/src/Strain.hs} +0 -0
  162. data/tracks/haskell/exercises/sublist/examples/success-standard/package.yaml +16 -0
  163. data/tracks/haskell/exercises/sublist/{src/Example.hs → examples/success-standard/src/Sublist.hs} +0 -0
  164. data/tracks/haskell/exercises/sum-of-multiples/examples/success-standard/package.yaml +16 -0
  165. data/tracks/haskell/exercises/sum-of-multiples/{src/Example.hs → examples/success-standard/src/SumOfMultiples.hs} +0 -0
  166. data/tracks/haskell/exercises/triangle/examples/success-standard/package.yaml +18 -0
  167. data/tracks/haskell/exercises/triangle/{src/Example.hs → examples/success-standard/src/Triangle.hs} +0 -0
  168. data/tracks/haskell/exercises/trinary/examples/success-standard/package.yaml +17 -0
  169. data/tracks/haskell/exercises/trinary/{src/Example.hs → examples/success-standard/src/Trinary.hs} +0 -0
  170. data/tracks/haskell/exercises/word-count/examples/success-newtype/package.yaml +0 -2
  171. data/tracks/haskell/exercises/word-count/examples/success-newtype/{WordCount.hs → src/WordCount.hs} +0 -0
  172. data/tracks/haskell/exercises/word-count/examples/success-simple/package.yaml +0 -2
  173. data/tracks/haskell/exercises/word-count/examples/success-simple/{WordCount.hs → src/WordCount.hs} +0 -0
  174. data/tracks/haskell/exercises/wordy/examples/success-standard/package.yaml +19 -0
  175. data/tracks/haskell/exercises/wordy/{src/Example.hs → examples/success-standard/src/WordProblem.hs} +0 -0
  176. data/tracks/haskell/exercises/zebra-puzzle/examples/success-standard/package.yaml +16 -0
  177. data/tracks/haskell/exercises/zebra-puzzle/{src/Example.hs → examples/success-standard/src/ZebraPuzzle.hs} +0 -0
  178. data/tracks/haskell/exercises/zipper/examples/success-standard/package.yaml +16 -0
  179. data/tracks/haskell/exercises/zipper/{src/Example.hs → examples/success-standard/src/Zipper.hs} +0 -0
  180. data/tracks/java/config.json +7 -1
  181. data/tracks/java/exercises/difference-of-squares/build.gradle +17 -0
  182. data/tracks/java/exercises/difference-of-squares/src/example/java/.keep +0 -0
  183. data/tracks/java/exercises/difference-of-squares/src/example/java/Difference.java +20 -0
  184. data/tracks/java/exercises/difference-of-squares/src/main/java/.keep +0 -0
  185. data/tracks/java/exercises/difference-of-squares/src/main/java/Difference.java +5 -0
  186. data/tracks/java/exercises/difference-of-squares/src/test/java/DifferenceTest.java +87 -0
  187. data/tracks/java/exercises/settings.gradle +1 -0
  188. data/tracks/kotlin/docs/TESTS.md +97 -13
  189. data/tracks/ruby/exercises/alphametics/.version +1 -1
  190. data/tracks/ruby/exercises/alphametics/alphametics_test.rb +55 -45
  191. data/tracks/ruby/exercises/alphametics/example.rb +100 -63
  192. data/tracks/ruby/exercises/alphametics/example.tt +7 -6
  193. data/tracks/ruby/lib/alphametics_cases.rb +49 -13
  194. data/tracks/ruby/lib/generator.rb +2 -1
  195. data/tracks/rust/docs/LEARNING.md +1 -0
  196. data/tracks/rust/exercises/acronym/tests/acronym.rs +6 -0
  197. metadata +164 -80
@@ -0,0 +1,16 @@
1
+ name: leap
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: LeapYear
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - leap
16
+ - hspec
@@ -0,0 +1,19 @@
1
+ name: lens-person
2
+
3
+ dependencies:
4
+ - base
5
+ - time
6
+
7
+ library:
8
+ exposed-modules: Person
9
+ source-dirs: src
10
+ dependencies:
11
+ - lens
12
+
13
+ tests:
14
+ test:
15
+ main: Tests.hs
16
+ source-dirs: test
17
+ dependencies:
18
+ - lens-person
19
+ - hspec
@@ -0,0 +1,18 @@
1
+ name: linked-list
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: Deque
8
+ source-dirs: src
9
+ dependencies:
10
+ - stm
11
+
12
+ tests:
13
+ test:
14
+ main: Tests.hs
15
+ source-dirs: test
16
+ dependencies:
17
+ - linked-list
18
+ - hspec
@@ -0,0 +1,16 @@
1
+ name: list-ops
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: ListOps
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - list-ops
16
+ - hspec
@@ -0,0 +1,16 @@
1
+ name: luhn
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: Luhn
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - luhn
16
+ - hspec
@@ -0,0 +1,17 @@
1
+ name: matrix
2
+
3
+ dependencies:
4
+ - base
5
+ - vector
6
+
7
+ library:
8
+ exposed-modules: Matrix
9
+ source-dirs: src
10
+
11
+ tests:
12
+ test:
13
+ main: Tests.hs
14
+ source-dirs: test
15
+ dependencies:
16
+ - matrix
17
+ - hspec
@@ -0,0 +1,17 @@
1
+ name: meetup
2
+
3
+ dependencies:
4
+ - base
5
+ - time
6
+
7
+ library:
8
+ exposed-modules: Meetup
9
+ source-dirs: src
10
+
11
+ tests:
12
+ test:
13
+ main: Tests.hs
14
+ source-dirs: test
15
+ dependencies:
16
+ - meetup
17
+ - hspec
@@ -0,0 +1,16 @@
1
+ name: minesweeper
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: Minesweeper
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - minesweeper
16
+ - hspec
@@ -0,0 +1,16 @@
1
+ name: nth-prime
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: Prime
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - nth-prime
16
+ - hspec
@@ -0,0 +1,17 @@
1
+ name: nucleotide-count
2
+
3
+ dependencies:
4
+ - base
5
+ - containers
6
+
7
+ library:
8
+ exposed-modules: DNA
9
+ source-dirs: src
10
+
11
+ tests:
12
+ test:
13
+ main: Tests.hs
14
+ source-dirs: test
15
+ dependencies:
16
+ - nucleotide-count
17
+ - hspec
@@ -0,0 +1,19 @@
1
+ name: ocr-numbers
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: OCR
8
+ source-dirs: src
9
+ dependencies:
10
+ - containers
11
+ - split
12
+
13
+ tests:
14
+ test:
15
+ main: Tests.hs
16
+ source-dirs: test
17
+ dependencies:
18
+ - ocr-numbers
19
+ - hspec
@@ -0,0 +1,17 @@
1
+ name: octal
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: Octal
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - octal
16
+ - hspec
17
+ - QuickCheck
@@ -0,0 +1,16 @@
1
+ name: palindrome-products
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: Palindromes
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - palindrome-products
16
+ - hspec
@@ -0,0 +1,20 @@
1
+ name: parallel-letter-frequency
2
+
3
+ dependencies:
4
+ - base
5
+ - containers
6
+ - text
7
+
8
+ library:
9
+ exposed-modules: Frequency
10
+ source-dirs: src
11
+ dependencies:
12
+ - parallel
13
+
14
+ tests:
15
+ test:
16
+ main: Tests.hs
17
+ source-dirs: test
18
+ dependencies:
19
+ - parallel-letter-frequency
20
+ - hspec
@@ -0,0 +1,16 @@
1
+ name: pascals-triangle
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: Triangle
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - pascals-triangle
16
+ - hspec
@@ -0,0 +1,16 @@
1
+ name: phone-number
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: Phone
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - phone-number
16
+ - hspec
@@ -0,0 +1,16 @@
1
+ name: pig-latin
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: PigLatin
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - pig-latin
16
+ - hspec
@@ -10,7 +10,7 @@ specs :: Spec
10
10
  specs = describe "pig-latin" $
11
11
  describe "translate" $ do
12
12
 
13
- -- Test cases adapted from `exercism/x-common/pig-latin.json` on 2016-09-08.
13
+ -- Test cases adapted from `exercism/x-common/pig-latin.json` on 2016-11-06.
14
14
 
15
15
  describe "ay is added to words that start with vowels" $ do
16
16
  it "word beginning with a" $ translate "apple" `shouldBe` "appleay"
@@ -30,6 +30,7 @@ specs = describe "pig-latin" $
30
30
  it "word beginning with ch" $ translate "chair" `shouldBe` "airchay"
31
31
  it "word beginning with qu" $ translate "queen" `shouldBe` "eenquay"
32
32
  it "word beginning with qu and a preceding consonant" $ translate "square" `shouldBe` "aresquay"
33
+ it "... but not words beginning with a vowel then qu" $ translate "equal" `shouldBe` "equalay"
33
34
  it "word beginning with th" $ translate "therapy" `shouldBe` "erapythay"
34
35
  it "word beginning with thr" $ translate "thrush" `shouldBe` "ushthray"
35
36
  it "word beginning with sch" $ translate "school" `shouldBe` "oolschay"
@@ -0,0 +1,17 @@
1
+ name: pov
2
+
3
+ dependencies:
4
+ - base
5
+ - containers
6
+
7
+ library:
8
+ exposed-modules: POV
9
+ source-dirs: src
10
+
11
+ tests:
12
+ test:
13
+ main: Tests.hs
14
+ source-dirs: test
15
+ dependencies:
16
+ - pov
17
+ - hspec
@@ -15,13 +15,13 @@ main = hspecWith defaultConfig {configFastFail = True} specs
15
15
  specs :: Spec
16
16
  specs = describe "pov" $ do
17
17
 
18
- -- As of 2016-09-28, there was no reference file
19
- -- for the test cases in `exercism/x-common`.
18
+ -- Test cases adapted from `exercism/x-common/pov` on 2016-11-06.
20
19
 
21
20
  describe "fromPOV" $ do
22
21
 
23
22
  let cases =
24
23
  [ ("reparenting singleton" , singleton , Just singleton')
24
+ , ("reparenting with sibling" , simple , Just simple' )
25
25
  , ("reparenting flat" , flat , Just flat' )
26
26
  , ("reparenting nested" , nested , Just nested' )
27
27
  , ("reparenting kids" , kids , Just kids' )
@@ -51,6 +51,17 @@ specs = describe "pov" $ do
51
51
 
52
52
  describe "tracePathBetween" $ do
53
53
 
54
+ it "Can find path from x -> parent" $
55
+ tracePathBetween "x" "parent" simple
56
+ `shouldBe` Just [ "x"
57
+ , "parent" ]
58
+
59
+ it "Can find path from x -> sibling" $
60
+ tracePathBetween "x" "b" flat
61
+ `shouldBe` Just [ "x"
62
+ , "root"
63
+ , "b" ]
64
+
54
65
  it "Can trace a path from x -> cousin" $
55
66
  tracePathBetween "x" "cousin-1" cousins
56
67
  `shouldBe` Just [ "x"
@@ -59,10 +70,6 @@ specs = describe "pov" $ do
59
70
  , "uncle"
60
71
  , "cousin-1" ]
61
72
 
62
- it "Cannot trace between un-connected nodes" $
63
- tracePathBetween "x" "NOT THERE" cousins
64
- `shouldBe` Nothing
65
-
66
73
  it "Can trace from a leaf to a leaf" $
67
74
  tracePathBetween "kid-a" "cousin-0" cousins
68
75
  `shouldBe` Just [ "kid-a"
@@ -72,6 +79,14 @@ specs = describe "pov" $ do
72
79
  , "uncle"
73
80
  , "cousin-0" ]
74
81
 
82
+ it "Cannot trace if destination does not exist" $
83
+ tracePathBetween "x" "NOT THERE" cousins
84
+ `shouldBe` Nothing
85
+
86
+ it "Cannot trace if source does not exist" $
87
+ tracePathBetween "NOT THERE" "x" cousins
88
+ `shouldBe` Nothing
89
+
75
90
  -- Functions used in the tests.
76
91
 
77
92
  leaf :: a -> Tree a
@@ -91,13 +106,24 @@ toEdges (Node r ts) = map ((r,) . rootLabel) ts ++ concatMap toEdges ts
91
106
 
92
107
  -- Trees used in the tests.
93
108
 
94
- singleton , flat , kids , nested , cousins :: Tree String
95
- singleton', flat', kids', nested', cousins' :: Tree String
109
+ singleton , simple , flat , kids , nested , cousins :: Tree String
110
+ singleton', simple', flat', kids', nested', cousins' :: Tree String
96
111
 
97
112
  singleton = leaf "x"
98
113
 
99
114
  singleton' = leaf "x"
100
115
 
116
+ simple = Node "parent"
117
+ [ leaf "x"
118
+ , leaf "sibling"
119
+ ]
120
+
121
+ simple' = Node "x"
122
+ [ Node "parent"
123
+ [ leaf "sibling"
124
+ ]
125
+ ]
126
+
101
127
  flat = Node "root"
102
128
  [ leaf "a"
103
129
  , leaf "b"