trackler 2.2.1.62 → 2.2.1.63

Sign up to get free protection for your applications and to get access to all the features.
Files changed (247) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/all-your-base/canonical-data.json +20 -29
  4. data/problem-specifications/exercises/forth/canonical-data.json +52 -5
  5. data/problem-specifications/exercises/isbn-verifier/canonical-data.json +15 -15
  6. data/problem-specifications/exercises/protein-translation/canonical-data.json +153 -0
  7. data/problem-specifications/exercises/reverse-string/canonical-data.json +39 -0
  8. data/problem-specifications/exercises/reverse-string/description.md +5 -0
  9. data/problem-specifications/exercises/reverse-string/metadata.yml +5 -0
  10. data/tracks/c/config.json +42 -41
  11. data/tracks/csharp/config.json +13 -0
  12. data/tracks/csharp/exercises/Exercises.sln +6 -0
  13. data/tracks/csharp/exercises/isbn-verifier/Example.cs +27 -0
  14. data/tracks/csharp/exercises/isbn-verifier/IsbnVerifier.cs +9 -0
  15. data/tracks/csharp/exercises/isbn-verifier/IsbnVerifier.csproj +19 -0
  16. data/tracks/csharp/exercises/isbn-verifier/IsbnVerifierTest.cs +84 -0
  17. data/tracks/csharp/exercises/isbn-verifier/README.md +40 -0
  18. data/tracks/csharp/generators/Exercises/IsbnVerifier.cs +15 -0
  19. data/tracks/delphi/config.json +28 -28
  20. data/tracks/erlang/config.json +10 -0
  21. data/tracks/erlang/exercises/accumulate/rebar.config +1 -1
  22. data/tracks/erlang/exercises/accumulate/test/accumulate_tests.erl +9 -7
  23. data/tracks/erlang/exercises/all-your-base/rebar.config +1 -1
  24. data/tracks/erlang/exercises/all-your-base/test/all_your_base_tests.erl +26 -24
  25. data/tracks/erlang/exercises/allergies/rebar.config +1 -1
  26. data/tracks/erlang/exercises/allergies/test/allergies_tests.erl +19 -17
  27. data/tracks/erlang/exercises/anagram/rebar.config +1 -3
  28. data/tracks/erlang/exercises/anagram/test/anagram_tests.erl +14 -12
  29. data/tracks/erlang/exercises/atbash-cipher/rebar.config +1 -1
  30. data/tracks/erlang/exercises/atbash-cipher/test/atbash_cipher_tests.erl +7 -5
  31. data/tracks/erlang/exercises/bank-account/rebar.config +1 -1
  32. data/tracks/erlang/exercises/bank-account/test/bank_account_tests.erl +52 -51
  33. data/tracks/erlang/exercises/beer-song/rebar.config +30 -0
  34. data/tracks/erlang/exercises/beer-song/test/beer_song_tests.erl +11 -10
  35. data/tracks/erlang/exercises/bob/rebar.config +1 -1
  36. data/tracks/erlang/exercises/bob/test/bob_tests.erl +33 -35
  37. data/tracks/erlang/exercises/circular-buffer/rebar.config +1 -1
  38. data/tracks/erlang/exercises/circular-buffer/test/circular_buffer_tests.erl +33 -32
  39. data/tracks/erlang/exercises/clock/rebar.config +1 -1
  40. data/tracks/erlang/exercises/clock/test/clock_tests.erl +57 -50
  41. data/tracks/erlang/exercises/collatz-conjecture/rebar.config +1 -1
  42. data/tracks/erlang/exercises/collatz-conjecture/test/collatz_conjecture_tests.erl +11 -9
  43. data/tracks/erlang/exercises/complex-numbers/rebar.config +1 -1
  44. data/tracks/erlang/exercises/complex-numbers/test/complex_numbers_tests.erl +102 -76
  45. data/tracks/erlang/exercises/custom-set/rebar.config +1 -1
  46. data/tracks/erlang/exercises/custom-set/test/custom_set_tests.erl +100 -109
  47. data/tracks/erlang/exercises/difference-of-squares/rebar.config +1 -1
  48. data/tracks/erlang/exercises/difference-of-squares/test/difference_of_squares_tests.erl +8 -7
  49. data/tracks/erlang/exercises/etl/rebar.config +1 -1
  50. data/tracks/erlang/exercises/etl/test/etl_tests.erl +6 -5
  51. data/tracks/erlang/exercises/gigasecond/rebar.config +1 -1
  52. data/tracks/erlang/exercises/gigasecond/test/gigasecond_tests.erl +9 -8
  53. data/tracks/erlang/exercises/grade-school/rebar.config +1 -1
  54. data/tracks/erlang/exercises/grade-school/test/grade_school_tests.erl +27 -23
  55. data/tracks/erlang/exercises/grains/rebar.config +1 -1
  56. data/tracks/erlang/exercises/grains/test/grains_tests.erl +7 -6
  57. data/tracks/erlang/exercises/hamming/rebar.config +1 -1
  58. data/tracks/erlang/exercises/hamming/test/hamming_tests.erl +20 -23
  59. data/tracks/erlang/exercises/hello-world/rebar.config +1 -1
  60. data/tracks/erlang/exercises/hello-world/test/hello_world_tests.erl +6 -4
  61. data/tracks/erlang/exercises/isogram/rebar.config +1 -1
  62. data/tracks/erlang/exercises/isogram/test/isogram_tests.erl +14 -12
  63. data/tracks/erlang/exercises/largest-series-product/rebar.config +1 -1
  64. data/tracks/erlang/exercises/largest-series-product/test/largest_series_product_tests.erl +22 -21
  65. data/tracks/erlang/exercises/leap/rebar.config +1 -1
  66. data/tracks/erlang/exercises/leap/test/leap_tests.erl +8 -7
  67. data/tracks/erlang/exercises/luhn/rebar.config +1 -1
  68. data/tracks/erlang/exercises/luhn/test/luhn_tests.erl +18 -16
  69. data/tracks/erlang/exercises/meetup/rebar.config +1 -1
  70. data/tracks/erlang/exercises/meetup/test/meetup_tests.erl +96 -95
  71. data/tracks/erlang/exercises/nucleotide-count/rebar.config +1 -1
  72. data/tracks/erlang/exercises/nucleotide-count/test/nucleotide_count_tests.erl +12 -11
  73. data/tracks/erlang/exercises/pangram/README.md +60 -0
  74. data/tracks/erlang/exercises/{accumulate → pangram}/include/exercism.hrl +0 -0
  75. data/tracks/erlang/exercises/{beer-song/rebar.conf → pangram/rebar.config} +0 -0
  76. data/tracks/erlang/exercises/pangram/src/example.erl +11 -0
  77. data/tracks/erlang/exercises/pangram/src/pangram.app.src +9 -0
  78. data/tracks/erlang/exercises/pangram/src/pangram.erl +8 -0
  79. data/tracks/erlang/exercises/pangram/test/pangram_tests.erl +38 -0
  80. data/tracks/erlang/exercises/parallel-letter-frequency/rebar.config +1 -1
  81. data/tracks/erlang/exercises/parallel-letter-frequency/test/parallel_letter_frequency_tests.erl +7 -6
  82. data/tracks/erlang/exercises/phone-number/rebar.config +1 -1
  83. data/tracks/erlang/exercises/phone-number/test/phone_number_tests.erl +13 -12
  84. data/tracks/erlang/exercises/rna-transcription/rebar.config +1 -1
  85. data/tracks/erlang/exercises/rna-transcription/test/rna_transcription_tests.erl +13 -11
  86. data/tracks/erlang/exercises/robot-simulator/rebar.config +1 -1
  87. data/tracks/erlang/exercises/robot-simulator/test/robot_simulator_tests.erl +70 -69
  88. data/tracks/erlang/exercises/roman-numerals/rebar.config +1 -1
  89. data/tracks/erlang/exercises/roman-numerals/test/roman_numerals_tests.erl +6 -5
  90. data/tracks/erlang/exercises/rotational-cipher/rebar.config +1 -8
  91. data/tracks/erlang/exercises/rotational-cipher/test/rotational_cipher_tests.erl +29 -27
  92. data/tracks/erlang/exercises/scrabble-score/rebar.config +1 -1
  93. data/tracks/erlang/exercises/scrabble-score/test/scrabble_score_tests.erl +6 -5
  94. data/tracks/erlang/exercises/series/rebar.config +1 -1
  95. data/tracks/erlang/exercises/series/test/series_tests.erl +6 -5
  96. data/tracks/erlang/exercises/sieve/rebar.config +1 -1
  97. data/tracks/erlang/exercises/sieve/test/sieve_tests.erl +10 -8
  98. data/tracks/erlang/exercises/space-age/rebar.config +1 -1
  99. data/tracks/erlang/exercises/space-age/test/space_age_tests.erl +20 -19
  100. data/tracks/erlang/exercises/spiral-matrix/rebar.config +1 -1
  101. data/tracks/erlang/exercises/spiral-matrix/test/spiral_matrix_tests.erl +12 -10
  102. data/tracks/erlang/exercises/strain/rebar.config +1 -1
  103. data/tracks/erlang/exercises/strain/test/strain_tests.erl +17 -16
  104. data/tracks/erlang/exercises/sum-of-multiples/rebar.config +1 -1
  105. data/tracks/erlang/exercises/sum-of-multiples/test/sum_of_multiples_tests.erl +16 -15
  106. data/tracks/erlang/exercises/triangle/rebar.config +1 -1
  107. data/tracks/erlang/exercises/triangle/test/triangle_tests.erl +20 -19
  108. data/tracks/erlang/exercises/two-fer/rebar.config +1 -1
  109. data/tracks/erlang/exercises/two-fer/test/two_fer_tests.erl +8 -7
  110. data/tracks/erlang/exercises/word-count/rebar.config +1 -1
  111. data/tracks/erlang/exercises/word-count/test/word_count_tests.erl +6 -5
  112. data/tracks/erlang/exercises/zipper/rebar.config +1 -1
  113. data/tracks/erlang/exercises/zipper/test/zipper_tests.erl +47 -46
  114. data/tracks/erlang/testgen/src/tgen.erl +8 -6
  115. data/tracks/erlang/testgen/src/tgen_bob.erl +1 -1
  116. data/tracks/erlang/testgen/src/tgen_collatz-conjecture.erl +2 -2
  117. data/tracks/erlang/testgen/src/tgen_complex-numbers.erl +11 -11
  118. data/tracks/erlang/testgen/src/tgen_custom-set.erl +14 -14
  119. data/tracks/erlang/testgen/src/tgen_hamming.erl +2 -2
  120. data/tracks/erlang/testgen/src/tgen_hello-world.erl +1 -1
  121. data/tracks/erlang/testgen/src/tgen_leap.erl +1 -1
  122. data/tracks/erlang/testgen/src/tgen_rna-transcription.erl +2 -2
  123. data/tracks/erlang/testgen/src/tgs.erl +6 -0
  124. data/tracks/fsharp/exercises/beer-song/BeerSong.fs +1 -5
  125. data/tracks/fsharp/exercises/beer-song/BeerSongTest.fs +342 -20
  126. data/tracks/fsharp/exercises/beer-song/Example.fs +16 -10
  127. data/tracks/fsharp/exercises/food-chain/Example.fs +1 -1
  128. data/tracks/fsharp/exercises/food-chain/FoodChain.fs +1 -3
  129. data/tracks/fsharp/exercises/food-chain/FoodChainTest.fs +11 -11
  130. data/tracks/fsharp/exercises/house/Example.fs +1 -1
  131. data/tracks/fsharp/exercises/house/House.fs +1 -3
  132. data/tracks/fsharp/exercises/house/HouseTest.fs +202 -202
  133. data/tracks/fsharp/exercises/proverb/Example.fs +9 -9
  134. data/tracks/fsharp/exercises/proverb/Proverb.fs +1 -3
  135. data/tracks/fsharp/exercises/proverb/ProverbTest.fs +50 -21
  136. data/tracks/fsharp/exercises/twelve-days/Example.fs +4 -4
  137. data/tracks/fsharp/exercises/twelve-days/TwelveDays.fs +2 -6
  138. data/tracks/fsharp/exercises/twelve-days/TwelveDaysTest.fs +81 -57
  139. data/tracks/fsharp/generators/Generators.fs +39 -15
  140. data/tracks/go/bin/run-generators +5 -1
  141. data/tracks/go/config.json +14 -2
  142. data/tracks/go/exercises/accumulate/example.go +2 -1
  143. data/tracks/go/exercises/zebra-puzzle/.meta/hints.md +24 -0
  144. data/tracks/go/exercises/zebra-puzzle/README.md +76 -0
  145. data/tracks/go/exercises/zebra-puzzle/example.go +256 -0
  146. data/tracks/go/exercises/zebra-puzzle/zebra_puzzle_test.go +18 -0
  147. data/tracks/haskell/exercises/forth/package.yaml +1 -1
  148. data/tracks/haskell/exercises/forth/test/Tests.hs +1 -4
  149. data/tracks/haskell/exercises/pascals-triangle/package.yaml +1 -1
  150. data/tracks/haskell/exercises/pascals-triangle/test/Tests.hs +22 -1
  151. data/tracks/java/POLICIES.md +3 -3
  152. data/tracks/java/config.json +21 -2
  153. data/tracks/java/exercises/atbash-cipher/.meta/src/reference/java/Atbash.java +12 -12
  154. data/tracks/java/exercises/protein-translation/.meta/src/reference/java/ProteinTranslator.java +47 -0
  155. data/tracks/java/exercises/protein-translation/.meta/version +1 -0
  156. data/tracks/java/exercises/protein-translation/README.md +58 -0
  157. data/tracks/java/exercises/protein-translation/build.gradle +18 -0
  158. data/tracks/java/exercises/protein-translation/src/main/java/ProteinTranslator.java +8 -0
  159. data/tracks/java/exercises/protein-translation/src/test/java/ProteinTranslatorTest.java +179 -0
  160. data/tracks/java/exercises/settings.gradle +1 -0
  161. data/tracks/javascript/.eslintignore +2 -2
  162. data/tracks/javascript/exercises/accumulate/example.js +1 -2
  163. data/tracks/javascript/exercises/grains/example.js +6 -3
  164. data/tracks/kotlin/exercises/beer-song/.meta/src/reference/kotlin/BeerSong.kt +3 -3
  165. data/tracks/kotlin/exercises/beer-song/.meta/version +1 -1
  166. data/tracks/kotlin/exercises/beer-song/README.md +1 -1
  167. data/tracks/kotlin/exercises/beer-song/src/test/kotlin/BeerSongTest.kt +6 -6
  168. data/tracks/kotlin/exercises/forth/.meta/version +1 -1
  169. data/tracks/kotlin/exercises/forth/src/test/kotlin/ForthEvaluatorTest.kt +0 -7
  170. data/tracks/kotlin/exercises/meetup/README.md +16 -12
  171. data/tracks/kotlin/exercises/nth-prime/.meta/src/reference/kotlin/Prime.kt +7 -2
  172. data/tracks/kotlin/exercises/nth-prime/.meta/version +1 -1
  173. data/tracks/kotlin/exercises/nth-prime/src/test/kotlin/PrimeTest.kt +10 -1
  174. data/tracks/kotlin/exercises/nucleotide-count/README.md +2 -2
  175. data/tracks/kotlin/exercises/pascals-triangle/.meta/src/reference/kotlin/PascalsTriangle.kt +1 -1
  176. data/tracks/kotlin/exercises/pascals-triangle/.meta/version +1 -1
  177. data/tracks/kotlin/exercises/pascals-triangle/src/test/kotlin/PascalsTriangleTest.kt +58 -1
  178. data/tracks/kotlin/exercises/sum-of-multiples/README.md +3 -3
  179. data/tracks/ocaml/exercises/forth/test.ml +1 -3
  180. data/tracks/ocaml/exercises/rectangles/example.ml +11 -11
  181. data/tracks/php/exercises/bob/example.php +2 -2
  182. data/tracks/purescript/config.json +3 -3
  183. data/tracks/python/config.json +34 -22
  184. data/tracks/python/exercises/alphametics/example.py +90 -34
  185. data/tracks/python/exercises/ocr-numbers/example.py +18 -21
  186. data/tracks/python/exercises/ocr-numbers/ocr_numbers.py +1 -5
  187. data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +124 -106
  188. data/tracks/python/exercises/simple-linked-list/README.md +49 -0
  189. data/tracks/python/exercises/simple-linked-list/example.py +67 -0
  190. data/tracks/python/exercises/simple-linked-list/hints.md +10 -0
  191. data/tracks/python/exercises/simple-linked-list/simple_linked_list.py +33 -0
  192. data/tracks/python/exercises/simple-linked-list/simple_linked_list_test.py +112 -0
  193. data/tracks/rust/README.md +2 -0
  194. data/tracks/rust/bin/init_exercise.py +586 -0
  195. data/tracks/rust/config.json +20 -10
  196. data/tracks/rust/exercises/book-store/.gitignore +3 -0
  197. data/tracks/rust/exercises/book-store/Cargo-example.toml +7 -0
  198. data/tracks/rust/exercises/book-store/Cargo.toml +6 -0
  199. data/tracks/rust/exercises/book-store/README.md +107 -0
  200. data/tracks/rust/exercises/book-store/example.rs +187 -0
  201. data/tracks/rust/exercises/book-store/src/lib.rs +3 -0
  202. data/tracks/rust/exercises/book-store/tests/book-store.rs +130 -0
  203. data/tracks/sml/config.json +8 -8
  204. data/tracks/typescript/config.json +6 -6
  205. metadata +43 -46
  206. data/tracks/erlang/exercises/all-your-base/include/exercism.hrl +0 -11
  207. data/tracks/erlang/exercises/allergies/include/exercism.hrl +0 -11
  208. data/tracks/erlang/exercises/anagram/include/exercism.hrl +0 -11
  209. data/tracks/erlang/exercises/atbash-cipher/include/exercism.hrl +0 -11
  210. data/tracks/erlang/exercises/bank-account/include/exercism.hrl +0 -11
  211. data/tracks/erlang/exercises/beer-song/include/exercism.hrl +0 -11
  212. data/tracks/erlang/exercises/bob/include/exercism.hrl +0 -11
  213. data/tracks/erlang/exercises/circular-buffer/include/exercism.hrl +0 -11
  214. data/tracks/erlang/exercises/clock/include/exercism.hrl +0 -11
  215. data/tracks/erlang/exercises/collatz-conjecture/include/exercism.hrl +0 -11
  216. data/tracks/erlang/exercises/complex-numbers/include/exercism.hrl +0 -11
  217. data/tracks/erlang/exercises/custom-set/include/exercism.hrl +0 -11
  218. data/tracks/erlang/exercises/difference-of-squares/include/exercism.hrl +0 -11
  219. data/tracks/erlang/exercises/etl/include/exercism.hrl +0 -11
  220. data/tracks/erlang/exercises/gigasecond/include/exercism.hrl +0 -11
  221. data/tracks/erlang/exercises/grade-school/include/exercism.hrl +0 -11
  222. data/tracks/erlang/exercises/grains/include/exercism.hrl +0 -11
  223. data/tracks/erlang/exercises/hamming/include/exercism.hrl +0 -11
  224. data/tracks/erlang/exercises/hello-world/include/exercism.hrl +0 -11
  225. data/tracks/erlang/exercises/isogram/include/exercism.hrl +0 -11
  226. data/tracks/erlang/exercises/largest-series-product/include/exercism.hrl +0 -11
  227. data/tracks/erlang/exercises/leap/include/exercism.hrl +0 -11
  228. data/tracks/erlang/exercises/luhn/include/exercism.hrl +0 -11
  229. data/tracks/erlang/exercises/meetup/include/exercism.hrl +0 -11
  230. data/tracks/erlang/exercises/nucleotide-count/include/exercism.hrl +0 -11
  231. data/tracks/erlang/exercises/parallel-letter-frequency/include/exercism.hrl +0 -11
  232. data/tracks/erlang/exercises/phone-number/include/exercism.hrl +0 -11
  233. data/tracks/erlang/exercises/rna-transcription/include/exercism.hrl +0 -11
  234. data/tracks/erlang/exercises/robot-simulator/include/exercism.hrl +0 -11
  235. data/tracks/erlang/exercises/roman-numerals/include/exercism.hrl +0 -11
  236. data/tracks/erlang/exercises/rotational-cipher/include/exercism.hrl +0 -11
  237. data/tracks/erlang/exercises/scrabble-score/include/exercism.hrl +0 -11
  238. data/tracks/erlang/exercises/series/include/exercism.hrl +0 -11
  239. data/tracks/erlang/exercises/sieve/include/exercism.hrl +0 -11
  240. data/tracks/erlang/exercises/space-age/include/exercism.hrl +0 -11
  241. data/tracks/erlang/exercises/spiral-matrix/include/exercism.hrl +0 -11
  242. data/tracks/erlang/exercises/strain/include/exercism.hrl +0 -11
  243. data/tracks/erlang/exercises/sum-of-multiples/include/exercism.hrl +0 -11
  244. data/tracks/erlang/exercises/triangle/include/exercism.hrl +0 -11
  245. data/tracks/erlang/exercises/two-fer/include/exercism.hrl +0 -11
  246. data/tracks/erlang/exercises/word-count/include/exercism.hrl +0 -11
  247. data/tracks/erlang/exercises/zipper/include/exercism.hrl +0 -11
@@ -1,9 +1,7 @@
1
1
  -module(etl_tests).
2
2
 
3
- -define(TESTED_MODULE, (sut(etl))).
4
- -define(TEST_VERSION, 1).
5
- -include("exercism.hrl").
6
-
3
+ -include_lib("erl_exercism/include/exercism.hrl").
4
+ -include_lib("eunit/include/eunit.hrl").
7
5
 
8
6
  transform_one_value_test() ->
9
7
  erl_transform([{1, ["a"]}], [{"a", 1}]).
@@ -32,4 +30,7 @@ transform_full_dataset_test() ->
32
30
  erl_transform(Old, Expected).
33
31
 
34
32
  erl_transform(Old, New) ->
35
- ?assertEqual(lists:sort(New), lists:sort(?TESTED_MODULE:transform(Old))).
33
+ ?assertEqual(lists:sort(New), lists:sort(etl:transform(Old))).
34
+
35
+ version_test() ->
36
+ ?assertMatch(1, etl:test_version()).
@@ -1,7 +1,7 @@
1
1
  %% Erlang compiler options
2
2
  {erl_opts, [debug_info]}.
3
3
 
4
- {deps, []}.
4
+ {deps, [{erl_exercism, "0.1.1"}]}.
5
5
 
6
6
  {dialyzer, [
7
7
  {warnings, [underspecs, no_return]},
@@ -1,22 +1,23 @@
1
1
  -module(gigasecond_tests).
2
2
 
3
- -define(TESTED_MODULE, (sut(gigasecond))).
4
- -define(TEST_VERSION, 1).
5
- -include("exercism.hrl").
6
-
3
+ -include_lib("erl_exercism/include/exercism.hrl").
4
+ -include_lib("eunit/include/eunit.hrl").
7
5
 
8
6
  one_test() ->
9
- Gs = ?TESTED_MODULE:from({2011, 4, 25}),
7
+ Gs = gigasecond:from({2011, 4, 25}),
10
8
  ?assertEqual({{2043, 1, 1}, {1, 46, 40}}, Gs).
11
9
 
12
10
  two_test() ->
13
- Gs = ?TESTED_MODULE:from({1977, 6, 13}),
11
+ Gs = gigasecond:from({1977, 6, 13}),
14
12
  ?assertEqual({{2009, 2, 19}, {1, 46, 40}}, Gs).
15
13
 
16
14
  three_test() ->
17
- Gs = ?TESTED_MODULE:from({1959, 7, 19}),
15
+ Gs = gigasecond:from({1959, 7, 19}),
18
16
  ?assertEqual({{1991, 3, 27}, {1, 46, 40}}, Gs).
19
17
 
20
18
  four_with_seconds_test() ->
21
- Gs = ?TESTED_MODULE:from({{1959, 7, 19}, {23, 59, 59}}),
19
+ Gs = gigasecond:from({{1959, 7, 19}, {23, 59, 59}}),
22
20
  ?assertEqual({{1991, 3, 28}, {1, 46, 39}}, Gs).
21
+
22
+ version_test() ->
23
+ ?assertMatch(1, gigasecond:test_version()).
@@ -1,7 +1,7 @@
1
1
  %% Erlang compiler options
2
2
  {erl_opts, [debug_info]}.
3
3
 
4
- {deps, []}.
4
+ {deps, [{erl_exercism, "0.1.1"}]}.
5
5
 
6
6
  {dialyzer, [
7
7
  {warnings, [underspecs, no_return]},
@@ -1,47 +1,51 @@
1
1
  -module(grade_school_tests).
2
2
 
3
- -define(TESTED_MODULE, (sut(grade_school))).
4
- -define(TEST_VERSION, 1).
5
- -include("exercism.hrl").
3
+ -include_lib("erl_exercism/include/exercism.hrl").
4
+ -include_lib("eunit/include/eunit.hrl").
6
5
 
6
+ new() ->
7
+ grade_school:new().
7
8
 
8
9
  add_student_test() ->
9
- S1 = ?TESTED_MODULE:add("Aimee", 2, ?TESTED_MODULE:new()),
10
- Students = ?TESTED_MODULE:get(2, S1),
10
+ S1 = grade_school:add("Aimee", 2, new()),
11
+ Students = grade_school:get(2, S1),
11
12
  ?assertEqual(["Aimee"], lists:sort(Students)).
12
13
 
13
14
  add_more_students_in_same_class_test() ->
14
- S1 = ?TESTED_MODULE:add("James", 2, ?TESTED_MODULE:new()),
15
- S2 = ?TESTED_MODULE:add("Blair", 2, S1),
16
- S3 = ?TESTED_MODULE:add("Paul", 2, S2),
17
- Students = ?TESTED_MODULE:get(2, S3),
15
+ S1 = grade_school:add("James", 2, new()),
16
+ S2 = grade_school:add("Blair", 2, S1),
17
+ S3 = grade_school:add("Paul", 2, S2),
18
+ Students = grade_school:get(2, S3),
18
19
  ?assertEqual(["Blair","James","Paul"], lists:sort(Students)).
19
20
 
20
21
  add_students_to_different_grades_test() ->
21
- S1 = ?TESTED_MODULE:add("Chelsea", 3, ?TESTED_MODULE:new()),
22
- S2 = ?TESTED_MODULE:add("Logan", 7, S1),
22
+ S1 = grade_school:add("Chelsea", 3, new()),
23
+ S2 = grade_school:add("Logan", 7, S1),
23
24
 
24
- ?assertEqual(["Chelsea"], ?TESTED_MODULE:get(3, S2)),
25
- ?assertEqual(["Logan"], ?TESTED_MODULE:get(7, S2)).
25
+ ?assertEqual(["Chelsea"], grade_school:get(3, S2)),
26
+ ?assertEqual(["Logan"], grade_school:get(7, S2)).
26
27
 
27
28
  get_students_in_a_grade_test() ->
28
- S1 = ?TESTED_MODULE:add("Franklin", 5, ?TESTED_MODULE:new()),
29
- S2 = ?TESTED_MODULE:add("Bradley", 5, S1),
30
- S3 = ?TESTED_MODULE:add("Jeff", 1, S2),
31
- Students = ?TESTED_MODULE:get(5, S3),
29
+ S1 = grade_school:add("Franklin", 5, new()),
30
+ S2 = grade_school:add("Bradley", 5, S1),
31
+ S3 = grade_school:add("Jeff", 1, S2),
32
+ Students = grade_school:get(5, S3),
32
33
  ?assertEqual(["Bradley","Franklin"], lists:sort(Students)).
33
34
 
34
35
  get_students_in_a_non_existant_grade_test() ->
35
- ?assertEqual([], ?TESTED_MODULE:get(1, ?TESTED_MODULE:new())).
36
+ ?assertEqual([], grade_school:get(1, new())).
36
37
 
37
38
  sort_school_test() ->
38
- S1 = ?TESTED_MODULE:add("Jennifer", 4, ?TESTED_MODULE:new()),
39
- S2 = ?TESTED_MODULE:add("Kareem", 6, S1),
40
- S3 = ?TESTED_MODULE:add("Christopher", 4, S2),
41
- S4 = ?TESTED_MODULE:add("Kyle", 3, S3),
39
+ S1 = grade_school:add("Jennifer", 4, new()),
40
+ S2 = grade_school:add("Kareem", 6, S1),
41
+ S3 = grade_school:add("Christopher", 4, S2),
42
+ S4 = grade_school:add("Kyle", 3, S3),
42
43
 
43
44
  Sorted = [{3, ["Kyle"]},
44
45
  {4, ["Christopher", "Jennifer"]},
45
46
  {6, ["Kareem"]}],
46
47
 
47
- ?assertEqual(Sorted, ?TESTED_MODULE:sort(S4)).
48
+ ?assertEqual(Sorted, grade_school:sort(S4)).
49
+
50
+ version_test() ->
51
+ ?assertMatch(1, grade_school:test_version()).
@@ -1,7 +1,7 @@
1
1
  %% Erlang compiler options
2
2
  {erl_opts, [debug_info]}.
3
3
 
4
- {deps, []}.
4
+ {deps, [{erl_exercism, "0.1.1"}]}.
5
5
 
6
6
  {dialyzer, [
7
7
  {warnings, [underspecs, no_return]},
@@ -1,11 +1,9 @@
1
1
  -module(grains_tests).
2
2
 
3
- -define(TESTED_MODULE, (sut(grains))).
4
- -define(TEST_VERSION, 1).
5
- -include("exercism.hrl").
3
+ -include_lib("erl_exercism/include/exercism.hrl").
4
+ -include_lib("eunit/include/eunit.hrl").
6
5
 
7
-
8
- -define(assertGrains(Grains, Square), ?assertMatch(Grains, ?TESTED_MODULE:square(Square))).
6
+ -define(assertGrains(Grains, Square), ?assertMatch(Grains, grains:square(Square))).
9
7
 
10
8
  square_1_test() ->
11
9
  ?assertGrains(1, 1).
@@ -29,4 +27,7 @@ square_64_test() ->
29
27
  ?assertGrains(9223372036854775808, 64).
30
28
 
31
29
  total_grains_test() ->
32
- ?assertMatch(18446744073709551615, ?TESTED_MODULE:total()).
30
+ ?assertMatch(18446744073709551615, grains:total()).
31
+
32
+ version_test() ->
33
+ ?assertMatch(1, grains:test_version()).
@@ -1,7 +1,7 @@
1
1
  %% Erlang compiler options
2
2
  {erl_opts, [debug_info]}.
3
3
 
4
- {deps, []}.
4
+ {deps, [{erl_exercism, "0.1.2"}]}.
5
5
 
6
6
  {dialyzer, [
7
7
  {warnings, [underspecs, no_return]},
@@ -2,64 +2,61 @@
2
2
 
3
3
  % This file is automatically generated from the exercises canonical data.
4
4
 
5
- -define(TESTED_MODULE, (sut(hamming))).
6
- -define(TEST_VERSION, 2).
7
- -include("exercism.hrl").
5
+ -include_lib("erl_exercism/include/exercism.hrl").
6
+ -include_lib("eunit/include/eunit.hrl").
8
7
 
9
8
 
10
9
  empty_strands_test() ->
11
- ?assertMatch(0, ?TESTED_MODULE:distance([], [])).
10
+ ?assertMatch(0, hamming:distance([], [])).
12
11
 
13
12
  identical_strands_test() ->
14
- ?assertMatch(0, ?TESTED_MODULE:distance("A", "A")).
13
+ ?assertMatch(0, hamming:distance("A", "A")).
15
14
 
16
15
  long_identical_strands_test() ->
17
- ?assertMatch(0,
18
- ?TESTED_MODULE:distance("GGACTGA", "GGACTGA")).
16
+ ?assertMatch(0, hamming:distance("GGACTGA", "GGACTGA")).
19
17
 
20
18
  complete_distance_in_single_nucleotide_strands_test() ->
21
- ?assertMatch(1, ?TESTED_MODULE:distance("A", "G")).
19
+ ?assertMatch(1, hamming:distance("A", "G")).
22
20
 
23
21
  complete_distance_in_small_strands_test() ->
24
- ?assertMatch(2, ?TESTED_MODULE:distance("AG", "CT")).
22
+ ?assertMatch(2, hamming:distance("AG", "CT")).
25
23
 
26
24
  small_distance_in_small_strands_test() ->
27
- ?assertMatch(1, ?TESTED_MODULE:distance("AT", "CT")).
25
+ ?assertMatch(1, hamming:distance("AT", "CT")).
28
26
 
29
27
  small_distance_test() ->
30
- ?assertMatch(1,
31
- ?TESTED_MODULE:distance("GGACG", "GGTCG")).
28
+ ?assertMatch(1, hamming:distance("GGACG", "GGTCG")).
32
29
 
33
30
  small_distance_in_long_strands_test() ->
34
- ?assertMatch(2,
35
- ?TESTED_MODULE:distance("ACCAGGG", "ACTATGG")).
31
+ ?assertMatch(2, hamming:distance("ACCAGGG", "ACTATGG")).
36
32
 
37
33
  non_unique_character_in_first_strand_test() ->
38
- ?assertMatch(1, ?TESTED_MODULE:distance("AAG", "AAA")).
34
+ ?assertMatch(1, hamming:distance("AAG", "AAA")).
39
35
 
40
36
  non_unique_character_in_second_strand_test() ->
41
- ?assertMatch(1, ?TESTED_MODULE:distance("AAA", "AAG")).
37
+ ?assertMatch(1, hamming:distance("AAA", "AAG")).
42
38
 
43
39
  same_nucleotides_in_different_positions_test() ->
44
- ?assertMatch(2, ?TESTED_MODULE:distance("TAG", "GAT")).
40
+ ?assertMatch(2, hamming:distance("TAG", "GAT")).
45
41
 
46
42
  large_distance_test() ->
47
- ?assertMatch(4,
48
- ?TESTED_MODULE:distance("GATACA", "GCATAA")).
43
+ ?assertMatch(4, hamming:distance("GATACA", "GCATAA")).
49
44
 
50
45
  large_distance_in_off_by_one_strand_test() ->
51
46
  ?assertMatch(9,
52
- ?TESTED_MODULE:distance("GGACGGATTCTG",
53
- "AGGACGGATTCT")).
47
+ hamming:distance("GGACGGATTCTG", "AGGACGGATTCT")).
54
48
 
55
49
  disallow_first_strand_longer_test() ->
56
50
  ?assertMatch({error,
57
51
  "left and right strands must be of equal "
58
52
  "length"},
59
- ?TESTED_MODULE:distance("AATG", "AAA")).
53
+ hamming:distance("AATG", "AAA")).
60
54
 
61
55
  disallow_second_strand_longer_test() ->
62
56
  ?assertMatch({error,
63
57
  "left and right strands must be of equal "
64
58
  "length"},
65
- ?TESTED_MODULE:distance("ATA", "AGTG")).
59
+ hamming:distance("ATA", "AGTG")).
60
+
61
+ version_test() ->
62
+ ?assertMatch(2, hamming:test_version()).
@@ -1,7 +1,7 @@
1
1
  %% Erlang compiler options
2
2
  {erl_opts, [debug_info]}.
3
3
 
4
- {deps, []}.
4
+ {deps, [{erl_exercism, "0.1.2"}]}.
5
5
 
6
6
  {dialyzer, [
7
7
  {warnings, [underspecs, no_return]},
@@ -2,10 +2,12 @@
2
2
 
3
3
  % This file is automatically generated from the exercises canonical data.
4
4
 
5
- -define(TESTED_MODULE, (sut(hello_world))).
6
- -define(TEST_VERSION, 2).
7
- -include("exercism.hrl").
5
+ -include_lib("erl_exercism/include/exercism.hrl").
6
+ -include_lib("eunit/include/eunit.hrl").
8
7
 
9
8
 
10
9
  say_hi_test() ->
11
- ?assertEqual("Hello, World!", ?TESTED_MODULE:hello()).
10
+ ?assertEqual("Hello, World!", hello_world:hello()).
11
+
12
+ version_test() ->
13
+ ?assertMatch(2, hello_world:test_version()).
@@ -1,7 +1,7 @@
1
1
  %% Erlang compiler options
2
2
  {erl_opts, [debug_info]}.
3
3
 
4
- {deps, []}.
4
+ {deps, [{erl_exercism, "0.1.1"}]}.
5
5
 
6
6
  {dialyzer, [
7
7
  {warnings, [underspecs, no_return]},
@@ -1,32 +1,34 @@
1
1
  -module(isogram_tests).
2
2
 
3
- -define(TESTED_MODULE, (sut(isogram))).
4
- -define(TEST_VERSION, 1).
5
- -include("exercism.hrl").
3
+ -include_lib("erl_exercism/include/exercism.hrl").
4
+ -include_lib("eunit/include/eunit.hrl").
6
5
 
7
6
  empty_string_test() ->
8
- ?assert(?TESTED_MODULE:is_isogram("")).
7
+ ?assert(isogram:is_isogram("")).
9
8
 
10
9
  isogram_with_only_lower_case_characters_test() ->
11
- ?assert(?TESTED_MODULE:is_isogram("isogram")).
10
+ ?assert(isogram:is_isogram("isogram")).
12
11
 
13
12
  word_with_one_duplicated_character_test() ->
14
- ?assertNot(?TESTED_MODULE:is_isogram("eleven")).
13
+ ?assertNot(isogram:is_isogram("eleven")).
15
14
 
16
15
  longest_reported_english_isogram_test() ->
17
- ?assert(?TESTED_MODULE:is_isogram("subdermatoglyphic")).
16
+ ?assert(isogram:is_isogram("subdermatoglyphic")).
18
17
 
19
18
  word_with_duplicated_character_in_mixed_case_test() ->
20
- ?assertNot(?TESTED_MODULE:is_isogram("Alphabet")).
19
+ ?assertNot(isogram:is_isogram("Alphabet")).
21
20
 
22
21
  hypothetical_isogrammic_word_with_hyphen_test() ->
23
- ?assert(?TESTED_MODULE:is_isogram("thumbscrew-japingly")).
22
+ ?assert(isogram:is_isogram("thumbscrew-japingly")).
24
23
 
25
24
  isogram_with_duplicated_hyphen_test() ->
26
- ?assert(?TESTED_MODULE:is_isogram("six-year-old")).
25
+ ?assert(isogram:is_isogram("six-year-old")).
27
26
 
28
27
  made_up_name_that_is_an_isogram_test() ->
29
- ?assert(?TESTED_MODULE:is_isogram("Emily Jung Schwartzkopf")).
28
+ ?assert(isogram:is_isogram("Emily Jung Schwartzkopf")).
30
29
 
31
30
  duplicated_character_in_the_middle_test() ->
32
- ?assertNot(?TESTED_MODULE:is_isogram("accentor")).
31
+ ?assertNot(isogram:is_isogram("accentor")).
32
+
33
+ version_test() ->
34
+ ?assertMatch(1, isogram:test_version()).
@@ -1,7 +1,7 @@
1
1
  %% Erlang compiler options
2
2
  {erl_opts, [debug_info]}.
3
3
 
4
- {deps, []}.
4
+ {deps, [{erl_exercism, "0.1.1"}]}.
5
5
 
6
6
  {dialyzer, [
7
7
  {warnings, [underspecs, no_return]},
@@ -1,57 +1,58 @@
1
1
  -module('largest_series_product_tests').
2
2
 
3
- -define(TESTED_MODULE, (sut(largest_series_product))).
4
- -define(TEST_VERSION, 1).
5
- -include("exercism.hrl").
6
-
3
+ -include_lib("erl_exercism/include/exercism.hrl").
4
+ -include_lib("eunit/include/eunit.hrl").
7
5
 
8
6
  can_find_the_largest_product_of_2_with_numbers_in_order_test() ->
9
- ?assertEqual(72, ?TESTED_MODULE:lsp("0123456789", 2)).
7
+ ?assertEqual(72, largest_series_product:lsp("0123456789", 2)).
10
8
 
11
9
  can_find_the_largest_product_of_2_test() ->
12
- ?assertEqual(48, ?TESTED_MODULE:lsp("576802143", 2)).
10
+ ?assertEqual(48, largest_series_product:lsp("576802143", 2)).
13
11
 
14
12
  finds_the_largest_product_if_span_equals_length_test() ->
15
- ?assertEqual(18, ?TESTED_MODULE:lsp("29", 2)).
13
+ ?assertEqual(18, largest_series_product:lsp("29", 2)).
16
14
 
17
15
  can_find_the_largest_product_of_3_with_numbers_in_order_test() ->
18
- ?assertEqual(504, ?TESTED_MODULE:lsp("0123456789", 3)).
16
+ ?assertEqual(504, largest_series_product:lsp("0123456789", 3)).
19
17
 
20
18
  can_find_the_largest_product_of_3_test() ->
21
- ?assertEqual(270, ?TESTED_MODULE:lsp("1027839564", 3)).
19
+ ?assertEqual(270, largest_series_product:lsp("1027839564", 3)).
22
20
 
23
21
  can_find_the_largest_product_of_5_with_numbers_in_order_test() ->
24
- ?assertEqual(15120, ?TESTED_MODULE:lsp("0123456789", 5)).
22
+ ?assertEqual(15120, largest_series_product:lsp("0123456789", 5)).
25
23
 
26
24
  can_find_the_largest_product_of_a_big_number_test() ->
27
- ?assertEqual(23520, ?TESTED_MODULE:lsp("73167176531330624919225119674426574742355349194934", 6)).
25
+ ?assertEqual(23520, largest_series_product:lsp("73167176531330624919225119674426574742355349194934", 6)).
28
26
 
29
27
  can_find_the_largest_product_of_a_big_number_ii_test() ->
30
- ?assertEqual(28350, ?TESTED_MODULE:lsp("52677741234314237566414902593461595376319419139427", 6)).
28
+ ?assertEqual(28350, largest_series_product:lsp("52677741234314237566414902593461595376319419139427", 6)).
31
29
 
32
30
  can_find_the_largest_product_of_a_big_number_project_euler_test() ->
33
- ?assertEqual(23514624000, ?TESTED_MODULE:lsp("7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450", 13)).
31
+ ?assertEqual(23514624000, largest_series_product:lsp("7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450", 13)).
34
32
 
35
33
  reports_zero_if_the_only_digits_are_zero_test() ->
36
- ?assertEqual(0, ?TESTED_MODULE:lsp("0000", 2)).
34
+ ?assertEqual(0, largest_series_product:lsp("0000", 2)).
37
35
 
38
36
  reports_zero_if_all_spans_include_zero_test() ->
39
- ?assertEqual(0, ?TESTED_MODULE:lsp("99099", 3)).
37
+ ?assertEqual(0, largest_series_product:lsp("99099", 3)).
40
38
 
41
39
  rejects_span_longer_than_string_length_test() ->
42
- ?assertMatch(error, ?TESTED_MODULE:lsp("123", 4)).
40
+ ?assertMatch(error, largest_series_product:lsp("123", 4)).
43
41
 
44
42
  reports_1_for_empty_string_and_empty_product_0_span_test() ->
45
- ?assertEqual(1, ?TESTED_MODULE:lsp("", 0)).
43
+ ?assertEqual(1, largest_series_product:lsp("", 0)).
46
44
 
47
45
  reports_1_for_nonempty_string_and_empty_product_0_span_test() ->
48
- ?assertEqual(1, ?TESTED_MODULE:lsp("123", 0)).
46
+ ?assertEqual(1, largest_series_product:lsp("123", 0)).
49
47
 
50
48
  rejects_empty_string_and_nonzero_span_test() ->
51
- ?assertMatch(error, ?TESTED_MODULE:lsp("", 1)).
49
+ ?assertMatch(error, largest_series_product:lsp("", 1)).
52
50
 
53
51
  rejects_invalid_character_in_digits_test() ->
54
- ?assertMatch(error, ?TESTED_MODULE:lsp("1234a5", 2)).
52
+ ?assertMatch(error, largest_series_product:lsp("1234a5", 2)).
55
53
 
56
54
  rejects_negative_span_test() ->
57
- ?assertMatch(error, ?TESTED_MODULE:lsp("12345", -1)).
55
+ ?assertMatch(error, largest_series_product:lsp("12345", -1)).
56
+
57
+ version_test() ->
58
+ ?assertMatch(1, largest_series_product:test_version()).
@@ -1,7 +1,7 @@
1
1
  %% Erlang compiler options
2
2
  {erl_opts, [debug_info]}.
3
3
 
4
- {deps, []}.
4
+ {deps, [{erl_exercism, "0.1.2"}]}.
5
5
 
6
6
  {dialyzer, [
7
7
  {warnings, [underspecs, no_return]},
@@ -2,19 +2,20 @@
2
2
 
3
3
  % This file is automatically generated from the exercises canonical data.
4
4
 
5
- -define(TESTED_MODULE, (sut(leap))).
6
- -define(TEST_VERSION, 3).
7
- -include("exercism.hrl").
5
+ -include_lib("erl_exercism/include/exercism.hrl").
6
+ -include_lib("eunit/include/eunit.hrl").
8
7
 
9
8
 
10
9
  year_not_divisible_by_4_common_year_test() ->
11
- ?assertNot(?TESTED_MODULE:leap_year(2015)).
10
+ ?assertNot(leap:leap_year(2015)).
12
11
 
13
12
  year_divisible_by_4_not_divisible_by_100_leap_year_test() ->
14
- ?assert(?TESTED_MODULE:leap_year(2020)).
13
+ ?assert(leap:leap_year(2020)).
15
14
 
16
15
  year_divisible_by_100_not_divisible_by_400_common_year_test() ->
17
- ?assertNot(?TESTED_MODULE:leap_year(2100)).
16
+ ?assertNot(leap:leap_year(2100)).
18
17
 
19
18
  year_divisible_by_400_leap_year_test() ->
20
- ?assert(?TESTED_MODULE:leap_year(2000)).
19
+ ?assert(leap:leap_year(2000)).
20
+
21
+ version_test() -> ?assertMatch(3, leap:test_version()).
@@ -1,7 +1,7 @@
1
1
  %% Erlang compiler options
2
2
  {erl_opts, [debug_info]}.
3
3
 
4
- {deps, []}.
4
+ {deps, [{erl_exercism, "0.1.1"}]}.
5
5
 
6
6
  {dialyzer, [
7
7
  {warnings, [underspecs, no_return]},
@@ -1,44 +1,46 @@
1
1
  -module(luhn_tests).
2
2
 
3
- -define(TESTED_MODULE, (sut(luhn))).
4
- -define(TEST_VERSION, 2).
5
- -include("exercism.hrl").
3
+ -include_lib("erl_exercism/include/exercism.hrl").
4
+ -include_lib("eunit/include/eunit.hrl").
6
5
 
7
6
  single_digit_strings_can_not_be_valid_test() ->
8
- ?assertNot(?TESTED_MODULE:valid("1")).
7
+ ?assertNot(luhn:valid("1")).
9
8
 
10
9
  a_single_zero_is_invalid_test() ->
11
- ?assertNot(?TESTED_MODULE:valid("0")).
10
+ ?assertNot(luhn:valid("0")).
12
11
 
13
12
  a_simple_valid_sin_that_remains_valid_if_reversed_test() ->
14
- ?assert(?TESTED_MODULE:valid("059")).
13
+ ?assert(luhn:valid("059")).
15
14
 
16
15
  a_simple_valid_sin_that_becomes_invalid_if_reversed_test() ->
17
- ?assert(?TESTED_MODULE:valid("59")).
16
+ ?assert(luhn:valid("59")).
18
17
 
19
18
  a_valid_canadian_sin_test() ->
20
- ?assert(?TESTED_MODULE:valid("055 444 285")).
19
+ ?assert(luhn:valid("055 444 285")).
21
20
 
22
21
  invalid_canadian_sin_test() ->
23
- ?assertNot(?TESTED_MODULE:valid("055 444 286")).
22
+ ?assertNot(luhn:valid("055 444 286")).
24
23
 
25
24
  invalid_credit_card_test() ->
26
- ?assertNot(?TESTED_MODULE:valid("8273 1232 7352 0569")).
25
+ ?assertNot(luhn:valid("8273 1232 7352 0569")).
27
26
 
28
27
  valid_strings_with_a_non_digit_included_become_invalid_test() ->
29
- ?assertNot(?TESTED_MODULE:valid("055a 444 285")).
28
+ ?assertNot(luhn:valid("055a 444 285")).
30
29
 
31
30
  valid_strings_with_punctuation_included_become_invalid_test() ->
32
- ?assertNot(?TESTED_MODULE:valid("055-444-285")).
31
+ ?assertNot(luhn:valid("055-444-285")).
33
32
 
34
33
  valid_strings_with_symbols_included_become_invalid_test() ->
35
- ?assertNot(?TESTED_MODULE:valid("055£ 444$ 285")).
34
+ ?assertNot(luhn:valid("055£ 444$ 285")).
36
35
 
37
36
  single_zero_with_space_is_invalid_test() ->
38
- ?assertNot(?TESTED_MODULE:valid(" 0")).
37
+ ?assertNot(luhn:valid(" 0")).
39
38
 
40
39
  more_than_a_single_zero_is_valid_test() ->
41
- ?assert(?TESTED_MODULE:valid("0000 0")).
40
+ ?assert(luhn:valid("0000 0")).
42
41
 
43
42
  input_digit_9_is_correctly_converted_to_output_digit_9_test() ->
44
- ?assert(?TESTED_MODULE:valid("091")).
43
+ ?assert(luhn:valid("091")).
44
+
45
+ version_test() ->
46
+ ?assertMatch(2, luhn:test_version()).
@@ -1,7 +1,7 @@
1
1
  %% Erlang compiler options
2
2
  {erl_opts, [debug_info]}.
3
3
 
4
- {deps, []}.
4
+ {deps, [{erl_exercism, "0.1.1"}]}.
5
5
 
6
6
  {dialyzer, [
7
7
  {warnings, [underspecs, no_return]},