trackler 2.2.1.52 → 2.2.1.53

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 (139) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/leap/canonical-data.json +2 -2
  4. data/tracks/cfml/tasks/FormatConfig.cfc +6 -4
  5. data/tracks/cfml/tasks/GenerateReadme.cfc +197 -0
  6. data/tracks/cfml/tasks/ScaffoldExercise.cfc +6 -0
  7. data/tracks/csharp/config.json +1 -1
  8. data/tracks/delphi/exercises/leap/uLeapTests.pas +1 -1
  9. data/tracks/fsharp/exercises/clock/Clock.fs +1 -1
  10. data/tracks/fsharp/exercises/clock/ClockTest.fs +239 -61
  11. data/tracks/fsharp/exercises/clock/Example.fs +3 -3
  12. data/tracks/fsharp/exercises/dominoes/DominoesTest.fs +29 -26
  13. data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProductTest.fs +30 -15
  14. data/tracks/fsharp/exercises/leap/LeapTest.fs +2 -2
  15. data/tracks/fsharp/exercises/rectangles/Example.fs +1 -1
  16. data/tracks/fsharp/exercises/rectangles/Rectangles.fs +1 -1
  17. data/tracks/fsharp/exercises/rectangles/RectanglesTest.fs +66 -43
  18. data/tracks/fsharp/generators/Generators.fs +85 -1
  19. data/tracks/java/scripts/canonical_data_check.sh +8 -0
  20. data/tracks/kotlin/.gitignore +1 -0
  21. data/tracks/kotlin/exercises/acronym/.meta/version +1 -0
  22. data/tracks/kotlin/exercises/acronym/src/test/kotlin/AcronymTest.kt +9 -10
  23. data/tracks/kotlin/exercises/all-your-base/.meta/version +1 -1
  24. data/tracks/kotlin/exercises/all-your-base/src/test/kotlin/BaseConverterTest.kt +20 -20
  25. data/tracks/kotlin/exercises/allergies/.meta/version +1 -0
  26. data/tracks/kotlin/exercises/allergies/src/test/kotlin/AllergiesTest.kt +19 -72
  27. data/tracks/kotlin/exercises/anagram/.meta/src/reference/kotlin/Anagram.kt +7 -4
  28. data/tracks/kotlin/exercises/anagram/.meta/version +1 -0
  29. data/tracks/kotlin/exercises/anagram/src/test/kotlin/AnagramTest.kt +76 -29
  30. data/tracks/kotlin/exercises/atbash-cipher/.meta/version +1 -0
  31. data/tracks/kotlin/exercises/atbash-cipher/src/test/kotlin/AtbashTest.kt +6 -3
  32. data/tracks/kotlin/exercises/beer-song/.meta/version +1 -0
  33. data/tracks/kotlin/exercises/beer-song/src/test/kotlin/BeerSongTest.kt +21 -46
  34. data/tracks/kotlin/exercises/binary-search/.meta/version +1 -0
  35. data/tracks/kotlin/exercises/binary-search/src/test/kotlin/BinarySearchTest.kt +30 -19
  36. data/tracks/kotlin/exercises/bob/.meta/src/reference/kotlin/Bob.kt +8 -7
  37. data/tracks/kotlin/exercises/bob/.meta/version +1 -0
  38. data/tracks/kotlin/exercises/bob/src/test/kotlin/BobTest.kt +57 -15
  39. data/tracks/kotlin/exercises/bracket-push/.meta/version +1 -0
  40. data/tracks/kotlin/exercises/bracket-push/src/test/kotlin/BracketPushTest.kt +3 -1
  41. data/tracks/kotlin/exercises/collatz-conjecture/.meta/version +1 -1
  42. data/tracks/kotlin/exercises/difference-of-squares/.meta/version +1 -0
  43. data/tracks/kotlin/exercises/difference-of-squares/src/test/kotlin/SquaresTest.kt +10 -23
  44. data/tracks/kotlin/exercises/etl/.meta/src/reference/kotlin/ETL.kt +7 -1
  45. data/tracks/kotlin/exercises/etl/.meta/version +1 -0
  46. data/tracks/kotlin/exercises/etl/src/test/kotlin/ETLTest.kt +10 -10
  47. data/tracks/kotlin/exercises/flatten-array/.meta/version +1 -0
  48. data/tracks/kotlin/exercises/flatten-array/src/test/kotlin/FlattenerTest.kt +8 -16
  49. data/tracks/kotlin/exercises/gigasecond/.meta/version +1 -0
  50. data/tracks/kotlin/exercises/gigasecond/src/test/kotlin/GigasecondTest.kt +1 -1
  51. data/tracks/kotlin/exercises/hamming/.meta/src/reference/kotlin/Hamming.kt +1 -1
  52. data/tracks/kotlin/exercises/hamming/.meta/version +1 -1
  53. data/tracks/kotlin/exercises/hamming/src/test/kotlin/HammingTest.kt +4 -4
  54. data/tracks/kotlin/exercises/hello-world/.meta/version +1 -0
  55. data/tracks/kotlin/exercises/hello-world/src/test/kotlin/HelloWorldTest.kt +1 -1
  56. data/tracks/kotlin/exercises/isogram/.meta/version +1 -0
  57. data/tracks/kotlin/exercises/isogram/src/test/kotlin/IsogramTest.kt +5 -8
  58. data/tracks/kotlin/exercises/largest-series-product/.meta/src/reference/kotlin/Series.kt +2 -3
  59. data/tracks/kotlin/exercises/largest-series-product/.meta/version +1 -0
  60. data/tracks/kotlin/exercises/largest-series-product/src/test/kotlin/SeriesTest.kt +97 -0
  61. data/tracks/kotlin/exercises/leap/.meta/version +1 -0
  62. data/tracks/kotlin/exercises/leap/src/test/kotlin/LeapTest.kt +8 -26
  63. data/tracks/kotlin/exercises/list-ops/.meta/version +1 -1
  64. data/tracks/kotlin/exercises/luhn/.meta/version +1 -0
  65. data/tracks/kotlin/exercises/luhn/src/test/kotlin/LuhnTest.kt +0 -3
  66. data/tracks/kotlin/exercises/nth-prime/.meta/version +1 -0
  67. data/tracks/kotlin/exercises/nth-prime/src/test/kotlin/PrimeTest.kt +0 -2
  68. data/tracks/kotlin/exercises/nucleotide-count/.meta/src/reference/kotlin/{DNA.kt → Dna.kt} +3 -8
  69. data/tracks/kotlin/exercises/nucleotide-count/.meta/version +1 -0
  70. data/tracks/kotlin/exercises/nucleotide-count/src/test/kotlin/DnaTest.kt +48 -0
  71. data/tracks/kotlin/exercises/pangram/.meta/src/reference/kotlin/{Pangrams.kt → Pangram.kt} +1 -1
  72. data/tracks/kotlin/exercises/pangram/.meta/version +1 -1
  73. data/tracks/kotlin/exercises/pangram/src/test/kotlin/PangramTest.kt +15 -9
  74. data/tracks/kotlin/exercises/pascals-triangle/.meta/version +1 -0
  75. data/tracks/kotlin/exercises/pascals-triangle/src/test/kotlin/PascalsTriangleTest.kt +32 -14
  76. data/tracks/kotlin/exercises/perfect-numbers/.meta/src/reference/kotlin/NaturalNumber.kt +1 -1
  77. data/tracks/kotlin/exercises/perfect-numbers/.meta/version +1 -0
  78. data/tracks/kotlin/exercises/perfect-numbers/src/test/kotlin/{PerfectNumbersTest.kt → NaturalNumberTest.kt} +25 -7
  79. data/tracks/kotlin/exercises/phone-number/.meta/src/reference/kotlin/PhoneNumber.kt +15 -7
  80. data/tracks/kotlin/exercises/phone-number/.meta/version +1 -0
  81. data/tracks/kotlin/exercises/phone-number/src/test/kotlin/PhoneNumberTest.kt +46 -29
  82. data/tracks/kotlin/exercises/pig-latin/.meta/src/reference/kotlin/PigLatin.kt +2 -2
  83. data/tracks/kotlin/exercises/pig-latin/.meta/version +1 -0
  84. data/tracks/kotlin/exercises/pig-latin/src/test/kotlin/PigLatinTest.kt +21 -10
  85. data/tracks/kotlin/exercises/raindrops/.meta/version +1 -0
  86. data/tracks/kotlin/exercises/raindrops/src/test/kotlin/RaindropsTest.kt +19 -26
  87. data/tracks/kotlin/exercises/react/.meta/version +1 -0
  88. data/tracks/kotlin/exercises/react/src/test/kotlin/ReactTest.kt +11 -4
  89. data/tracks/kotlin/exercises/robot-simulator/.meta/version +1 -1
  90. data/tracks/kotlin/exercises/roman-numerals/.meta/version +1 -0
  91. data/tracks/kotlin/exercises/roman-numerals/src/test/kotlin/RomanNumeralTest.kt +1 -2
  92. data/tracks/kotlin/exercises/rotational-cipher/.meta/version +1 -1
  93. data/tracks/kotlin/exercises/rotational-cipher/src/test/kotlin/RotationalCipherTest.kt +7 -7
  94. data/tracks/kotlin/exercises/scrabble-score/.meta/src/reference/kotlin/{Scrabble.kt → ScrabbleScore.kt} +1 -1
  95. data/tracks/kotlin/exercises/scrabble-score/.meta/version +1 -0
  96. data/tracks/kotlin/exercises/scrabble-score/src/test/kotlin/ScrabbleScoreTest.kt +9 -7
  97. data/tracks/kotlin/exercises/sieve/.meta/version +1 -0
  98. data/tracks/kotlin/exercises/sieve/src/test/kotlin/SieveTest.kt +8 -0
  99. data/tracks/kotlin/exercises/space-age/.meta/version +1 -0
  100. data/tracks/kotlin/exercises/space-age/src/test/kotlin/SpaceAgeTest.kt +1 -16
  101. data/tracks/kotlin/exercises/sum-of-multiples/.meta/version +1 -0
  102. data/tracks/kotlin/exercises/sum-of-multiples/src/test/kotlin/SumOfMultiplesTest.kt +7 -7
  103. data/tracks/kotlin/exercises/triangle/.meta/version +1 -0
  104. data/tracks/kotlin/exercises/two-fer/.meta/version +1 -0
  105. data/tracks/kotlin/exercises/two-fer/src/test/kotlin/TwoferTest.kt +0 -1
  106. data/tracks/kotlin/exercises/word-count/.meta/src/reference/kotlin/WordCount.kt +6 -2
  107. data/tracks/kotlin/exercises/word-count/.meta/version +1 -0
  108. data/tracks/kotlin/exercises/word-count/src/test/kotlin/WordCountTest.kt +31 -9
  109. data/tracks/kotlin/scripts/canonical_data_check.sh +8 -0
  110. data/tracks/perl6/exercises/leap/leap.t +2 -2
  111. data/tracks/php/config.json +16 -0
  112. data/tracks/php/exercises/crypto-square/crypto-square_test.php +50 -0
  113. data/tracks/php/exercises/crypto-square/example.php +32 -0
  114. data/tracks/php/exercises/meetup/README.md +21 -0
  115. data/tracks/php/exercises/meetup/example.php +19 -0
  116. data/tracks/php/exercises/meetup/meetup_test.php +577 -0
  117. data/tracks/python/README.md +7 -5
  118. data/tracks/python/config.json +36 -27
  119. data/tracks/python/docs/TESTS.md +36 -12
  120. data/tracks/python/exercises/complex-numbers/complex_numbers_test.py +1 -1
  121. data/tracks/python/exercises/diffie-hellman/.meta/hints.md +16 -0
  122. data/tracks/python/exercises/diffie-hellman/README.md +15 -2
  123. data/tracks/python/exercises/error-handling/README.md +23 -0
  124. data/tracks/python/exercises/error-handling/error_handling.py +14 -0
  125. data/tracks/python/exercises/error-handling/error_handling_test.py +66 -0
  126. data/tracks/python/exercises/error-handling/example.py +21 -0
  127. data/tracks/python/exercises/forth/forth_test.py +1 -1
  128. data/tracks/python/exercises/isogram/isogram_test.py +5 -3
  129. data/tracks/python/exercises/leap/leap_test.py +2 -2
  130. data/tracks/python/exercises/rotational-cipher/rotational_cipher_test.py +4 -4
  131. data/tracks/python/exercises/simple-cipher/.meta/hints.md +16 -0
  132. data/tracks/python/exercises/simple-cipher/README.md +17 -0
  133. data/tracks/python/exercises/sum-of-multiples/sum_of_multiples_test.py +4 -1
  134. data/tracks/python/exercises/twelve-days/example.py +3 -3
  135. data/tracks/python/exercises/twelve-days/twelve_days.py +2 -2
  136. metadata +53 -9
  137. data/tracks/kotlin/exercises/largest-series-product/src/test/kotlin/SeriesInvalidInputTest.kt +0 -30
  138. data/tracks/kotlin/exercises/largest-series-product/src/test/kotlin/SeriesValidInputTest.kt +0 -34
  139. data/tracks/kotlin/exercises/nucleotide-count/src/test/kotlin/NucleotideTest.kt +0 -87
@@ -15,10 +15,10 @@ object PigLatin {
15
15
  return word
16
16
  }
17
17
 
18
- private val consonant = Regex("^([^aeiou]?qu|[^aeiou]+)([a-z]*)", RegexOption.IGNORE_CASE)
18
+ private val consonant = Regex("^([^aeiou]?qu|[^aeiouy]+|[^aeiou]+)([a-z]*)", RegexOption.IGNORE_CASE)
19
19
  private fun splitInitialConsonantSound(word: String) = consonant.matchEntire(word)?.groupValues?.drop(1)
20
20
 
21
21
  private val vowels = Regex("^([aeiou]|y[^aeiou]|xr)[a-z]*", RegexOption.IGNORE_CASE)
22
22
  private fun startsWithVowelSound(word: String) = vowels.matches(word)
23
23
 
24
- }
24
+ }
@@ -1,5 +1,4 @@
1
1
  import org.junit.Test
2
- import org.junit.Ignore
3
2
  import org.junit.runner.RunWith
4
3
  import org.junit.runners.Parameterized
5
4
  import kotlin.test.assertEquals
@@ -12,17 +11,20 @@ class PigLatinTest(val input: String, val expectedOutput: String) {
12
11
  @Parameterized.Parameters(name = "{index}: translate({0})={1}")
13
12
  fun data() = arrayOf(
14
13
  // Ay is added to words that start with vowels
15
- arrayOf("apple", "appleay"),
16
- arrayOf("ear", "earay"),
17
- arrayOf("igloo", "iglooay"),
14
+ arrayOf("apple", "appleay"),
15
+ arrayOf("ear", "earay"),
16
+ arrayOf("igloo", "iglooay"),
18
17
  arrayOf("object", "objectay"),
19
- arrayOf("under", "underay"),
18
+ arrayOf("under", "underay"),
19
+
20
+ // Ay is added to words that start with vowels followed by qu
21
+ arrayOf("equal", "equalay"),
20
22
 
21
23
  // First letter and ay are moved to the end of words that start with consonants
22
- arrayOf("pig", "igpay"),
23
- arrayOf("koala", "oalakay"),
24
- arrayOf("yellow", "ellowyay"),
25
- arrayOf("xenon", "enonxay"),
24
+ arrayOf("pig", "igpay"),
25
+ arrayOf("koala", "oalakay"),
26
+ arrayOf("xenon", "enonxay"),
27
+ arrayOf("qat", "atqay"),
26
28
 
27
29
  // Ch is treated like a single consonant
28
30
  arrayOf("chair", "airchay"),
@@ -48,14 +50,23 @@ class PigLatinTest(val input: String, val expectedOutput: String) {
48
50
  // Xr is treated like a single vowel
49
51
  arrayOf("xray", "xrayay"),
50
52
 
53
+ // Y is treated like a consonant at the beginning of a word
54
+ arrayOf("yellow", "ellowyay"),
55
+
56
+ // Y is treated like a vowel at the end of a consonant cluster
57
+ arrayOf("rhythm", "ythmrhay"),
58
+
59
+ // Y as second letter in two letter word
60
+ arrayOf("my", "ymay"),
61
+
51
62
  // Phrases are translated
52
63
  arrayOf("quick fast run", "ickquay astfay unray")
53
64
  )
54
65
  }
55
66
 
56
-
57
67
  @Test
58
68
  fun test() {
59
69
  assertEquals(expectedOutput, PigLatin.translate(input))
60
70
  }
71
+
61
72
  }
@@ -11,37 +11,30 @@ class RaindropsTest(val input: Int, val expectedOutput: String) {
11
11
  @JvmStatic
12
12
  @Parameterized.Parameters(name = "{index}: raindrops({0})={1}")
13
13
  fun data() = listOf(
14
- // Non-primes
15
- arrayOf(1, "1"),
16
- arrayOf(52, "52"),
17
- arrayOf(12121, "12121"),
18
-
19
- // Numbers with 3 as a prime factor
20
- arrayOf(3, "Pling"),
21
- arrayOf(6, "Pling"),
22
- arrayOf(9, "Pling"),
23
-
24
- // Numbers with 5 as a prime factor
25
- arrayOf(5, "Plang"),
26
- arrayOf(10, "Plang"),
27
- arrayOf(25, "Plang"),
28
-
29
- // Numbers with 7 as a prime factor
30
- arrayOf(7, "Plong"),
31
- arrayOf(14, "Plong"),
32
- arrayOf(49, "Plong"),
33
-
34
- // Numbers with multiple activating prime factors
35
- arrayOf(15, "PlingPlang"),
36
- arrayOf(21, "PlingPlong"),
37
- arrayOf(35, "PlangPlong"),
38
- arrayOf(105, "PlingPlangPlong")
14
+ arrayOf( 1, "1"),
15
+ arrayOf( 3, "Pling"),
16
+ arrayOf( 5, "Plang"),
17
+ arrayOf( 7, "Plong"),
18
+ arrayOf( 6, "Pling"),
19
+ arrayOf( 8, "8"),
20
+ arrayOf( 9, "Pling"),
21
+ arrayOf( 10, "Plang"),
22
+ arrayOf( 14, "Plong"),
23
+ arrayOf( 15, "PlingPlang"),
24
+ arrayOf( 21, "PlingPlong"),
25
+ arrayOf( 25, "Plang"),
26
+ arrayOf( 27, "Pling"),
27
+ arrayOf( 35, "PlangPlong"),
28
+ arrayOf( 49, "Plong"),
29
+ arrayOf( 52, "52"),
30
+ arrayOf( 105, "PlingPlangPlong"),
31
+ arrayOf(3125, "Plang")
39
32
  )
40
33
  }
41
34
 
42
-
43
35
  @Test
44
36
  fun test() {
45
37
  assertEquals(expectedOutput, Raindrops.convert(input))
46
38
  }
39
+
47
40
  }
@@ -5,6 +5,7 @@ import org.junit.runners.Parameterized
5
5
  import kotlin.test.assertEquals
6
6
 
7
7
  class ReactTest {
8
+
8
9
  @Test
9
10
  fun inputCellsHaveValue() {
10
11
  val reactor = Reactor<Int>()
@@ -132,7 +133,7 @@ class ReactTest {
132
133
  val vals2 = mutableListOf<Int>()
133
134
  output.addCallback { vals2.add(it) }
134
135
 
135
- for (i in 1..10) {
136
+ for (i in 1..3) {
136
137
  sub1.cancel()
137
138
  }
138
139
 
@@ -170,17 +171,22 @@ class ReactTest {
170
171
  val vals = mutableListOf<Int>()
171
172
  alwaysTwo.addCallback { vals.add(it) }
172
173
 
173
- for (i in 1..10) {
174
+ for (i in 2..5) {
174
175
  input.value = i
175
176
  }
176
177
 
177
178
  assertEquals(listOf<Int>(), vals)
178
179
  }
180
+
179
181
  }
180
182
 
183
+ /*
184
+ * Extension
185
+ *
186
+ * This is a digital logic circuit called an adder:
187
+ * https://en.wikipedia.org/wiki/Adder_(electronics)
188
+ */
181
189
  @RunWith(Parameterized::class)
182
- // This is a digital logic circuit called an adder:
183
- // https://en.wikipedia.org/wiki/Adder_(electronics)
184
190
  class ReactAdderTest(val input: Input, val expected: Expected) {
185
191
 
186
192
  companion object {
@@ -218,4 +224,5 @@ class ReactAdderTest(val input: Input, val expected: Expected) {
218
224
 
219
225
  assertEquals(expected, Expected(sum=sum.value, carryOut=carryOut.value))
220
226
  }
227
+
221
228
  }
@@ -1 +1 @@
1
- 1.0.0
1
+ 2.0.0
@@ -12,7 +12,6 @@ class RomanNumeralsTest(val input: Int, val expectedOutput: String) {
12
12
  @JvmStatic
13
13
  @Parameterized.Parameters(name = "{index}: romanNumeral({0})={1}")
14
14
  fun data() = listOf(
15
- arrayOf(0, ""),
16
15
  arrayOf(1, "I"),
17
16
  arrayOf(2, "II"),
18
17
  arrayOf(3, "III"),
@@ -34,9 +33,9 @@ class RomanNumeralsTest(val input: Int, val expectedOutput: String) {
34
33
  )
35
34
  }
36
35
 
37
-
38
36
  @Test
39
37
  fun test() {
40
38
  assertEquals(expectedOutput, RomanNumeral.value(input))
41
39
  }
40
+
42
41
  }
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
@@ -4,6 +4,13 @@ import kotlin.test.assertEquals
4
4
 
5
5
  class RotationalCipherTest {
6
6
 
7
+ @Test
8
+ fun testRotateLowercaseABy0() {
9
+ val cipher = RotationalCipher(0)
10
+ assertEquals("a", cipher.encode("a"))
11
+ }
12
+
13
+ @Ignore
7
14
  @Test
8
15
  fun testRotateLowercaseABy1NoWrapAround() {
9
16
  val cipher = RotationalCipher(1)
@@ -17,13 +24,6 @@ class RotationalCipherTest {
17
24
  assertEquals("a", cipher.encode("a"))
18
25
  }
19
26
 
20
- @Ignore
21
- @Test
22
- fun testRotateLowercaseABy0() {
23
- val cipher = RotationalCipher(0)
24
- assertEquals("a", cipher.encode("a"))
25
- }
26
-
27
27
  @Ignore
28
28
  @Test
29
29
  fun testRotateLowercaseMBy13NoWrapAround() {
@@ -1,4 +1,4 @@
1
- object Scrabble {
1
+ object ScrabbleScore {
2
2
  private val scoreToLetters = mapOf(1 to "AEIOULNRST", 2 to "DG", 3 to "BCMP", 4 to "FHVWY", 5 to "K", 8 to "JX", 10 to "QZ").mapValues { it.value.toCharArray() }
3
3
  private val letterToScore = scoreToLetters.flatMap { entry -> entry.value.map { char -> Pair(char, entry.key) } }.toMap()
4
4
 
@@ -1,5 +1,4 @@
1
1
  import org.junit.Test
2
- import org.junit.Ignore
3
2
  import org.junit.runner.RunWith
4
3
  import org.junit.runners.Parameterized
5
4
  import kotlin.test.assertEquals
@@ -11,20 +10,23 @@ class ScrabbleScoreTest(val input: String, val expectedOutput: Int) {
11
10
  @JvmStatic
12
11
  @Parameterized.Parameters(name = "{index}: scoreWord({0})={1}")
13
12
  fun data() = listOf(
14
- arrayOf("", 0),
15
- arrayOf(" \t\n", 0),
16
13
  arrayOf("a", 1),
14
+ arrayOf("A", 1),
17
15
  arrayOf("f", 4),
16
+ arrayOf("at", 2),
17
+ arrayOf("zoo", 12),
18
18
  arrayOf("street", 6),
19
19
  arrayOf("quirky", 22),
20
- arrayOf("OXYPHENBUTAZONE", 41),
21
- arrayOf("alacrity", 13)
20
+ arrayOf("OxyphenButazone", 41),
21
+ arrayOf("pinata", 8),
22
+ arrayOf("", 0),
23
+ arrayOf("abcdefghijklmnopqrstuvwxyz", 87)
22
24
  )
23
25
  }
24
26
 
25
-
26
27
  @Test
27
28
  fun test() {
28
- assertEquals(expectedOutput, Scrabble.scoreWord(input))
29
+ assertEquals(expectedOutput, ScrabbleScore.scoreWord(input))
29
30
  }
31
+
30
32
  }
@@ -4,7 +4,14 @@ import kotlin.test.assertEquals
4
4
 
5
5
  class SieveTest {
6
6
 
7
+ @Test
8
+ fun noPrimesUnder2() {
9
+ val expectedOutput = emptyList<Int>()
10
+
11
+ assertEquals(expectedOutput, Sieve.primesUpTo(1))
12
+ }
7
13
 
14
+ @Ignore
8
15
  @Test
9
16
  fun findFirstPrime() {
10
17
  val expectedOutput = listOf(2)
@@ -35,4 +42,5 @@ class SieveTest {
35
42
 
36
43
  assertEquals(expectedOutput, Sieve.primesUpTo(1000))
37
44
  }
45
+
38
46
  }
@@ -4,15 +4,6 @@ import kotlin.test.assertEquals
4
4
 
5
5
  class SpaceAgeTest {
6
6
 
7
-
8
- @Test
9
- fun ageInSeconds() {
10
- val age = SpaceAge(1000000)
11
-
12
- assertEquals(1000000, age.seconds)
13
- }
14
-
15
- @Ignore
16
7
  @Test
17
8
  fun ageOnEarth() {
18
9
  val age = SpaceAge(1000000000)
@@ -25,7 +16,6 @@ class SpaceAgeTest {
25
16
  fun ageOnMercury() {
26
17
  val age = SpaceAge(2134835688)
27
18
 
28
- assertEquals(67.65, age.onEarth())
29
19
  assertEquals(280.88, age.onMercury())
30
20
  }
31
21
 
@@ -34,7 +24,6 @@ class SpaceAgeTest {
34
24
  fun ageOnVenus() {
35
25
  val age = SpaceAge(189839836)
36
26
 
37
- assertEquals(6.02, age.onEarth())
38
27
  assertEquals(9.78, age.onVenus())
39
28
  }
40
29
 
@@ -43,7 +32,6 @@ class SpaceAgeTest {
43
32
  fun ageOnMars() {
44
33
  val age = SpaceAge(2329871239L)
45
34
 
46
- assertEquals(73.83, age.onEarth())
47
35
  assertEquals(39.25, age.onMars())
48
36
  }
49
37
 
@@ -52,7 +40,6 @@ class SpaceAgeTest {
52
40
  fun ageOnJupiter() {
53
41
  val age = SpaceAge(901876382)
54
42
 
55
- assertEquals(28.58, age.onEarth())
56
43
  assertEquals(2.41, age.onJupiter())
57
44
  }
58
45
 
@@ -61,7 +48,6 @@ class SpaceAgeTest {
61
48
  fun ageOnSaturn() {
62
49
  val age = SpaceAge(3000000000L)
63
50
 
64
- assertEquals(95.06, age.onEarth())
65
51
  assertEquals(3.23, age.onSaturn())
66
52
  }
67
53
 
@@ -70,7 +56,6 @@ class SpaceAgeTest {
70
56
  fun ageOnUranus() {
71
57
  val age = SpaceAge(3210123456L)
72
58
 
73
- assertEquals(101.72, age.onEarth())
74
59
  assertEquals(1.21, age.onUranus())
75
60
  }
76
61
 
@@ -79,7 +64,7 @@ class SpaceAgeTest {
79
64
  fun ageOnNeptune() {
80
65
  val age = SpaceAge(8210123456L)
81
66
 
82
- assertEquals(260.16, age.onEarth())
83
67
  assertEquals(1.58, age.onNeptune())
84
68
  }
69
+
85
70
  }
@@ -17,14 +17,14 @@ class SumOfMultiplesTest {
17
17
 
18
18
  @Test
19
19
  @Ignore
20
- fun `multiples of 3 or 5 up to 10`() {
21
- assertEquals(23, SumOfMultiples.sum(setOf(3, 5), 10))
20
+ fun `multiples of 3 up to 7`() {
21
+ assertEquals(9, SumOfMultiples.sum(setOf(3), 7))
22
22
  }
23
23
 
24
24
  @Test
25
25
  @Ignore
26
- fun `multiples of 3 or 5 up to 20`() {
27
- assertEquals(78, SumOfMultiples.sum(setOf(3, 5), 20))
26
+ fun `multiples of 3 or 5 up to 10`() {
27
+ assertEquals(23, SumOfMultiples.sum(setOf(3, 5), 10))
28
28
  }
29
29
 
30
30
  @Test
@@ -36,7 +36,7 @@ class SumOfMultiplesTest {
36
36
  @Test
37
37
  @Ignore
38
38
  fun `multiples of 3 or 5 up to 1000`() {
39
- assertEquals(233_168, SumOfMultiples.sum(setOf(3, 5), 1000))
39
+ assertEquals(233168, SumOfMultiples.sum(setOf(3, 5), 1000))
40
40
  }
41
41
 
42
42
  @Test
@@ -66,7 +66,7 @@ class SumOfMultiplesTest {
66
66
  @Test
67
67
  @Ignore
68
68
  fun `multiples of 43 or 47 up to 10000`() {
69
- assertEquals(2_203_160, SumOfMultiples.sum(setOf(43, 47), 10_000))
69
+ assertEquals(2203160, SumOfMultiples.sum(setOf(43, 47), 10000))
70
70
  }
71
71
 
72
72
  @Test
@@ -78,7 +78,7 @@ class SumOfMultiplesTest {
78
78
  @Test
79
79
  @Ignore
80
80
  fun `multiples of an empty set up to 10000`() {
81
- assertEquals(0, SumOfMultiples.sum(emptySet(), 10_000))
81
+ assertEquals(0, SumOfMultiples.sum(emptySet(), 10000))
82
82
  }
83
83
 
84
84
  }
@@ -2,7 +2,6 @@ import org.junit.Ignore
2
2
  import org.junit.Test
3
3
  import kotlin.test.assertEquals
4
4
 
5
-
6
5
  class TwoferTest {
7
6
 
8
7
  @Test