trackler 2.2.0.0 → 2.2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/CONTRIBUTING.md +1 -1
  4. data/tracks/bash/.travis.yml +1 -1
  5. data/tracks/bash/config.json +30 -3
  6. data/tracks/c/README.md +1 -1
  7. data/tracks/c/config.json +131 -39
  8. data/tracks/ceylon/README.md +6 -6
  9. data/tracks/ceylon/config.json +21 -3
  10. data/tracks/chapel/.travis.yml +1 -1
  11. data/tracks/clojurescript/.travis.yml +1 -1
  12. data/tracks/clojurescript/README.md +6 -6
  13. data/tracks/clojurescript/exercises/.keep +0 -0
  14. data/tracks/coffeescript/.travis.yml +1 -1
  15. data/tracks/coldfusion/.travis.yml +1 -1
  16. data/tracks/coq/.travis.yml +1 -1
  17. data/tracks/cpp/CMakeLists.txt +1 -0
  18. data/tracks/cpp/README.md +1 -1
  19. data/tracks/cpp/config.json +8 -0
  20. data/tracks/cpp/exercises/atbash-cipher/CMakeLists.txt +52 -0
  21. data/tracks/cpp/exercises/atbash-cipher/atbash_cipher_test.cpp +68 -0
  22. data/tracks/cpp/exercises/atbash-cipher/example.cpp +54 -0
  23. data/tracks/cpp/exercises/atbash-cipher/example.h +13 -0
  24. data/tracks/csharp/config.json +315 -6
  25. data/tracks/d/.travis.yml +1 -1
  26. data/tracks/dart/README.md +2 -2
  27. data/tracks/dart/config.json +21 -3
  28. data/tracks/delphi/README.md +1 -1
  29. data/tracks/delphi/config.json +83 -1
  30. data/tracks/ecmascript/config.json +10 -0
  31. data/tracks/ecmascript/exercises/accumulate/accumulate.spec.js +3 -9
  32. data/tracks/ecmascript/exercises/acronym/acronym.spec.js +2 -2
  33. data/tracks/ecmascript/exercises/all-your-base/all-your-base.spec.js +131 -133
  34. data/tracks/ecmascript/exercises/all-your-base/example.js +1 -3
  35. data/tracks/ecmascript/exercises/allergies/allergies.spec.js +8 -10
  36. data/tracks/ecmascript/exercises/allergies/example.js +3 -5
  37. data/tracks/ecmascript/exercises/alphametics/alphametics.spec.js +61 -63
  38. data/tracks/ecmascript/exercises/alphametics/example.js +99 -99
  39. data/tracks/ecmascript/exercises/anagram/anagram.spec.js +35 -37
  40. data/tracks/ecmascript/exercises/anagram/example.js +1 -3
  41. data/tracks/ecmascript/exercises/atbash-cipher/atbash-cipher.spec.js +1 -3
  42. data/tracks/ecmascript/exercises/atbash-cipher/example.js +3 -3
  43. data/tracks/ecmascript/exercises/beer-song/beer-song.spec.js +0 -2
  44. data/tracks/ecmascript/exercises/beer-song/example.js +9 -9
  45. data/tracks/ecmascript/exercises/binary/binary.spec.js +1 -2
  46. data/tracks/ecmascript/exercises/binary/example.js +3 -3
  47. data/tracks/ecmascript/exercises/binary-search/binary-search.spec.js +1 -3
  48. data/tracks/ecmascript/exercises/binary-search-tree/binary-search-tree.spec.js +13 -15
  49. data/tracks/ecmascript/exercises/binary-search-tree/example.js +2 -2
  50. data/tracks/ecmascript/exercises/bob/bob.spec.js +1 -3
  51. data/tracks/ecmascript/exercises/bob/example.js +3 -3
  52. data/tracks/ecmascript/exercises/bracket-push/example.js +2 -2
  53. data/tracks/ecmascript/exercises/circular-buffer/circular-buffer.spec.js +10 -12
  54. data/tracks/ecmascript/exercises/circular-buffer/example.js +12 -11
  55. data/tracks/ecmascript/exercises/clock/clock.spec.js +0 -8
  56. data/tracks/ecmascript/exercises/clock/example.js +11 -11
  57. data/tracks/ecmascript/exercises/connect/connect.spec.js +75 -77
  58. data/tracks/ecmascript/exercises/connect/example.js +27 -29
  59. data/tracks/ecmascript/exercises/crypto-square/crypto-square.spec.js +11 -11
  60. data/tracks/ecmascript/exercises/crypto-square/example.js +11 -10
  61. data/tracks/ecmascript/exercises/custom-set/custom-set.spec.js +2 -4
  62. data/tracks/ecmascript/exercises/custom-set/example.js +1 -1
  63. data/tracks/ecmascript/exercises/diamond/diamond.spec.js +20 -21
  64. data/tracks/ecmascript/exercises/diamond/example.js +12 -13
  65. data/tracks/ecmascript/exercises/difference-of-squares/difference-of-squares.spec.js +0 -5
  66. data/tracks/ecmascript/exercises/diffie-hellman/diffie-hellman.spec.js +7 -28
  67. data/tracks/ecmascript/exercises/etl/etl.spec.js +36 -18
  68. data/tracks/ecmascript/exercises/etl/example.js +3 -3
  69. data/tracks/ecmascript/exercises/flatten-array/example.js +1 -1
  70. data/tracks/ecmascript/exercises/flatten-array/flatten-array.spec.js +2 -3
  71. data/tracks/ecmascript/exercises/food-chain/example.js +12 -12
  72. data/tracks/ecmascript/exercises/food-chain/food-chain.spec.js +0 -1
  73. data/tracks/ecmascript/exercises/gigasecond/example.js +1 -1
  74. data/tracks/ecmascript/exercises/gigasecond/gigasecond.spec.js +0 -1
  75. data/tracks/ecmascript/exercises/grade-school/grade-school.spec.js +18 -19
  76. data/tracks/ecmascript/exercises/grains/grains.spec.js +0 -1
  77. data/tracks/ecmascript/exercises/hamming/example.js +3 -3
  78. data/tracks/ecmascript/exercises/hamming/hamming.spec.js +5 -6
  79. data/tracks/ecmascript/exercises/hello-world/example.js +1 -1
  80. data/tracks/ecmascript/exercises/hello-world/hello-world.spec.js +1 -1
  81. data/tracks/ecmascript/exercises/hexadecimal/example.js +2 -2
  82. data/tracks/ecmascript/exercises/hexadecimal/hexadecimal.spec.js +9 -11
  83. data/tracks/ecmascript/exercises/isogram/isogram.spec.js +22 -23
  84. data/tracks/ecmascript/exercises/kindergarten-garden/example.js +7 -7
  85. data/tracks/ecmascript/exercises/kindergarten-garden/kindergarten-garden.spec.js +0 -5
  86. data/tracks/ecmascript/exercises/largest-series-product/example.js +4 -8
  87. data/tracks/ecmascript/exercises/largest-series-product/largest-series-product.spec.js +5 -7
  88. data/tracks/ecmascript/exercises/leap/leap.spec.js +4 -6
  89. data/tracks/ecmascript/exercises/linked-list/example.js +2 -2
  90. data/tracks/ecmascript/exercises/list-ops/example.js +19 -19
  91. data/tracks/ecmascript/exercises/list-ops/list-ops.spec.js +2 -18
  92. data/tracks/ecmascript/exercises/luhn/example.js +1 -1
  93. data/tracks/ecmascript/exercises/luhn/luhn.spec.js +1 -3
  94. data/tracks/ecmascript/exercises/matrix/example.js +2 -4
  95. data/tracks/ecmascript/exercises/matrix/matrix.spec.js +0 -2
  96. data/tracks/ecmascript/exercises/meetup/example.js +12 -15
  97. data/tracks/ecmascript/exercises/meetup/meetup.spec.js +0 -2
  98. data/tracks/ecmascript/exercises/minesweeper/example.js +60 -0
  99. data/tracks/ecmascript/exercises/minesweeper/minesweeper.spec.js +174 -0
  100. data/tracks/ecmascript/exercises/minesweeper/package.json +69 -0
  101. data/tracks/ecmascript/exercises/nth-prime/example.js +3 -2
  102. data/tracks/ecmascript/exercises/nth-prime/nth-prime.spec.js +0 -1
  103. data/tracks/ecmascript/exercises/ocr-numbers/example.js +3 -3
  104. data/tracks/ecmascript/exercises/ocr-numbers/ocr-numbers.spec.js +16 -18
  105. data/tracks/ecmascript/exercises/octal/example.js +1 -1
  106. data/tracks/ecmascript/exercises/octal/octal.spec.js +0 -2
  107. data/tracks/ecmascript/exercises/palindrome-products/example.js +14 -11
  108. data/tracks/ecmascript/exercises/palindrome-products/palindrome-products.spec.js +15 -18
  109. data/tracks/ecmascript/exercises/pangram/example.js +6 -5
  110. data/tracks/ecmascript/exercises/pangram/pangram.spec.js +10 -12
  111. data/tracks/ecmascript/exercises/pascals-triangle/example.js +2 -2
  112. data/tracks/ecmascript/exercises/pascals-triangle/pascals-triangle.spec.js +6 -8
  113. data/tracks/ecmascript/exercises/perfect-numbers/example.js +3 -5
  114. data/tracks/ecmascript/exercises/perfect-numbers/perfect-numbers.spec.js +0 -10
  115. data/tracks/ecmascript/exercises/phone-number/example.js +2 -2
  116. data/tracks/ecmascript/exercises/phone-number/phone-number.spec.js +0 -2
  117. data/tracks/ecmascript/exercises/pig-latin/example.js +4 -4
  118. data/tracks/ecmascript/exercises/pig-latin/pig-latin.spec.js +0 -1
  119. data/tracks/ecmascript/exercises/prime-factors/example.js +2 -2
  120. data/tracks/ecmascript/exercises/prime-factors/prime-factors.spec.js +0 -2
  121. data/tracks/ecmascript/exercises/pythagorean-triplet/pythagorean-triplet.spec.js +3 -11
  122. data/tracks/ecmascript/exercises/queen-attack/example.js +17 -17
  123. data/tracks/ecmascript/exercises/queen-attack/queen-attack.spec.js +7 -8
  124. data/tracks/ecmascript/exercises/raindrops/example.js +1 -1
  125. data/tracks/ecmascript/exercises/raindrops/raindrops.spec.js +1 -2
  126. data/tracks/ecmascript/exercises/rna-transcription/example.js +5 -5
  127. data/tracks/ecmascript/exercises/rna-transcription/rna-transcription.spec.js +4 -5
  128. data/tracks/ecmascript/exercises/robot-name/example.js +6 -6
  129. data/tracks/ecmascript/exercises/robot-name/robot-name.spec.js +10 -11
  130. data/tracks/ecmascript/exercises/robot-simulator/example.js +1 -1
  131. data/tracks/ecmascript/exercises/robot-simulator/robot-simulator.spec.js +31 -32
  132. data/tracks/ecmascript/exercises/roman-numerals/example.js +16 -16
  133. data/tracks/ecmascript/exercises/saddle-points/saddle-points.spec.js +3 -3
  134. data/tracks/ecmascript/exercises/say/example.js +25 -25
  135. data/tracks/ecmascript/exercises/say/say.spec.js +2 -3
  136. data/tracks/ecmascript/exercises/scrabble-score/example.js +27 -9
  137. data/tracks/ecmascript/exercises/scrabble-score/scrabble-score.spec.js +6 -7
  138. data/tracks/ecmascript/exercises/secret-handshake/example.js +2 -3
  139. data/tracks/ecmascript/exercises/secret-handshake/secret-handshake.spec.js +3 -5
  140. data/tracks/ecmascript/exercises/series/series.spec.js +1 -3
  141. data/tracks/ecmascript/exercises/sieve/example.js +4 -3
  142. data/tracks/ecmascript/exercises/sieve/sieve.spec.js +0 -2
  143. data/tracks/ecmascript/exercises/simple-cipher/example.js +8 -9
  144. data/tracks/ecmascript/exercises/simple-cipher/simple-cipher.spec.js +4 -4
  145. data/tracks/ecmascript/exercises/space-age/example.js +1 -1
  146. data/tracks/ecmascript/exercises/space-age/space-age.spec.js +9 -11
  147. data/tracks/ecmascript/exercises/strain/example.js +4 -4
  148. data/tracks/ecmascript/exercises/strain/strain.spec.js +14 -16
  149. data/tracks/ecmascript/exercises/sum-of-multiples/example.js +4 -4
  150. data/tracks/ecmascript/exercises/triangle/triangle.spec.js +2 -4
  151. data/tracks/ecmascript/exercises/trinary/example.js +3 -3
  152. data/tracks/ecmascript/exercises/trinary/trinary.spec.js +0 -2
  153. data/tracks/ecmascript/exercises/two-bucket/example.js +30 -27
  154. data/tracks/ecmascript/exercises/two-bucket/two-bucket.spec.js +4 -8
  155. data/tracks/ecmascript/exercises/word-count/example.js +2 -2
  156. data/tracks/ecmascript/exercises/word-count/word-count.spec.js +2 -3
  157. data/tracks/ecmascript/exercises/wordy/example.js +6 -6
  158. data/tracks/ecmascript/exercises/wordy/wordy.spec.js +2 -4
  159. data/tracks/factor/config.json +15 -6
  160. data/tracks/fortran/.travis.yml +1 -1
  161. data/tracks/fsharp/config.json +312 -10
  162. data/tracks/go/README.md +1 -1
  163. data/tracks/go/config.json +523 -155
  164. data/tracks/haskell/README.md +2 -2
  165. data/tracks/haskell/config.json +256 -7
  166. data/tracks/haxe/.travis.yml +1 -1
  167. data/tracks/haxe/Makefile +2 -2
  168. data/tracks/haxe/config.json +8 -5
  169. data/tracks/java/CONTRIBUTING.md +2 -2
  170. data/tracks/java/config.json +277 -17
  171. data/tracks/java/exercises/rotational-cipher/build.gradle +17 -0
  172. data/tracks/java/exercises/rotational-cipher/src/example/java/RotationalCipher.java +37 -0
  173. data/tracks/java/exercises/rotational-cipher/src/main/java/.keep +0 -0
  174. data/tracks/java/exercises/rotational-cipher/src/test/java/RotationalCipherTest.java +81 -0
  175. data/tracks/java/exercises/settings.gradle +1 -0
  176. data/tracks/java/exercises/twelve-days/src/main/java/TwelveDays.java +4 -0
  177. data/tracks/julia/.travis.yml +1 -1
  178. data/tracks/julia/README.md +1 -1
  179. data/tracks/kotlin/README.md +2 -2
  180. data/tracks/kotlin/exercises/hello-world/TUTORIAL.md +3 -3
  181. data/tracks/lisp/config.json +97 -3
  182. data/tracks/lisp/exercises/pascals-triangle/example.lisp +21 -0
  183. data/tracks/lisp/exercises/pascals-triangle/pascal.lisp +7 -0
  184. data/tracks/lisp/exercises/pascals-triangle/pascals-triangle-test.lisp +34 -0
  185. data/tracks/lua/.travis.yml +1 -1
  186. data/tracks/lua/README.md +1 -1
  187. data/tracks/mips/.travis.yml +1 -1
  188. data/tracks/mips/config.json +56 -17
  189. data/tracks/nasm/.travis.yml +1 -1
  190. data/tracks/nim/.travis.yml +1 -1
  191. data/tracks/ocaml/README.md +3 -3
  192. data/tracks/ocaml/config.json +130 -4
  193. data/tracks/perl5/docs/TESTS.md +40 -26
  194. data/tracks/plsql/.travis.yml +1 -1
  195. data/tracks/plsql/config.json +40 -13
  196. data/tracks/pony/.travis.yml +1 -1
  197. data/tracks/pony/bin/install-deps +4 -3
  198. data/tracks/prolog/.travis.yml +1 -1
  199. data/tracks/r/README.md +5 -5
  200. data/tracks/r/config.json +102 -30
  201. data/tracks/rust/.travis.yml +1 -1
  202. data/tracks/rust/config.json +172 -4
  203. data/tracks/rust/docs/EXERCISE_README_INSERT.md +1 -1
  204. data/tracks/sml/config.json +26 -3
  205. data/tracks/vimscript/config.json +60 -3
  206. metadata +16 -1
@@ -3,137 +3,135 @@ import Converter from './all-your-base';
3
3
  const converter = new Converter();
4
4
 
5
5
  describe('Converter', () => {
6
-
7
- test('single bit one to decimal', () => {
8
- expect(converter.convert([1], 2, 10)).toEqual([1]);
9
- });
10
-
11
- xtest('binary to single decimal', () => {
12
- expect(converter.convert([1, 0, 1], 2, 10)).toEqual([5]);
13
- });
14
-
15
- xtest('single decimal to binary', () => {
16
- expect(converter.convert([5], 10, 2)).toEqual([1, 0, 1]);
17
- });
18
-
19
- xtest('binary to multiple decimal', () => {
20
- expect(converter.convert([1, 0, 1, 0, 1, 0], 2, 10)).toEqual([4, 2]);
21
- });
22
-
23
- xtest('decimal to binary', () => {
24
- expect(converter.convert([4, 2], 10, 2)).toEqual([1, 0, 1, 0, 1, 0]);
25
- });
26
-
27
- xtest('trinary to hexadecimal', () => {
28
- expect(converter.convert([1, 1, 2, 0], 3, 16)).toEqual([2, 10]);
29
- });
30
-
31
- xtest('hexadecimal to trinary', () => {
32
- expect(converter.convert([2, 10], 16, 3)).toEqual([1, 1, 2, 0]);
33
- });
34
-
35
- xtest('15-bit integer', () => {
36
- expect(converter.convert([3, 46, 60], 97, 73)).toEqual([6, 10, 45]);
37
- });
38
-
39
- xtest('empty list', () => {
40
- expect(() => {
41
- converter.convert([], 2, 10);
42
- }).toThrow(new Error('Input has wrong format'));
43
- });
44
-
45
- xtest('single zero', () => {
46
- expect(converter.convert([0], 10, 2)).toEqual([0]);
47
- });
48
-
49
- xtest('multiple zeros', () => {
50
- expect(() => {
51
- converter.convert([0, 0, 0], 10, 2);
52
- }).toThrow(new Error('Input has wrong format'));
53
- });
54
-
55
- xtest('leading zeros', () => {
56
- expect(() => {
57
- converter.convert([0, 6, 0], 7, 10);
58
- }).toThrow(new Error('Input has wrong format'));
59
- });
60
-
61
- xtest('negative digit', () => {
62
- expect(() => {
63
- converter.convert([1, -1, 1, 0, 1, 0], 2, 10);
64
- }).toThrow(new Error('Input has wrong format'));
65
- });
66
-
67
- xtest('invalid positive digit', () => {
68
- expect(() => {
69
- converter.convert([1, 2, 1, 0, 1, 0], 2, 10);
70
- }).toThrow(new Error('Input has wrong format'));
71
- });
72
-
73
- xtest('first base is one', () => {
74
- expect(() => {
75
- converter.convert([], 1, 10);
76
- }).toThrow(new Error('Wrong input base'));
77
- });
78
-
79
- xtest('second base is one', () => {
80
- expect(() => {
81
- converter.convert([1, 0, 1, 0, 1, 0], 2, 1);
82
- }).toThrow(new Error('Wrong output base'));
83
- });
84
-
85
- xtest('first base is zero', () => {
86
- expect(() => {
87
- converter.convert([], 0, 10);
88
- }).toThrow(new Error('Wrong input base'));
89
- });
90
-
91
- xtest('second base is zero', () => {
92
- expect(() => {
93
- converter.convert([7], 10, 0);
94
- }).toThrow(new Error('Wrong output base'));
95
- });
96
-
97
- xtest('first base is negative', () => {
98
- expect(() => {
99
- converter.convert([1], -2, 10);
100
- }).toThrow(new Error('Wrong input base'));
101
- });
102
-
103
- xtest('second base is negative', () => {
104
- expect(() => {
105
- converter.convert([1], 2, -7);
106
- }).toThrow(new Error('Wrong output base'));
107
- });
108
-
109
- xtest('both bases are negative', () => {
110
- expect(() => {
111
- converter.convert([1], -2, -7);
112
- }).toThrow(new Error('Wrong input base'));
113
- });
114
-
115
- xtest('missing input base throws an error', () => {
116
- expect(() => {
117
- converter.convert([0]);
118
- }).toThrow(new Error('Wrong input base'));
119
- });
120
-
121
- xtest('wrong input_base base not integer', () => {
122
- expect(() => {
123
- converter.convert([0], 2.5);
124
- }).toThrow(new Error('Wrong input base'));
125
- });
126
-
127
- xtest('missing output base throws an error', () => {
128
- expect(() => {
129
- converter.convert([0], 2);
130
- }).toThrow(new Error('Wrong output base'));
131
- });
132
-
133
- xtest('wrong output_base base not integer', () => {
134
- expect(() => {
135
- converter.convert([0], 3, 2.5);
136
- }).toThrow(new Error('Wrong output base'));
137
- });
138
-
6
+ test('single bit one to decimal', () => {
7
+ expect(converter.convert([1], 2, 10)).toEqual([1]);
8
+ });
9
+
10
+ xtest('binary to single decimal', () => {
11
+ expect(converter.convert([1, 0, 1], 2, 10)).toEqual([5]);
12
+ });
13
+
14
+ xtest('single decimal to binary', () => {
15
+ expect(converter.convert([5], 10, 2)).toEqual([1, 0, 1]);
16
+ });
17
+
18
+ xtest('binary to multiple decimal', () => {
19
+ expect(converter.convert([1, 0, 1, 0, 1, 0], 2, 10)).toEqual([4, 2]);
20
+ });
21
+
22
+ xtest('decimal to binary', () => {
23
+ expect(converter.convert([4, 2], 10, 2)).toEqual([1, 0, 1, 0, 1, 0]);
24
+ });
25
+
26
+ xtest('trinary to hexadecimal', () => {
27
+ expect(converter.convert([1, 1, 2, 0], 3, 16)).toEqual([2, 10]);
28
+ });
29
+
30
+ xtest('hexadecimal to trinary', () => {
31
+ expect(converter.convert([2, 10], 16, 3)).toEqual([1, 1, 2, 0]);
32
+ });
33
+
34
+ xtest('15-bit integer', () => {
35
+ expect(converter.convert([3, 46, 60], 97, 73)).toEqual([6, 10, 45]);
36
+ });
37
+
38
+ xtest('empty list', () => {
39
+ expect(() => {
40
+ converter.convert([], 2, 10);
41
+ }).toThrow(new Error('Input has wrong format'));
42
+ });
43
+
44
+ xtest('single zero', () => {
45
+ expect(converter.convert([0], 10, 2)).toEqual([0]);
46
+ });
47
+
48
+ xtest('multiple zeros', () => {
49
+ expect(() => {
50
+ converter.convert([0, 0, 0], 10, 2);
51
+ }).toThrow(new Error('Input has wrong format'));
52
+ });
53
+
54
+ xtest('leading zeros', () => {
55
+ expect(() => {
56
+ converter.convert([0, 6, 0], 7, 10);
57
+ }).toThrow(new Error('Input has wrong format'));
58
+ });
59
+
60
+ xtest('negative digit', () => {
61
+ expect(() => {
62
+ converter.convert([1, -1, 1, 0, 1, 0], 2, 10);
63
+ }).toThrow(new Error('Input has wrong format'));
64
+ });
65
+
66
+ xtest('invalid positive digit', () => {
67
+ expect(() => {
68
+ converter.convert([1, 2, 1, 0, 1, 0], 2, 10);
69
+ }).toThrow(new Error('Input has wrong format'));
70
+ });
71
+
72
+ xtest('first base is one', () => {
73
+ expect(() => {
74
+ converter.convert([], 1, 10);
75
+ }).toThrow(new Error('Wrong input base'));
76
+ });
77
+
78
+ xtest('second base is one', () => {
79
+ expect(() => {
80
+ converter.convert([1, 0, 1, 0, 1, 0], 2, 1);
81
+ }).toThrow(new Error('Wrong output base'));
82
+ });
83
+
84
+ xtest('first base is zero', () => {
85
+ expect(() => {
86
+ converter.convert([], 0, 10);
87
+ }).toThrow(new Error('Wrong input base'));
88
+ });
89
+
90
+ xtest('second base is zero', () => {
91
+ expect(() => {
92
+ converter.convert([7], 10, 0);
93
+ }).toThrow(new Error('Wrong output base'));
94
+ });
95
+
96
+ xtest('first base is negative', () => {
97
+ expect(() => {
98
+ converter.convert([1], -2, 10);
99
+ }).toThrow(new Error('Wrong input base'));
100
+ });
101
+
102
+ xtest('second base is negative', () => {
103
+ expect(() => {
104
+ converter.convert([1], 2, -7);
105
+ }).toThrow(new Error('Wrong output base'));
106
+ });
107
+
108
+ xtest('both bases are negative', () => {
109
+ expect(() => {
110
+ converter.convert([1], -2, -7);
111
+ }).toThrow(new Error('Wrong input base'));
112
+ });
113
+
114
+ xtest('missing input base throws an error', () => {
115
+ expect(() => {
116
+ converter.convert([0]);
117
+ }).toThrow(new Error('Wrong input base'));
118
+ });
119
+
120
+ xtest('wrong input_base base not integer', () => {
121
+ expect(() => {
122
+ converter.convert([0], 2.5);
123
+ }).toThrow(new Error('Wrong input base'));
124
+ });
125
+
126
+ xtest('missing output base throws an error', () => {
127
+ expect(() => {
128
+ converter.convert([0], 2);
129
+ }).toThrow(new Error('Wrong output base'));
130
+ });
131
+
132
+ xtest('wrong output_base base not integer', () => {
133
+ expect(() => {
134
+ converter.convert([0], 3, 2.5);
135
+ }).toThrow(new Error('Wrong output base'));
136
+ });
139
137
  });
@@ -47,9 +47,7 @@ export default class Converter {
47
47
  return [1];
48
48
  }
49
49
  const decimalValue = array
50
- .reduce((accumulator, value) => {
51
- return accumulator * inputBase + value;
52
- }, 0);
50
+ .reduce((accumulator, value) => accumulator * inputBase + value, 0);
53
51
  return convertFromDecimalToBase(decimalValue, outputBase);
54
52
  }
55
53
  }
@@ -1,7 +1,6 @@
1
1
  import Allergies from './allergies';
2
2
 
3
3
  describe('Allergies', () => {
4
-
5
4
  test('no allergies at all', () => {
6
5
  const allergies = new Allergies(0);
7
6
  expect(allergies.list()).toEqual([]);
@@ -9,37 +8,37 @@ describe('Allergies', () => {
9
8
 
10
9
  xtest('allergies to eggs', () => {
11
10
  const allergies = new Allergies(1);
12
- expect(allergies.list()).toEqual([ 'eggs' ]);
11
+ expect(allergies.list()).toEqual(['eggs']);
13
12
  });
14
13
 
15
14
  xtest('allergies to peanuts', () => {
16
15
  const allergies = new Allergies(2);
17
- expect(allergies.list()).toEqual([ 'peanuts' ]);
16
+ expect(allergies.list()).toEqual(['peanuts']);
18
17
  });
19
18
 
20
19
  xtest('allergies to strawberries', () => {
21
20
  const allergies = new Allergies(8);
22
- expect(allergies.list()).toEqual([ 'strawberries' ]);
21
+ expect(allergies.list()).toEqual(['strawberries']);
23
22
  });
24
23
 
25
24
  xtest('allergies to eggs and peanuts', () => {
26
25
  const allergies = new Allergies(3);
27
- expect(allergies.list()).toEqual([ 'eggs', 'peanuts' ]);
26
+ expect(allergies.list()).toEqual(['eggs', 'peanuts']);
28
27
  });
29
28
 
30
29
  xtest('allergies to more than eggs but not peanuts', () => {
31
30
  const allergies = new Allergies(5);
32
- expect(allergies.list()).toEqual([ 'eggs', 'shellfish' ]);
31
+ expect(allergies.list()).toEqual(['eggs', 'shellfish']);
33
32
  });
34
33
 
35
34
  xtest('allergic to lots of stuff', () => {
36
35
  const allergies = new Allergies(248);
37
- expect(allergies.list()).toEqual([ 'strawberries', 'tomatoes', 'chocolate', 'pollen', 'cats' ]);
36
+ expect(allergies.list()).toEqual(['strawberries', 'tomatoes', 'chocolate', 'pollen', 'cats']);
38
37
  });
39
38
 
40
39
  xtest('allergic to everything', () => {
41
40
  const allergies = new Allergies(255);
42
- expect(allergies.list()).toEqual([ 'eggs', 'peanuts', 'shellfish', 'strawberries', 'tomatoes', 'chocolate', 'pollen', 'cats' ]);
41
+ expect(allergies.list()).toEqual(['eggs', 'peanuts', 'shellfish', 'strawberries', 'tomatoes', 'chocolate', 'pollen', 'cats']);
43
42
  });
44
43
 
45
44
  xtest('no allergic means not allergic', () => {
@@ -61,7 +60,6 @@ describe('Allergies', () => {
61
60
 
62
61
  xtest('ignore non allergen score parts', () => {
63
62
  const allergies = new Allergies(509);
64
- expect(allergies.list()).toEqual([ 'eggs', 'shellfish', 'strawberries', 'tomatoes', 'chocolate', 'pollen', 'cats' ]);
63
+ expect(allergies.list()).toEqual(['eggs', 'shellfish', 'strawberries', 'tomatoes', 'chocolate', 'pollen', 'cats']);
65
64
  });
66
-
67
65
  });
@@ -6,8 +6,8 @@ const possibleAllergies = [
6
6
  'tomatoes',
7
7
  'chocolate',
8
8
  'pollen',
9
- 'cats'
10
- ];
9
+ 'cats',
10
+ ];
11
11
 
12
12
  class Allergies {
13
13
  constructor(allergenIndex) {
@@ -15,9 +15,7 @@ class Allergies {
15
15
  }
16
16
 
17
17
  list() {
18
- return possibleAllergies.filter((allergy, i) => {
19
- return this.allergenIndex & Math.pow(2, i);
20
- });
18
+ return possibleAllergies.filter((allergy, i) => this.allergenIndex & Math.pow(2, i));
21
19
  }
22
20
 
23
21
  allergicTo(food) {
@@ -1,95 +1,93 @@
1
1
  import solve from './alphametics';
2
2
 
3
- describe("Solve the alphametics puzzle", () => {
4
-
5
- test("puzzle with three letters", () => {
6
- let puzzle = "I + BB == ILL";
7
- let expected = {
8
- "I": 1,
9
- "B": 9,
10
- "L": 0
3
+ describe('Solve the alphametics puzzle', () => {
4
+ test('puzzle with three letters', () => {
5
+ const puzzle = 'I + BB == ILL';
6
+ const expected = {
7
+ I: 1,
8
+ B: 9,
9
+ L: 0,
11
10
  };
12
11
  expect(solve(puzzle)).toEqual(expected);
13
12
  });
14
13
 
15
- xtest("solution must have unique value for each letter", () => {
16
- let puzzle = "A == B";
14
+ xtest('solution must have unique value for each letter', () => {
15
+ const puzzle = 'A == B';
17
16
  expect(solve(puzzle)).toBeNull();
18
17
  });
19
18
 
20
- xtest("leading zero solution is invalid", () => {
21
- let puzzle = "ACA + DD == BD";
19
+ xtest('leading zero solution is invalid', () => {
20
+ const puzzle = 'ACA + DD == BD';
22
21
  expect(solve(puzzle)).toBeNull();
23
22
  });
24
23
 
25
- xtest("puzzle with four letters", () => {
26
- let puzzle = "AS + A == MOM";
27
- let expected = {
28
- "A": 9,
29
- "S": 2,
30
- "M": 1,
31
- "O": 0
24
+ xtest('puzzle with four letters', () => {
25
+ const puzzle = 'AS + A == MOM';
26
+ const expected = {
27
+ A: 9,
28
+ S: 2,
29
+ M: 1,
30
+ O: 0,
32
31
  };
33
32
  expect(solve(puzzle)).toEqual(expected);
34
33
  });
35
34
 
36
- xtest("puzzle with six letters", () => {
37
- let puzzle = "NO + NO + TOO == LATE";
38
- let expected = {
39
- "N": 7,
40
- "O": 4,
41
- "T": 9,
42
- "L": 1,
43
- "A": 0,
44
- "E": 2
35
+ xtest('puzzle with six letters', () => {
36
+ const puzzle = 'NO + NO + TOO == LATE';
37
+ const expected = {
38
+ N: 7,
39
+ O: 4,
40
+ T: 9,
41
+ L: 1,
42
+ A: 0,
43
+ E: 2,
45
44
  };
46
45
  expect(solve(puzzle)).toEqual(expected);
47
46
  });
48
47
 
49
- xtest("puzzle with seven letters", () => {
50
- let puzzle = "HE + SEES + THE == LIGHT";
51
- let expected = {
52
- "E": 4,
53
- "G": 2,
54
- "H": 5,
55
- "I": 0,
56
- "L": 1,
57
- "S": 9,
58
- "T": 7
48
+ xtest('puzzle with seven letters', () => {
49
+ const puzzle = 'HE + SEES + THE == LIGHT';
50
+ const expected = {
51
+ E: 4,
52
+ G: 2,
53
+ H: 5,
54
+ I: 0,
55
+ L: 1,
56
+ S: 9,
57
+ T: 7,
59
58
  };
60
59
  expect(solve(puzzle)).toEqual(expected);
61
60
  });
62
61
 
63
- xtest("puzzle with eight letters", () => {
64
- let puzzle = "SEND + MORE == MONEY";
65
- let expected = {
66
- "S": 9,
67
- "E": 5,
68
- "N": 6,
69
- "D": 7,
70
- "M": 1,
71
- "O": 0,
72
- "R": 8,
73
- "Y": 2
62
+ xtest('puzzle with eight letters', () => {
63
+ const puzzle = 'SEND + MORE == MONEY';
64
+ const expected = {
65
+ S: 9,
66
+ E: 5,
67
+ N: 6,
68
+ D: 7,
69
+ M: 1,
70
+ O: 0,
71
+ R: 8,
72
+ Y: 2,
74
73
  };
75
74
  expect(solve(puzzle)).toEqual(expected);
76
75
  });
77
76
 
78
- xtest("puzzle with ten letters", () => {
79
- let puzzle = "AND + A + STRONG + OFFENSE + AS + A + GOOD == DEFENSE";
80
- let expected = {
81
- "A": 5,
82
- "D": 3,
83
- "E": 4,
84
- "F": 7,
85
- "G": 8,
86
- "N": 0,
87
- "O": 2,
88
- "R": 1,
89
- "S": 6,
90
- "T": 9
77
+ xtest('puzzle with ten letters', () => {
78
+ const puzzle = 'AND + A + STRONG + OFFENSE + AS + A + GOOD == DEFENSE';
79
+ const expected = {
80
+ A: 5,
81
+ D: 3,
82
+ E: 4,
83
+ F: 7,
84
+ G: 8,
85
+ N: 0,
86
+ O: 2,
87
+ R: 1,
88
+ S: 6,
89
+ T: 9,
91
90
  };
92
91
  expect(solve(puzzle)).toEqual(expected);
93
92
  });
94
-
95
93
  });