trackler 2.2.0.0 → 2.2.0.1

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