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
@@ -2,29 +2,31 @@
2
2
 
3
3
  % This file is automatically generated from the exercises canonical data.
4
4
 
5
- -define(TESTED_MODULE, (sut(collatz_conjecture))).
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
  zero_steps_for_one_test() ->
11
- ?assertMatch(0, ?TESTED_MODULE:steps(1)).
10
+ ?assertMatch(0, collatz_conjecture:steps(1)).
12
11
 
13
12
  divide_if_even_test() ->
14
- ?assertMatch(4, ?TESTED_MODULE:steps(16)).
13
+ ?assertMatch(4, collatz_conjecture:steps(16)).
15
14
 
16
15
  even_and_odd_steps_test() ->
17
- ?assertMatch(9, ?TESTED_MODULE:steps(12)).
16
+ ?assertMatch(9, collatz_conjecture:steps(12)).
18
17
 
19
18
  large_number_of_even_and_odd_steps_test() ->
20
- ?assertMatch(152, ?TESTED_MODULE:steps(1000000)).
19
+ ?assertMatch(152, collatz_conjecture:steps(1000000)).
21
20
 
22
21
  zero_is_an_error_test() ->
23
22
  ?assertMatch({error,
24
23
  "Only positive numbers are allowed"},
25
- ?TESTED_MODULE:steps(0)).
24
+ collatz_conjecture:steps(0)).
26
25
 
27
26
  negative_value_is_an_error_test() ->
28
27
  ?assertMatch({error,
29
28
  "Only positive numbers are allowed"},
30
- ?TESTED_MODULE:steps(-15)).
29
+ collatz_conjecture:steps(-15)).
30
+
31
+ version_test() ->
32
+ ?assertMatch(2, collatz_conjecture: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,151 +2,177 @@
2
2
 
3
3
  % This file is automatically generated from the exercises canonical data.
4
4
 
5
- -define(TESTED_MODULE, (sut(complex_numbers))).
6
- -define(TEST_VERSION, 1).
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
  imaginary_unit_test() ->
11
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(-1, 0),
12
- ?TESTED_MODULE:mul(?TESTED_MODULE:new(0, 1),
13
- ?TESTED_MODULE:new(0, 1)))).
10
+ ?assert(complex_numbers:equal(complex_numbers:new(-1,
11
+ 0),
12
+ complex_numbers:mul(complex_numbers:new(0, 1),
13
+ complex_numbers:new(0,
14
+ 1)))).
14
15
 
15
16
  add_purely_real_numbers_test() ->
16
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(3, 0),
17
- ?TESTED_MODULE:add(?TESTED_MODULE:new(1, 0),
18
- ?TESTED_MODULE:new(2, 0)))).
17
+ ?assert(complex_numbers:equal(complex_numbers:new(3, 0),
18
+ complex_numbers:add(complex_numbers:new(1, 0),
19
+ complex_numbers:new(2,
20
+ 0)))).
19
21
 
20
22
  add_purely_imaginary_numbers_test() ->
21
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(0, 3),
22
- ?TESTED_MODULE:add(?TESTED_MODULE:new(0, 1),
23
- ?TESTED_MODULE:new(0, 2)))).
23
+ ?assert(complex_numbers:equal(complex_numbers:new(0, 3),
24
+ complex_numbers:add(complex_numbers:new(0, 1),
25
+ complex_numbers:new(0,
26
+ 2)))).
24
27
 
25
28
  add_numbers_with_real_and_imaginary_part_test() ->
26
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(4, 6),
27
- ?TESTED_MODULE:add(?TESTED_MODULE:new(1, 2),
28
- ?TESTED_MODULE:new(3, 4)))).
29
+ ?assert(complex_numbers:equal(complex_numbers:new(4, 6),
30
+ complex_numbers:add(complex_numbers:new(1, 2),
31
+ complex_numbers:new(3,
32
+ 4)))).
29
33
 
30
34
  subtract_purely_real_numbers_test() ->
31
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(-1, 0),
32
- ?TESTED_MODULE:sub(?TESTED_MODULE:new(1, 0),
33
- ?TESTED_MODULE:new(2, 0)))).
35
+ ?assert(complex_numbers:equal(complex_numbers:new(-1,
36
+ 0),
37
+ complex_numbers:sub(complex_numbers:new(1, 0),
38
+ complex_numbers:new(2,
39
+ 0)))).
34
40
 
35
41
  subtract_purely_imaginary_numbers_test() ->
36
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(0, -1),
37
- ?TESTED_MODULE:sub(?TESTED_MODULE:new(0, 1),
38
- ?TESTED_MODULE:new(0, 2)))).
42
+ ?assert(complex_numbers:equal(complex_numbers:new(0,
43
+ -1),
44
+ complex_numbers:sub(complex_numbers:new(0, 1),
45
+ complex_numbers:new(0,
46
+ 2)))).
39
47
 
40
48
  subtract_numbers_with_real_and_imaginary_part_test() ->
41
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(-2, -2),
42
- ?TESTED_MODULE:sub(?TESTED_MODULE:new(1, 2),
43
- ?TESTED_MODULE:new(3, 4)))).
49
+ ?assert(complex_numbers:equal(complex_numbers:new(-2,
50
+ -2),
51
+ complex_numbers:sub(complex_numbers:new(1, 2),
52
+ complex_numbers:new(3,
53
+ 4)))).
44
54
 
45
55
  multiply_purely_real_numbers_test() ->
46
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(2, 0),
47
- ?TESTED_MODULE:mul(?TESTED_MODULE:new(1, 0),
48
- ?TESTED_MODULE:new(2, 0)))).
56
+ ?assert(complex_numbers:equal(complex_numbers:new(2, 0),
57
+ complex_numbers:mul(complex_numbers:new(1, 0),
58
+ complex_numbers:new(2,
59
+ 0)))).
49
60
 
50
61
  multiply_purely_imaginary_numbers_test() ->
51
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(-2, 0),
52
- ?TESTED_MODULE:mul(?TESTED_MODULE:new(0, 1),
53
- ?TESTED_MODULE:new(0, 2)))).
62
+ ?assert(complex_numbers:equal(complex_numbers:new(-2,
63
+ 0),
64
+ complex_numbers:mul(complex_numbers:new(0, 1),
65
+ complex_numbers:new(0,
66
+ 2)))).
54
67
 
55
68
  multiply_numbers_with_real_and_imaginary_part_test() ->
56
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(-5, 10),
57
- ?TESTED_MODULE:mul(?TESTED_MODULE:new(1, 2),
58
- ?TESTED_MODULE:new(3, 4)))).
69
+ ?assert(complex_numbers:equal(complex_numbers:new(-5,
70
+ 10),
71
+ complex_numbers:mul(complex_numbers:new(1, 2),
72
+ complex_numbers:new(3,
73
+ 4)))).
59
74
 
60
75
  divide_purely_real_numbers_test() ->
61
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(5.0e-1,
62
- 0),
63
- ?TESTED_MODULE:divide(?TESTED_MODULE:new(1, 0),
64
- ?TESTED_MODULE:new(2,
65
- 0)))).
76
+ ?assert(complex_numbers:equal(complex_numbers:new(5.0e-1,
77
+ 0),
78
+ complex_numbers:divide(complex_numbers:new(1,
79
+ 0),
80
+ complex_numbers:new(2,
81
+ 0)))).
66
82
 
67
83
  divide_purely_imaginary_numbers_test() ->
68
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(5.0e-1,
69
- 0),
70
- ?TESTED_MODULE:divide(?TESTED_MODULE:new(0, 1),
71
- ?TESTED_MODULE:new(0,
72
- 2)))).
84
+ ?assert(complex_numbers:equal(complex_numbers:new(5.0e-1,
85
+ 0),
86
+ complex_numbers:divide(complex_numbers:new(0,
87
+ 1),
88
+ complex_numbers:new(0,
89
+ 2)))).
73
90
 
74
91
  divide_numbers_with_real_and_imaginary_part_test() ->
75
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(4.4e-1,
76
- 8.0e-2),
77
- ?TESTED_MODULE:divide(?TESTED_MODULE:new(1, 2),
78
- ?TESTED_MODULE:new(3,
79
- 4)))).
92
+ ?assert(complex_numbers:equal(complex_numbers:new(4.4e-1,
93
+ 8.0e-2),
94
+ complex_numbers:divide(complex_numbers:new(1,
95
+ 2),
96
+ complex_numbers:new(3,
97
+ 4)))).
80
98
 
81
99
  absolute_value_of_a_positive_purely_real_number_test() ->
82
100
  ?assert(5 ==
83
- ?TESTED_MODULE:abs(?TESTED_MODULE:new(5, 0))).
101
+ complex_numbers:abs(complex_numbers:new(5, 0))).
84
102
 
85
103
  absolute_value_of_a_negative_purely_real_number_test() ->
86
104
  ?assert(5 ==
87
- ?TESTED_MODULE:abs(?TESTED_MODULE:new(-5, 0))).
105
+ complex_numbers:abs(complex_numbers:new(-5, 0))).
88
106
 
89
107
  absolute_value_of_a_purely_imaginary_number_with_positive_imaginary_part_test() ->
90
108
  ?assert(5 ==
91
- ?TESTED_MODULE:abs(?TESTED_MODULE:new(0, 5))).
109
+ complex_numbers:abs(complex_numbers:new(0, 5))).
92
110
 
93
111
  absolute_value_of_a_purely_imaginary_number_with_negative_imaginary_part_test() ->
94
112
  ?assert(5 ==
95
- ?TESTED_MODULE:abs(?TESTED_MODULE:new(0, -5))).
113
+ complex_numbers:abs(complex_numbers:new(0, -5))).
96
114
 
97
115
  absolute_value_of_a_number_with_real_and_imaginary_part_test() ->
98
116
  ?assert(5 ==
99
- ?TESTED_MODULE:abs(?TESTED_MODULE:new(3, 4))).
117
+ complex_numbers:abs(complex_numbers:new(3, 4))).
100
118
 
101
119
  conjugate_a_purely_real_number_test() ->
102
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(5, 0),
103
- ?TESTED_MODULE:conjugate(?TESTED_MODULE:new(5,
104
- 0)))).
120
+ ?assert(complex_numbers:equal(complex_numbers:new(5, 0),
121
+ complex_numbers:conjugate(complex_numbers:new(5,
122
+ 0)))).
105
123
 
106
124
  conjugate_a_purely_imaginary_number_test() ->
107
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(0, -5),
108
- ?TESTED_MODULE:conjugate(?TESTED_MODULE:new(0,
109
- 5)))).
125
+ ?assert(complex_numbers:equal(complex_numbers:new(0,
126
+ -5),
127
+ complex_numbers:conjugate(complex_numbers:new(0,
128
+ 5)))).
110
129
 
111
130
  conjugate_a_number_with_real_and_imaginary_part_test() ->
112
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(1, -1),
113
- ?TESTED_MODULE:conjugate(?TESTED_MODULE:new(1,
114
- 1)))).
131
+ ?assert(complex_numbers:equal(complex_numbers:new(1,
132
+ -1),
133
+ complex_numbers:conjugate(complex_numbers:new(1,
134
+ 1)))).
115
135
 
116
136
  real_part_of_a_purely_real_number_test() ->
117
137
  ?assert(1 ==
118
- ?TESTED_MODULE:real(?TESTED_MODULE:new(1, 0))).
138
+ complex_numbers:real(complex_numbers:new(1, 0))).
119
139
 
120
140
  real_part_of_a_purely_imaginary_number_test() ->
121
141
  ?assert(0 ==
122
- ?TESTED_MODULE:real(?TESTED_MODULE:new(0, 1))).
142
+ complex_numbers:real(complex_numbers:new(0, 1))).
123
143
 
124
144
  real_part_of_a_number_with_real_and_imaginary_part_test() ->
125
145
  ?assert(1 ==
126
- ?TESTED_MODULE:real(?TESTED_MODULE:new(1, 2))).
146
+ complex_numbers:real(complex_numbers:new(1, 2))).
127
147
 
128
148
  imaginary_part_of_a_purely_real_number_test() ->
129
149
  ?assert(0 ==
130
- ?TESTED_MODULE:imaginary(?TESTED_MODULE:new(1, 0))).
150
+ complex_numbers:imaginary(complex_numbers:new(1, 0))).
131
151
 
132
152
  imaginary_part_of_a_purely_imaginary_number_test() ->
133
153
  ?assert(1 ==
134
- ?TESTED_MODULE:imaginary(?TESTED_MODULE:new(0, 1))).
154
+ complex_numbers:imaginary(complex_numbers:new(0, 1))).
135
155
 
136
156
  imaginary_part_of_a_number_with_real_and_imaginary_part_test() ->
137
157
  ?assert(2 ==
138
- ?TESTED_MODULE:imaginary(?TESTED_MODULE:new(1, 2))).
158
+ complex_numbers:imaginary(complex_numbers:new(1, 2))).
139
159
 
140
160
  eulers_identityformula_test() ->
141
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(-1, 0),
142
- ?TESTED_MODULE:exp(?TESTED_MODULE:new(0,
143
- 3.14159265358979311600)))).
161
+ ?assert(complex_numbers:equal(complex_numbers:new(-1,
162
+ 0),
163
+ complex_numbers:exp(complex_numbers:new(0,
164
+ 3.14159265358979311600)))).
144
165
 
145
166
  exponential_of_0_test() ->
146
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(1, 0),
147
- ?TESTED_MODULE:exp(?TESTED_MODULE:new(0, 0)))).
167
+ ?assert(complex_numbers:equal(complex_numbers:new(1, 0),
168
+ complex_numbers:exp(complex_numbers:new(0,
169
+ 0)))).
148
170
 
149
171
  exponential_of_a_purely_real_number_test() ->
150
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:new(2.71828182845904509080,
151
- 0),
152
- ?TESTED_MODULE:exp(?TESTED_MODULE:new(1, 0)))).
172
+ ?assert(complex_numbers:equal(complex_numbers:new(2.71828182845904509080,
173
+ 0),
174
+ complex_numbers:exp(complex_numbers:new(1,
175
+ 0)))).
176
+
177
+ version_test() ->
178
+ ?assertMatch(1, complex_numbers: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,187 +2,178 @@
2
2
 
3
3
  % This file is automatically generated from the exercises canonical data.
4
4
 
5
- -define(TESTED_MODULE, (sut(custom_set))).
6
- -define(TEST_VERSION, 1).
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
  sets_with_no_elements_are_empty_test() ->
11
- ?assert(?TESTED_MODULE:empty(?TESTED_MODULE:from_list([]))).
10
+ ?assert(custom_set:empty(custom_set:from_list([]))).
12
11
 
13
12
  sets_with_elements_are_not_empty_test() ->
14
- ?assertNot(?TESTED_MODULE:empty(?TESTED_MODULE:from_list([1]))).
13
+ ?assertNot(custom_set:empty(custom_set:from_list([1]))).
15
14
 
16
15
  nothing_is_contained_in_an_empty_set_test() ->
17
- ?assertNot(?TESTED_MODULE:contains(1,
18
- ?TESTED_MODULE:from_list([]))).
16
+ ?assertNot(custom_set:contains(1,
17
+ custom_set:from_list([]))).
19
18
 
20
19
  when_the_element_is_in_the_set_test() ->
21
- ?assert(?TESTED_MODULE:contains(1,
22
- ?TESTED_MODULE:from_list([1, 2, 3]))).
20
+ ?assert(custom_set:contains(1,
21
+ custom_set:from_list([1, 2, 3]))).
23
22
 
24
23
  when_the_element_is_not_in_the_set_test() ->
25
- ?assertNot(?TESTED_MODULE:contains(4,
26
- ?TESTED_MODULE:from_list([1, 2, 3]))).
24
+ ?assertNot(custom_set:contains(4,
25
+ custom_set:from_list([1, 2, 3]))).
27
26
 
28
27
  empty_set_is_a_subset_of_another_empty_set_test() ->
29
- ?assert(?TESTED_MODULE:subset(?TESTED_MODULE:from_list([]),
30
- ?TESTED_MODULE:from_list([]))).
28
+ ?assert(custom_set:subset(custom_set:from_list([]),
29
+ custom_set:from_list([]))).
31
30
 
32
31
  empty_set_is_a_subset_of_non_empty_set_test() ->
33
- ?assert(?TESTED_MODULE:subset(?TESTED_MODULE:from_list([]),
34
- ?TESTED_MODULE:from_list([1]))).
32
+ ?assert(custom_set:subset(custom_set:from_list([]),
33
+ custom_set:from_list([1]))).
35
34
 
36
35
  non_empty_set_is_not_a_subset_of_empty_set_test() ->
37
- ?assertNot(?TESTED_MODULE:subset(?TESTED_MODULE:from_list([1]),
38
- ?TESTED_MODULE:from_list([]))).
36
+ ?assertNot(custom_set:subset(custom_set:from_list([1]),
37
+ custom_set:from_list([]))).
39
38
 
40
39
  set_is_a_subset_of_set_with_exact_same_elements_test() ->
41
- ?assert(?TESTED_MODULE:subset(?TESTED_MODULE:from_list([1,
42
- 2, 3]),
43
- ?TESTED_MODULE:from_list([1, 2, 3]))).
40
+ ?assert(custom_set:subset(custom_set:from_list([1, 2,
41
+ 3]),
42
+ custom_set:from_list([1, 2, 3]))).
44
43
 
45
44
  set_is_a_subset_of_larger_set_with_same_elements_test() ->
46
- ?assert(?TESTED_MODULE:subset(?TESTED_MODULE:from_list([1,
47
- 2, 3]),
48
- ?TESTED_MODULE:from_list([4, 1, 2, 3]))).
45
+ ?assert(custom_set:subset(custom_set:from_list([1, 2,
46
+ 3]),
47
+ custom_set:from_list([4, 1, 2, 3]))).
49
48
 
50
49
  set_is_not_a_subset_of_set_that_does_not_contain_its_elements_test() ->
51
- ?assertNot(?TESTED_MODULE:subset(?TESTED_MODULE:from_list([1,
52
- 2, 3]),
53
- ?TESTED_MODULE:from_list([4, 1, 3]))).
50
+ ?assertNot(custom_set:subset(custom_set:from_list([1, 2,
51
+ 3]),
52
+ custom_set:from_list([4, 1, 3]))).
54
53
 
55
54
  the_empty_set_is_disjoint_with_itself_test() ->
56
- ?assert(?TESTED_MODULE:disjoint(?TESTED_MODULE:from_list([]),
57
- ?TESTED_MODULE:from_list([]))).
55
+ ?assert(custom_set:disjoint(custom_set:from_list([]),
56
+ custom_set:from_list([]))).
58
57
 
59
58
  empty_set_is_disjoint_with_non_empty_set_test() ->
60
- ?assert(?TESTED_MODULE:disjoint(?TESTED_MODULE:from_list([]),
61
- ?TESTED_MODULE:from_list([1]))).
59
+ ?assert(custom_set:disjoint(custom_set:from_list([]),
60
+ custom_set:from_list([1]))).
62
61
 
63
62
  non_empty_set_is_disjoint_with_empty_set_test() ->
64
- ?assert(?TESTED_MODULE:disjoint(?TESTED_MODULE:from_list([1]),
65
- ?TESTED_MODULE:from_list([]))).
63
+ ?assert(custom_set:disjoint(custom_set:from_list([1]),
64
+ custom_set:from_list([]))).
66
65
 
67
66
  sets_are_not_disjoint_if_they_share_an_element_test() ->
68
- ?assertNot(?TESTED_MODULE:disjoint(?TESTED_MODULE:from_list([1,
69
- 2]),
70
- ?TESTED_MODULE:from_list([2, 3]))).
67
+ ?assertNot(custom_set:disjoint(custom_set:from_list([1,
68
+ 2]),
69
+ custom_set:from_list([2, 3]))).
71
70
 
72
71
  sets_are_disjoint_if_they_share_no_elements_test() ->
73
- ?assert(?TESTED_MODULE:disjoint(?TESTED_MODULE:from_list([1,
74
- 2]),
75
- ?TESTED_MODULE:from_list([3, 4]))).
72
+ ?assert(custom_set:disjoint(custom_set:from_list([1,
73
+ 2]),
74
+ custom_set:from_list([3, 4]))).
76
75
 
77
76
  empty_sets_are_equal_test() ->
78
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:from_list([]),
79
- ?TESTED_MODULE:from_list([]))).
77
+ ?assert(custom_set:equal(custom_set:from_list([]),
78
+ custom_set:from_list([]))).
80
79
 
81
80
  empty_set_is_not_equal_to_non_empty_set_test() ->
82
- ?assertNot(?TESTED_MODULE:equal(?TESTED_MODULE:from_list([]),
83
- ?TESTED_MODULE:from_list([1, 2, 3]))).
81
+ ?assertNot(custom_set:equal(custom_set:from_list([]),
82
+ custom_set:from_list([1, 2, 3]))).
84
83
 
85
84
  non_empty_set_is_not_equal_to_empty_set_test() ->
86
- ?assertNot(?TESTED_MODULE:equal(?TESTED_MODULE:from_list([1,
87
- 2, 3]),
88
- ?TESTED_MODULE:from_list([]))).
85
+ ?assertNot(custom_set:equal(custom_set:from_list([1, 2,
86
+ 3]),
87
+ custom_set:from_list([]))).
89
88
 
90
89
  sets_with_the_same_elements_are_equal_test() ->
91
- ?assert(?TESTED_MODULE:equal(?TESTED_MODULE:from_list([1,
92
- 2]),
93
- ?TESTED_MODULE:from_list([2, 1]))).
90
+ ?assert(custom_set:equal(custom_set:from_list([1, 2]),
91
+ custom_set:from_list([2, 1]))).
94
92
 
95
93
  sets_with_different_elements_are_not_equal_test() ->
96
- ?assertNot(?TESTED_MODULE:equal(?TESTED_MODULE:from_list([1,
97
- 2, 3]),
98
- ?TESTED_MODULE:from_list([1, 2, 4]))).
94
+ ?assertNot(custom_set:equal(custom_set:from_list([1, 2,
95
+ 3]),
96
+ custom_set:from_list([1, 2, 4]))).
99
97
 
100
98
  add_to_empty_set_test() ->
101
- ?assertEqual(?TESTED_MODULE:from_list([3]),
102
- ?TESTED_MODULE:add(3, ?TESTED_MODULE:from_list([]))).
99
+ ?assertEqual(custom_set:from_list([3]),
100
+ custom_set:add(3, custom_set:from_list([]))).
103
101
 
104
102
  add_to_non_empty_set_test() ->
105
- ?assertEqual(?TESTED_MODULE:from_list([1, 2, 3, 4]),
106
- ?TESTED_MODULE:add(3,
107
- ?TESTED_MODULE:from_list([1, 2, 4]))).
103
+ ?assertEqual(custom_set:from_list([1, 2, 3, 4]),
104
+ custom_set:add(3, custom_set:from_list([1, 2, 4]))).
108
105
 
109
106
  adding_an_existing_element_does_not_change_the_set_test() ->
110
- ?assertEqual(?TESTED_MODULE:from_list([1, 2, 3]),
111
- ?TESTED_MODULE:add(3,
112
- ?TESTED_MODULE:from_list([1, 2, 3]))).
107
+ ?assertEqual(custom_set:from_list([1, 2, 3]),
108
+ custom_set:add(3, custom_set:from_list([1, 2, 3]))).
113
109
 
114
110
  intersection_of_two_empty_sets_is_an_empty_set_test() ->
115
- ?assertEqual(?TESTED_MODULE:from_list([]),
116
- ?TESTED_MODULE:intersection(?TESTED_MODULE:from_list([]),
117
- ?TESTED_MODULE:from_list([]))).
111
+ ?assertEqual(custom_set:from_list([]),
112
+ custom_set:intersection(custom_set:from_list([]),
113
+ custom_set:from_list([]))).
118
114
 
119
115
  intersection_of_an_empty_set_and_non_empty_set_is_an_empty_set_test() ->
120
- ?assertEqual(?TESTED_MODULE:from_list([]),
121
- ?TESTED_MODULE:intersection(?TESTED_MODULE:from_list([]),
122
- ?TESTED_MODULE:from_list([3, 2,
123
- 5]))).
116
+ ?assertEqual(custom_set:from_list([]),
117
+ custom_set:intersection(custom_set:from_list([]),
118
+ custom_set:from_list([3, 2, 5]))).
124
119
 
125
120
  intersection_of_a_non_empty_set_and_an_empty_set_is_an_empty_set_test() ->
126
- ?assertEqual(?TESTED_MODULE:from_list([]),
127
- ?TESTED_MODULE:intersection(?TESTED_MODULE:from_list([1,
128
- 2, 3,
129
- 4]),
130
- ?TESTED_MODULE:from_list([]))).
121
+ ?assertEqual(custom_set:from_list([]),
122
+ custom_set:intersection(custom_set:from_list([1, 2, 3,
123
+ 4]),
124
+ custom_set:from_list([]))).
131
125
 
132
126
  intersection_of_two_sets_with_no_shared_elements_is_an_empty_set_test() ->
133
- ?assertEqual(?TESTED_MODULE:from_list([]),
134
- ?TESTED_MODULE:intersection(?TESTED_MODULE:from_list([1,
135
- 2, 3]),
136
- ?TESTED_MODULE:from_list([4, 5,
137
- 6]))).
127
+ ?assertEqual(custom_set:from_list([]),
128
+ custom_set:intersection(custom_set:from_list([1, 2, 3]),
129
+ custom_set:from_list([4, 5, 6]))).
138
130
 
139
131
  intersection_of_two_sets_with_shared_elements_is_a_set_of_the_shared_elements_test() ->
140
- ?assertEqual(?TESTED_MODULE:from_list([2, 3]),
141
- ?TESTED_MODULE:intersection(?TESTED_MODULE:from_list([1,
142
- 2, 3,
143
- 4]),
144
- ?TESTED_MODULE:from_list([3, 2,
145
- 5]))).
132
+ ?assertEqual(custom_set:from_list([2, 3]),
133
+ custom_set:intersection(custom_set:from_list([1, 2, 3,
134
+ 4]),
135
+ custom_set:from_list([3, 2, 5]))).
146
136
 
147
137
  difference_of_two_empty_sets_is_an_empty_set_test() ->
148
- ?assertEqual(?TESTED_MODULE:from_list([]),
149
- ?TESTED_MODULE:difference(?TESTED_MODULE:from_list([]),
150
- ?TESTED_MODULE:from_list([]))).
138
+ ?assertEqual(custom_set:from_list([]),
139
+ custom_set:difference(custom_set:from_list([]),
140
+ custom_set:from_list([]))).
151
141
 
152
142
  difference_of_empty_set_and_non_empty_set_is_an_empty_set_test() ->
153
- ?assertEqual(?TESTED_MODULE:from_list([]),
154
- ?TESTED_MODULE:difference(?TESTED_MODULE:from_list([]),
155
- ?TESTED_MODULE:from_list([3, 2,
156
- 5]))).
143
+ ?assertEqual(custom_set:from_list([]),
144
+ custom_set:difference(custom_set:from_list([]),
145
+ custom_set:from_list([3, 2, 5]))).
157
146
 
158
147
  difference_of_a_non_empty_set_and_an_empty_set_is_the_non_empty_set_test() ->
159
- ?assertEqual(?TESTED_MODULE:from_list([1, 2, 3, 4]),
160
- ?TESTED_MODULE:difference(?TESTED_MODULE:from_list([1,
161
- 2, 3, 4]),
162
- ?TESTED_MODULE:from_list([]))).
148
+ ?assertEqual(custom_set:from_list([1, 2, 3, 4]),
149
+ custom_set:difference(custom_set:from_list([1, 2, 3,
150
+ 4]),
151
+ custom_set:from_list([]))).
163
152
 
164
153
  difference_of_two_non_empty_sets_is_a_set_of_elements_that_are_only_in_the_first_set_test() ->
165
- ?assertEqual(?TESTED_MODULE:from_list([1, 3]),
166
- ?TESTED_MODULE:difference(?TESTED_MODULE:from_list([3,
167
- 2, 1]),
168
- ?TESTED_MODULE:from_list([2, 4]))).
154
+ ?assertEqual(custom_set:from_list([1, 3]),
155
+ custom_set:difference(custom_set:from_list([3, 2, 1]),
156
+ custom_set:from_list([2, 4]))).
169
157
 
170
158
  union_of_empty_sets_is_an_empty_set_test() ->
171
- ?assertEqual(?TESTED_MODULE:from_list([]),
172
- ?TESTED_MODULE:union(?TESTED_MODULE:from_list([]),
173
- ?TESTED_MODULE:from_list([]))).
159
+ ?assertEqual(custom_set:from_list([]),
160
+ custom_set:union(custom_set:from_list([]),
161
+ custom_set:from_list([]))).
174
162
 
175
163
  union_of_an_empty_set_and_non_empty_set_is_the_non_empty_set_test() ->
176
- ?assertEqual(?TESTED_MODULE:from_list([2]),
177
- ?TESTED_MODULE:union(?TESTED_MODULE:from_list([]),
178
- ?TESTED_MODULE:from_list([2]))).
164
+ ?assertEqual(custom_set:from_list([2]),
165
+ custom_set:union(custom_set:from_list([]),
166
+ custom_set:from_list([2]))).
179
167
 
180
168
  union_of_a_non_empty_set_and_empty_set_is_the_non_empty_set_test() ->
181
- ?assertEqual(?TESTED_MODULE:from_list([1, 3]),
182
- ?TESTED_MODULE:union(?TESTED_MODULE:from_list([1, 3]),
183
- ?TESTED_MODULE:from_list([]))).
169
+ ?assertEqual(custom_set:from_list([1, 3]),
170
+ custom_set:union(custom_set:from_list([1, 3]),
171
+ custom_set:from_list([]))).
184
172
 
185
173
  union_of_non_empty_sets_contains_all_unique_elements_test() ->
186
- ?assertEqual(?TESTED_MODULE:from_list([3, 2, 1]),
187
- ?TESTED_MODULE:union(?TESTED_MODULE:from_list([1, 3]),
188
- ?TESTED_MODULE:from_list([2, 3]))).
174
+ ?assertEqual(custom_set:from_list([3, 2, 1]),
175
+ custom_set:union(custom_set:from_list([1, 3]),
176
+ custom_set:from_list([2, 3]))).
177
+
178
+ version_test() ->
179
+ ?assertMatch(1, custom_set: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,13 +1,11 @@
1
1
  -module(difference_of_squares_tests).
2
2
 
3
- -define(TESTED_MODULE, (sut(difference_of_squares))).
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(assertSumOfSquares(Expected, Number), ?assertEqual(Expected, ?TESTED_MODULE:sum_of_squares(Number))).
9
- -define(assertSquareOfSums(Expected, Number), ?assertEqual(Expected, ?TESTED_MODULE:square_of_sums(Number))).
10
- -define(assertDifference(Expected, Number), ?assertEqual(Expected, ?TESTED_MODULE:difference_of_squares(Number))).
6
+ -define(assertSumOfSquares(Expected, Number), ?assertEqual(Expected, difference_of_squares:sum_of_squares(Number))).
7
+ -define(assertSquareOfSums(Expected, Number), ?assertEqual(Expected, difference_of_squares:square_of_sums(Number))).
8
+ -define(assertDifference(Expected, Number), ?assertEqual(Expected, difference_of_squares:difference_of_squares(Number))).
11
9
 
12
10
  %% Square the sum of the numbers up to the given number
13
11
 
@@ -44,3 +42,6 @@ difference_of_squares_10_test() ->
44
42
 
45
43
  difference_of_squares_100_test() ->
46
44
  ?assertDifference( 25164150, 100 ).
45
+
46
+ version_test() ->
47
+ ?assertMatch(1, difference_of_squares: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]},