trackler 2.2.1.52 → 2.2.1.53
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/leap/canonical-data.json +2 -2
- data/tracks/cfml/tasks/FormatConfig.cfc +6 -4
- data/tracks/cfml/tasks/GenerateReadme.cfc +197 -0
- data/tracks/cfml/tasks/ScaffoldExercise.cfc +6 -0
- data/tracks/csharp/config.json +1 -1
- data/tracks/delphi/exercises/leap/uLeapTests.pas +1 -1
- data/tracks/fsharp/exercises/clock/Clock.fs +1 -1
- data/tracks/fsharp/exercises/clock/ClockTest.fs +239 -61
- data/tracks/fsharp/exercises/clock/Example.fs +3 -3
- data/tracks/fsharp/exercises/dominoes/DominoesTest.fs +29 -26
- data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProductTest.fs +30 -15
- data/tracks/fsharp/exercises/leap/LeapTest.fs +2 -2
- data/tracks/fsharp/exercises/rectangles/Example.fs +1 -1
- data/tracks/fsharp/exercises/rectangles/Rectangles.fs +1 -1
- data/tracks/fsharp/exercises/rectangles/RectanglesTest.fs +66 -43
- data/tracks/fsharp/generators/Generators.fs +85 -1
- data/tracks/java/scripts/canonical_data_check.sh +8 -0
- data/tracks/kotlin/.gitignore +1 -0
- data/tracks/kotlin/exercises/acronym/.meta/version +1 -0
- data/tracks/kotlin/exercises/acronym/src/test/kotlin/AcronymTest.kt +9 -10
- data/tracks/kotlin/exercises/all-your-base/.meta/version +1 -1
- data/tracks/kotlin/exercises/all-your-base/src/test/kotlin/BaseConverterTest.kt +20 -20
- data/tracks/kotlin/exercises/allergies/.meta/version +1 -0
- data/tracks/kotlin/exercises/allergies/src/test/kotlin/AllergiesTest.kt +19 -72
- data/tracks/kotlin/exercises/anagram/.meta/src/reference/kotlin/Anagram.kt +7 -4
- data/tracks/kotlin/exercises/anagram/.meta/version +1 -0
- data/tracks/kotlin/exercises/anagram/src/test/kotlin/AnagramTest.kt +76 -29
- data/tracks/kotlin/exercises/atbash-cipher/.meta/version +1 -0
- data/tracks/kotlin/exercises/atbash-cipher/src/test/kotlin/AtbashTest.kt +6 -3
- data/tracks/kotlin/exercises/beer-song/.meta/version +1 -0
- data/tracks/kotlin/exercises/beer-song/src/test/kotlin/BeerSongTest.kt +21 -46
- data/tracks/kotlin/exercises/binary-search/.meta/version +1 -0
- data/tracks/kotlin/exercises/binary-search/src/test/kotlin/BinarySearchTest.kt +30 -19
- data/tracks/kotlin/exercises/bob/.meta/src/reference/kotlin/Bob.kt +8 -7
- data/tracks/kotlin/exercises/bob/.meta/version +1 -0
- data/tracks/kotlin/exercises/bob/src/test/kotlin/BobTest.kt +57 -15
- data/tracks/kotlin/exercises/bracket-push/.meta/version +1 -0
- data/tracks/kotlin/exercises/bracket-push/src/test/kotlin/BracketPushTest.kt +3 -1
- data/tracks/kotlin/exercises/collatz-conjecture/.meta/version +1 -1
- data/tracks/kotlin/exercises/difference-of-squares/.meta/version +1 -0
- data/tracks/kotlin/exercises/difference-of-squares/src/test/kotlin/SquaresTest.kt +10 -23
- data/tracks/kotlin/exercises/etl/.meta/src/reference/kotlin/ETL.kt +7 -1
- data/tracks/kotlin/exercises/etl/.meta/version +1 -0
- data/tracks/kotlin/exercises/etl/src/test/kotlin/ETLTest.kt +10 -10
- data/tracks/kotlin/exercises/flatten-array/.meta/version +1 -0
- data/tracks/kotlin/exercises/flatten-array/src/test/kotlin/FlattenerTest.kt +8 -16
- data/tracks/kotlin/exercises/gigasecond/.meta/version +1 -0
- data/tracks/kotlin/exercises/gigasecond/src/test/kotlin/GigasecondTest.kt +1 -1
- data/tracks/kotlin/exercises/hamming/.meta/src/reference/kotlin/Hamming.kt +1 -1
- data/tracks/kotlin/exercises/hamming/.meta/version +1 -1
- data/tracks/kotlin/exercises/hamming/src/test/kotlin/HammingTest.kt +4 -4
- data/tracks/kotlin/exercises/hello-world/.meta/version +1 -0
- data/tracks/kotlin/exercises/hello-world/src/test/kotlin/HelloWorldTest.kt +1 -1
- data/tracks/kotlin/exercises/isogram/.meta/version +1 -0
- data/tracks/kotlin/exercises/isogram/src/test/kotlin/IsogramTest.kt +5 -8
- data/tracks/kotlin/exercises/largest-series-product/.meta/src/reference/kotlin/Series.kt +2 -3
- data/tracks/kotlin/exercises/largest-series-product/.meta/version +1 -0
- data/tracks/kotlin/exercises/largest-series-product/src/test/kotlin/SeriesTest.kt +97 -0
- data/tracks/kotlin/exercises/leap/.meta/version +1 -0
- data/tracks/kotlin/exercises/leap/src/test/kotlin/LeapTest.kt +8 -26
- data/tracks/kotlin/exercises/list-ops/.meta/version +1 -1
- data/tracks/kotlin/exercises/luhn/.meta/version +1 -0
- data/tracks/kotlin/exercises/luhn/src/test/kotlin/LuhnTest.kt +0 -3
- data/tracks/kotlin/exercises/nth-prime/.meta/version +1 -0
- data/tracks/kotlin/exercises/nth-prime/src/test/kotlin/PrimeTest.kt +0 -2
- data/tracks/kotlin/exercises/nucleotide-count/.meta/src/reference/kotlin/{DNA.kt → Dna.kt} +3 -8
- data/tracks/kotlin/exercises/nucleotide-count/.meta/version +1 -0
- data/tracks/kotlin/exercises/nucleotide-count/src/test/kotlin/DnaTest.kt +48 -0
- data/tracks/kotlin/exercises/pangram/.meta/src/reference/kotlin/{Pangrams.kt → Pangram.kt} +1 -1
- data/tracks/kotlin/exercises/pangram/.meta/version +1 -1
- data/tracks/kotlin/exercises/pangram/src/test/kotlin/PangramTest.kt +15 -9
- data/tracks/kotlin/exercises/pascals-triangle/.meta/version +1 -0
- data/tracks/kotlin/exercises/pascals-triangle/src/test/kotlin/PascalsTriangleTest.kt +32 -14
- data/tracks/kotlin/exercises/perfect-numbers/.meta/src/reference/kotlin/NaturalNumber.kt +1 -1
- data/tracks/kotlin/exercises/perfect-numbers/.meta/version +1 -0
- data/tracks/kotlin/exercises/perfect-numbers/src/test/kotlin/{PerfectNumbersTest.kt → NaturalNumberTest.kt} +25 -7
- data/tracks/kotlin/exercises/phone-number/.meta/src/reference/kotlin/PhoneNumber.kt +15 -7
- data/tracks/kotlin/exercises/phone-number/.meta/version +1 -0
- data/tracks/kotlin/exercises/phone-number/src/test/kotlin/PhoneNumberTest.kt +46 -29
- data/tracks/kotlin/exercises/pig-latin/.meta/src/reference/kotlin/PigLatin.kt +2 -2
- data/tracks/kotlin/exercises/pig-latin/.meta/version +1 -0
- data/tracks/kotlin/exercises/pig-latin/src/test/kotlin/PigLatinTest.kt +21 -10
- data/tracks/kotlin/exercises/raindrops/.meta/version +1 -0
- data/tracks/kotlin/exercises/raindrops/src/test/kotlin/RaindropsTest.kt +19 -26
- data/tracks/kotlin/exercises/react/.meta/version +1 -0
- data/tracks/kotlin/exercises/react/src/test/kotlin/ReactTest.kt +11 -4
- data/tracks/kotlin/exercises/robot-simulator/.meta/version +1 -1
- data/tracks/kotlin/exercises/roman-numerals/.meta/version +1 -0
- data/tracks/kotlin/exercises/roman-numerals/src/test/kotlin/RomanNumeralTest.kt +1 -2
- data/tracks/kotlin/exercises/rotational-cipher/.meta/version +1 -1
- data/tracks/kotlin/exercises/rotational-cipher/src/test/kotlin/RotationalCipherTest.kt +7 -7
- data/tracks/kotlin/exercises/scrabble-score/.meta/src/reference/kotlin/{Scrabble.kt → ScrabbleScore.kt} +1 -1
- data/tracks/kotlin/exercises/scrabble-score/.meta/version +1 -0
- data/tracks/kotlin/exercises/scrabble-score/src/test/kotlin/ScrabbleScoreTest.kt +9 -7
- data/tracks/kotlin/exercises/sieve/.meta/version +1 -0
- data/tracks/kotlin/exercises/sieve/src/test/kotlin/SieveTest.kt +8 -0
- data/tracks/kotlin/exercises/space-age/.meta/version +1 -0
- data/tracks/kotlin/exercises/space-age/src/test/kotlin/SpaceAgeTest.kt +1 -16
- data/tracks/kotlin/exercises/sum-of-multiples/.meta/version +1 -0
- data/tracks/kotlin/exercises/sum-of-multiples/src/test/kotlin/SumOfMultiplesTest.kt +7 -7
- data/tracks/kotlin/exercises/triangle/.meta/version +1 -0
- data/tracks/kotlin/exercises/two-fer/.meta/version +1 -0
- data/tracks/kotlin/exercises/two-fer/src/test/kotlin/TwoferTest.kt +0 -1
- data/tracks/kotlin/exercises/word-count/.meta/src/reference/kotlin/WordCount.kt +6 -2
- data/tracks/kotlin/exercises/word-count/.meta/version +1 -0
- data/tracks/kotlin/exercises/word-count/src/test/kotlin/WordCountTest.kt +31 -9
- data/tracks/kotlin/scripts/canonical_data_check.sh +8 -0
- data/tracks/perl6/exercises/leap/leap.t +2 -2
- data/tracks/php/config.json +16 -0
- data/tracks/php/exercises/crypto-square/crypto-square_test.php +50 -0
- data/tracks/php/exercises/crypto-square/example.php +32 -0
- data/tracks/php/exercises/meetup/README.md +21 -0
- data/tracks/php/exercises/meetup/example.php +19 -0
- data/tracks/php/exercises/meetup/meetup_test.php +577 -0
- data/tracks/python/README.md +7 -5
- data/tracks/python/config.json +36 -27
- data/tracks/python/docs/TESTS.md +36 -12
- data/tracks/python/exercises/complex-numbers/complex_numbers_test.py +1 -1
- data/tracks/python/exercises/diffie-hellman/.meta/hints.md +16 -0
- data/tracks/python/exercises/diffie-hellman/README.md +15 -2
- data/tracks/python/exercises/error-handling/README.md +23 -0
- data/tracks/python/exercises/error-handling/error_handling.py +14 -0
- data/tracks/python/exercises/error-handling/error_handling_test.py +66 -0
- data/tracks/python/exercises/error-handling/example.py +21 -0
- data/tracks/python/exercises/forth/forth_test.py +1 -1
- data/tracks/python/exercises/isogram/isogram_test.py +5 -3
- data/tracks/python/exercises/leap/leap_test.py +2 -2
- data/tracks/python/exercises/rotational-cipher/rotational_cipher_test.py +4 -4
- data/tracks/python/exercises/simple-cipher/.meta/hints.md +16 -0
- data/tracks/python/exercises/simple-cipher/README.md +17 -0
- data/tracks/python/exercises/sum-of-multiples/sum_of_multiples_test.py +4 -1
- data/tracks/python/exercises/twelve-days/example.py +3 -3
- data/tracks/python/exercises/twelve-days/twelve_days.py +2 -2
- metadata +53 -9
- data/tracks/kotlin/exercises/largest-series-product/src/test/kotlin/SeriesInvalidInputTest.kt +0 -30
- data/tracks/kotlin/exercises/largest-series-product/src/test/kotlin/SeriesValidInputTest.kt +0 -34
- data/tracks/kotlin/exercises/nucleotide-count/src/test/kotlin/NucleotideTest.kt +0 -87
data/tracks/kotlin/exercises/largest-series-product/src/test/kotlin/SeriesInvalidInputTest.kt
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
|
2
|
-
import org.junit.Test
|
3
|
-
import org.junit.Ignore
|
4
|
-
|
5
|
-
class SeriesInvalidInputTest {
|
6
|
-
|
7
|
-
|
8
|
-
@Test(expected = IllegalArgumentException::class)
|
9
|
-
fun nonDigitCharacters() {
|
10
|
-
Series("1234a5")
|
11
|
-
}
|
12
|
-
|
13
|
-
@Ignore
|
14
|
-
@Test(expected = IllegalArgumentException::class)
|
15
|
-
fun negativeSpan() {
|
16
|
-
Series("12345").getLargestProduct(-1)
|
17
|
-
}
|
18
|
-
|
19
|
-
@Ignore
|
20
|
-
@Test(expected = IllegalArgumentException::class)
|
21
|
-
fun spanLargerThanStringSize() {
|
22
|
-
Series("123").getLargestProduct(4)
|
23
|
-
}
|
24
|
-
|
25
|
-
@Ignore
|
26
|
-
@Test(expected = IllegalArgumentException::class)
|
27
|
-
fun spanLargerThanStringSizeUsingEmptyString() {
|
28
|
-
Series("").getLargestProduct(1)
|
29
|
-
}
|
30
|
-
}
|
@@ -1,34 +0,0 @@
|
|
1
|
-
|
2
|
-
import org.junit.Test
|
3
|
-
import org.junit.Ignore
|
4
|
-
import org.junit.runner.RunWith
|
5
|
-
import org.junit.runners.Parameterized
|
6
|
-
import kotlin.test.assertEquals
|
7
|
-
|
8
|
-
@RunWith(Parameterized::class)
|
9
|
-
class SeriesValidInputTest(val input: String, val span: Int, val expectedOutput: Long) {
|
10
|
-
|
11
|
-
companion object {
|
12
|
-
@JvmStatic
|
13
|
-
@Parameterized.Parameters(name = "{index}: lsp({0},{1})={2}")
|
14
|
-
fun data() = listOf(
|
15
|
-
arrayOf("0123456789", 2, 72),
|
16
|
-
arrayOf("576802143", 2, 48),
|
17
|
-
arrayOf("0123456789", 3, 504),
|
18
|
-
arrayOf("1027839564", 3, 270),
|
19
|
-
arrayOf("0123456789", 5, 15120),
|
20
|
-
arrayOf("73167176531330624919225119674426574742355349194934", 6, 23520),
|
21
|
-
arrayOf("52677741234314237566414902593461595376319419139427", 6, 28350),
|
22
|
-
arrayOf("7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450", 13, 23514624000),
|
23
|
-
arrayOf("0000", 2, 0),
|
24
|
-
arrayOf("99099", 3, 0),
|
25
|
-
arrayOf("", 0, 1)
|
26
|
-
)
|
27
|
-
}
|
28
|
-
|
29
|
-
|
30
|
-
@Test
|
31
|
-
fun validInputTest() {
|
32
|
-
assertEquals(expectedOutput, Series(input).getLargestProduct(span))
|
33
|
-
}
|
34
|
-
}
|
@@ -1,87 +0,0 @@
|
|
1
|
-
import org.junit.Test
|
2
|
-
import org.junit.Ignore;
|
3
|
-
import kotlin.test.assertEquals
|
4
|
-
|
5
|
-
class NucleotideTest {
|
6
|
-
|
7
|
-
|
8
|
-
@Test
|
9
|
-
fun emptyDnaStringHasNoAdenosine() {
|
10
|
-
val dna = DNA("");
|
11
|
-
|
12
|
-
assertEquals(0, dna.count('A'))
|
13
|
-
}
|
14
|
-
|
15
|
-
@Ignore
|
16
|
-
@Test
|
17
|
-
fun emptyDnaStringHasNoNucleotides() {
|
18
|
-
val dna = DNA("");
|
19
|
-
val expected = mapOf('A' to 0, 'C' to 0, 'G' to 0, 'T' to 0)
|
20
|
-
|
21
|
-
assertEquals(expected, dna.nucleotideCounts)
|
22
|
-
}
|
23
|
-
|
24
|
-
@Ignore
|
25
|
-
@Test
|
26
|
-
fun repetitiveCytidineGetsCounted() {
|
27
|
-
val dna = DNA("CCCCC");
|
28
|
-
assertEquals(5, dna.count('C'))
|
29
|
-
}
|
30
|
-
|
31
|
-
@Ignore
|
32
|
-
@Test
|
33
|
-
fun repetitiveSequenceWithOnlyGuanosine() {
|
34
|
-
val dna = DNA("GGGGGGGG");
|
35
|
-
val expected = mapOf('A' to 0, 'C' to 0, 'G' to 8, 'T' to 0)
|
36
|
-
|
37
|
-
assertEquals(expected, dna.nucleotideCounts)
|
38
|
-
}
|
39
|
-
|
40
|
-
@Ignore
|
41
|
-
@Test
|
42
|
-
fun countsOnlyThymidine() {
|
43
|
-
val dna = DNA("GGGGGTAACCCGG");
|
44
|
-
|
45
|
-
assertEquals(1, dna.count('T'))
|
46
|
-
}
|
47
|
-
|
48
|
-
@Ignore
|
49
|
-
@Test
|
50
|
-
fun countsANucleotideOnlyOnce() {
|
51
|
-
val dna = DNA("CGATTGGG");
|
52
|
-
|
53
|
-
dna.count('T')
|
54
|
-
assertEquals(2, dna.count('T'))
|
55
|
-
}
|
56
|
-
|
57
|
-
@Ignore
|
58
|
-
@Test
|
59
|
-
fun dnaCountsDoNotChangeAfterCountingAdenosine() {
|
60
|
-
val dna = DNA("GATTACA");
|
61
|
-
val expected = mapOf('A' to 3, 'C' to 1, 'G' to 1, 'T' to 2)
|
62
|
-
|
63
|
-
dna.count('A');
|
64
|
-
assertEquals(expected, dna.nucleotideCounts)
|
65
|
-
}
|
66
|
-
|
67
|
-
@Ignore
|
68
|
-
@Test(expected = IllegalArgumentException::class)
|
69
|
-
fun validatesNucleotides() {
|
70
|
-
DNA("GX")
|
71
|
-
}
|
72
|
-
|
73
|
-
@Ignore
|
74
|
-
@Test(expected = IllegalArgumentException::class)
|
75
|
-
fun validatesNucleotidesCountInput() {
|
76
|
-
DNA("GACT").count('X');
|
77
|
-
}
|
78
|
-
|
79
|
-
@Ignore
|
80
|
-
@Test
|
81
|
-
fun countsAllNucleotides() {
|
82
|
-
val dna = DNA("AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC")
|
83
|
-
val expected = mapOf('A' to 20, 'C' to 12, 'G' to 17, 'T' to 21)
|
84
|
-
|
85
|
-
assertEquals(expected, dna.nucleotideCounts)
|
86
|
-
}
|
87
|
-
}
|