trackler 2.0.0.1 → 2.0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/bump-content +3 -1
- data/bin/verify-metadata +2 -2
- data/common/exercises/alphametics/canonical-data.json +19 -9
- data/common/exercises/food-chain/canonical-data.json +7 -1
- data/common/exercises/grains/canonical-data.json +66 -0
- data/common/exercises/raindrops/description.md +4 -5
- data/common/exercises/triangle/canonical-data.json +81 -54
- data/lib/trackler/version.rb +1 -1
- data/tracks/c/config.json +26 -19
- data/tracks/c/exercises/allergies/makefile +15 -0
- data/tracks/c/exercises/allergies/src/allergies.h +21 -0
- data/tracks/c/exercises/allergies/src/example.c +32 -0
- data/tracks/c/exercises/allergies/src/example.h +26 -0
- data/tracks/c/exercises/allergies/test/test_allergies.c +203 -0
- data/tracks/c/exercises/allergies/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/allergies/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/allergies/test/vendor/unity_internals.h +701 -0
- data/tracks/c/exercises/atbash-cipher/makefile +16 -0
- data/tracks/c/exercises/atbash-cipher/src/example.c +71 -0
- data/tracks/c/exercises/atbash-cipher/src/example.h +7 -0
- data/tracks/c/exercises/atbash-cipher/test/test_atbash_cipher.c +113 -0
- data/tracks/c/exercises/atbash-cipher/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/atbash-cipher/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/atbash-cipher/test/vendor/unity_internals.h +701 -0
- data/tracks/c/exercises/phone-number/makefile +16 -0
- data/tracks/c/exercises/phone-number/src/example.c +66 -0
- data/tracks/c/exercises/phone-number/src/example.h +8 -0
- data/tracks/c/exercises/phone-number/test/test_phone_number.c +108 -0
- data/tracks/c/exercises/phone-number/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/phone-number/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/phone-number/test/vendor/unity_internals.h +701 -0
- data/tracks/csharp/config.json +8 -0
- data/tracks/csharp/exercises/bowling/BowlingTest.cs +188 -33
- data/tracks/csharp/exercises/bowling/Example.cs +38 -9
- data/tracks/csharp/exercises/rectangles/Example.cs +91 -0
- data/tracks/csharp/exercises/rectangles/RectanglesTest.cs +133 -0
- data/tracks/elisp/docs/INSTALLATION.org +1 -1
- data/tracks/elixir/config.json +8 -66
- data/tracks/elixir/docs/LEARNING.md +1 -1
- data/tracks/elixir/exercises/diamond/diamond_test.exs +12 -12
- data/tracks/elixir/exercises/grep/example.exs +92 -0
- data/tracks/elixir/exercises/grep/grep.exs +6 -0
- data/tracks/elixir/exercises/grep/grep_test.exs +259 -0
- data/tracks/elixir/exercises/markdown/markdown.exs +59 -2
- data/tracks/elixir/exercises/nucleotide-count/nucleotide_count_test.exs +4 -4
- data/tracks/elixir/exercises/phone-number/phone_number_test.exs +5 -0
- data/tracks/fsharp/exercises/bowling/BowlingTest.fs +158 -43
- data/tracks/fsharp/exercises/bowling/Example.fs +53 -24
- data/tracks/go/config.json +5 -0
- data/tracks/go/exercises/diamond/diamond_test.go +227 -0
- data/tracks/go/exercises/diamond/example.go +47 -0
- data/tracks/go/exercises/food-chain/example.go +1 -1
- data/tracks/go/exercises/food-chain/food_chain_test.go +30 -6
- data/tracks/go/exercises/nucleotide-count/example.go +21 -8
- data/tracks/go/exercises/nucleotide-count/nucleotide_count_test.go +45 -37
- data/tracks/haskell/exercises/anagram/test/Tests.hs +1 -11
- data/tracks/java/bin/journey-test.sh +165 -128
- data/tracks/java/docs/ABOUT.md +5 -8
- data/tracks/java/exercises/hello-world/build.gradle +0 -6
- data/tracks/java/exercises/hello-world/src/test/java/HelloWorldTest.java +0 -1
- data/tracks/java/exercises/meetup/build.gradle +0 -1
- data/tracks/java/exercises/meetup/src/example/java/Meetup.java +9 -7
- data/tracks/java/exercises/meetup/src/test/java/MeetupTest.java +185 -188
- data/tracks/lua/config.json +0 -73
- data/tracks/lua/exercises/bowling/bowling_spec.lua +92 -48
- data/tracks/lua/exercises/bowling/example.lua +4 -1
- data/tracks/objective-c/config.json +9 -30
- data/tracks/objective-c/exercises/pangram/PangramExample.h +7 -0
- data/tracks/objective-c/exercises/pangram/PangramExample.m +21 -0
- data/tracks/objective-c/exercises/pangram/PangramTest.m +51 -0
- data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
- data/tracks/ocaml/README.md +46 -1
- data/tracks/ocaml/SETUP.md +21 -2
- data/tracks/ocaml/config.json +48 -78
- data/tracks/perl5/README.md +15 -8
- data/tracks/perl5/testall.pl +5 -5
- data/tracks/php/config.json +26 -34
- data/tracks/php/docs/ABOUT.md +15 -0
- data/tracks/php/exercises/allergies/allergies_test.php +121 -0
- data/tracks/php/exercises/allergies/example.php +64 -0
- data/tracks/php/exercises/etl/etl_test.php +52 -0
- data/tracks/php/exercises/etl/example.php +12 -0
- data/tracks/php/exercises/nucleotide-count/example.php +25 -0
- data/tracks/php/exercises/nucleotide-count/nucleotide-count_test.php +36 -0
- data/tracks/php/exercises/pig-latin/example.php +25 -29
- data/tracks/php/exercises/pig-latin/pig-latin_test.php +26 -19
- data/tracks/php/exercises/space-age/example.php +65 -0
- data/tracks/php/exercises/space-age/space-age_test.php +70 -0
- data/tracks/php/exercises/triangle/example.php +43 -0
- data/tracks/php/exercises/triangle/triangle_test.php +140 -0
- data/tracks/pony/exercises/anagram/example.pony +6 -6
- data/tracks/pony/exercises/anagram/test.pony +3 -4
- data/tracks/pony/exercises/bob/test.pony +23 -23
- data/tracks/pony/exercises/difference-of-squares/test.pony +11 -11
- data/tracks/pony/exercises/hamming/example.pony +3 -3
- data/tracks/pony/exercises/hamming/test.pony +16 -16
- data/tracks/pony/exercises/hello-world/test.pony +5 -4
- data/tracks/pony/exercises/leap/test.pony +8 -8
- data/tracks/python/config.json +18 -0
- data/tracks/python/exercises/diamond/diamond_test.py +33 -0
- data/tracks/python/exercises/diamond/example.py +15 -0
- data/tracks/python/exercises/linked-list/example.py +47 -0
- data/tracks/python/exercises/linked-list/linked_list.py +13 -0
- data/tracks/python/exercises/linked-list/linked_list_test.py +49 -0
- data/tracks/python/exercises/list-ops/example.py +55 -0
- data/tracks/python/exercises/list-ops/list_ops.py +38 -0
- data/tracks/python/exercises/list-ops/list_ops_test.py +136 -0
- data/tracks/ruby/bin/generate +22 -2
- data/tracks/ruby/config.json +12 -83
- data/tracks/ruby/exercises/allergies/allergies_test.rb +0 -1
- data/tracks/ruby/exercises/atbash-cipher/atbash_cipher_test.rb +0 -1
- data/tracks/ruby/exercises/beer-song/beer_song_test.rb +1 -2
- data/tracks/ruby/exercises/binary/example.rb +0 -1
- data/tracks/ruby/exercises/binary-search-tree/binary_search_tree_test.rb +1 -1
- data/tracks/ruby/exercises/bowling/.version +1 -0
- data/tracks/ruby/exercises/bowling/bowling_test.rb +109 -133
- data/tracks/ruby/exercises/bowling/example.rb +7 -7
- data/tracks/ruby/exercises/bowling/example.tt +27 -0
- data/tracks/ruby/exercises/circular-buffer/circular_buffer_test.rb +0 -2
- data/tracks/ruby/exercises/clock/example.rb +0 -2
- data/tracks/ruby/exercises/connect/connect_test.rb +0 -1
- data/tracks/ruby/exercises/custom-set/custom_set_test.rb +0 -1
- data/tracks/ruby/exercises/diamond/diamond_test.rb +0 -1
- data/tracks/ruby/exercises/etl/etl_test.rb +1 -1
- data/tracks/ruby/exercises/house/house_test.rb +0 -1
- data/tracks/ruby/exercises/isogram/isogram_test.rb +2 -2
- data/tracks/ruby/exercises/largest-series-product/example.tt +0 -3
- data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +0 -4
- data/tracks/ruby/exercises/linked-list/linked_list_test.rb +1 -1
- data/tracks/ruby/exercises/meetup/meetup_test.rb +0 -1
- data/tracks/ruby/exercises/nth-prime/example.tt +0 -2
- data/tracks/ruby/exercises/nth-prime/nth_prime_test.rb +0 -2
- data/tracks/ruby/exercises/ocr-numbers/ocr_numbers_test.rb +1 -2
- data/tracks/ruby/exercises/protein-translation/protein_translation_test.rb +0 -1
- data/tracks/ruby/exercises/proverb/proverb_test.rb +1 -3
- data/tracks/ruby/exercises/queen-attack/example.rb +3 -1
- data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +34 -8
- data/tracks/ruby/exercises/robot-simulator/robot_simulator_test.rb +1 -1
- data/tracks/ruby/exercises/strain/strain_test.rb +2 -2
- data/tracks/ruby/exercises/tournament/.version +1 -0
- data/tracks/ruby/exercises/tournament/example.rb +54 -0
- data/tracks/ruby/exercises/tournament/example.tt +23 -0
- data/tracks/ruby/exercises/tournament/tournament_test.rb +92 -0
- data/tracks/ruby/exercises/transpose/.version +1 -0
- data/tracks/ruby/exercises/transpose/example.rb +14 -0
- data/tracks/ruby/exercises/transpose/example.tt +22 -0
- data/tracks/ruby/exercises/transpose/transpose_test.rb +303 -0
- data/tracks/ruby/lib/bowling_cases.rb +46 -0
- data/tracks/ruby/lib/isogram_cases.rb +1 -1
- data/tracks/ruby/lib/tournament_cases.rb +45 -0
- data/tracks/ruby/lib/transpose_cases.rb +45 -0
- data/tracks/rust/config.json +2 -0
- data/tracks/rust/exercises/bowling/.gitignore +7 -0
- data/tracks/rust/exercises/bowling/Cargo.toml +3 -0
- data/tracks/rust/exercises/bowling/example.rs +134 -0
- data/tracks/rust/exercises/bowling/tests/bowling.rs +373 -0
- data/tracks/rust/exercises/grains/.gitignore +7 -0
- data/tracks/rust/exercises/grains/Cargo.toml +3 -0
- data/tracks/rust/exercises/grains/example.rs +11 -0
- data/tracks/rust/exercises/grains/src/lib.rs +7 -0
- data/tracks/rust/exercises/grains/tests/grains.rs +63 -0
- data/tracks/rust/problems.md +2 -0
- data/tracks/scala/README.md +38 -0
- data/tracks/scala/config.json +20 -74
- data/tracks/scala/exercises/accumulate/src/test/scala/accumulate_test.scala +4 -0
- data/tracks/scala/exercises/allergies/src/test/scala/allergies_test.scala +11 -0
- data/tracks/scala/exercises/alphametics/build.sbt +6 -0
- data/tracks/scala/exercises/alphametics/example.scala +125 -0
- data/tracks/scala/exercises/alphametics/src/main/scala/.keep +0 -0
- data/tracks/scala/exercises/alphametics/src/test/scala/AlphameticsTest.scala +62 -0
- data/tracks/scala/exercises/atbash-cipher/src/test/scala/atbash_test.scala +8 -0
- data/tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala +4 -0
- data/tracks/scala/exercises/binary/src/test/scala/binary_test.scala +13 -0
- data/tracks/scala/exercises/binary-search-tree/src/test/scala/BstTest.scala +11 -0
- data/tracks/scala/exercises/bowling/Example.scala +116 -0
- data/tracks/scala/exercises/bowling/build.sbt +3 -0
- data/tracks/scala/exercises/bowling/src/main/scala/Bowling.scala +11 -0
- data/tracks/scala/exercises/bowling/src/test/scala/BowlingSuite.scala +237 -0
- data/tracks/scala/exercises/clock/src/test/scala/ClockTest.scala +50 -0
- data/tracks/scala/exercises/connect/README.md +17 -0
- data/tracks/scala/exercises/connect/src/test/scala/ConnectTest.scala +7 -0
- data/tracks/scala/exercises/crypto-square/src/test/scala/{CrytpoSquareTest.scala → CryptoSquareTest.scala} +9 -0
- data/tracks/scala/exercises/custom-set/src/test/scala/CustomSetTest.scala +36 -0
- data/tracks/scala/exercises/difference-of-squares/src/test/scala/squares_test.scala +8 -0
- data/tracks/scala/exercises/forth/src/test/scala/ForthTest.scala +22 -0
- data/tracks/scala/exercises/hexadecimal/src/test/scala/HexadecimalTest.scala +8 -0
- data/tracks/scala/exercises/kindergarten-garden/src/test/scala/GardenTest.scala +5 -0
- data/tracks/scala/exercises/largest-series-product/src/test/scala/SeriesTest.scala +2 -0
- data/tracks/scala/exercises/linked-list/src/test/scala/DequeTest.scala +4 -0
- data/tracks/scala/exercises/luhn/src/test/scala/LuhnTest.scala +4 -0
- data/tracks/scala/exercises/matrix/src/test/scala/MatrixTest.scala +2 -0
- data/tracks/scala/exercises/minesweeper/src/test/scala/MinesweeperTest.scala +6 -0
- data/tracks/scala/exercises/nth-prime/src/test/scala/PrimeTest.scala +5 -0
- data/tracks/scala/exercises/ocr-numbers/src/test/scala/OcrTest.scala +15 -0
- data/tracks/scala/exercises/octal/src/test/scala/OctalTest.scala +7 -0
- data/tracks/scala/exercises/parallel-letter-frequency/src/test/scala/FrequencyTest.scala +8 -0
- data/tracks/scala/exercises/pascals-triangle/src/test/scala/PascalsTriangleTest.scala +5 -0
- data/tracks/scala/exercises/pig-latin/src/test/scala/PigLatinTest.scala +4 -0
- data/tracks/scala/exercises/pythagorean-triplet/src/test/scala/PythagoreanTripletTest.scala +3 -0
- data/tracks/scala/exercises/queen-attack/src/test/scala/QueensTest.scala +5 -0
- data/tracks/scala/exercises/robot-simulator/src/test/scala/RobotTest.scala +16 -8
- data/tracks/scala/exercises/say/src/test/scala/SayTest.scala +34 -17
- data/tracks/scala/exercises/scrabble-score/src/test/scala/scrabble_score_test.scala +6 -0
- data/tracks/scala/exercises/secret-handshake/src/test/scala/SecretHandshakeTest.scala +18 -9
- data/tracks/scala/exercises/series/src/test/scala/SeriesTest.scala +4 -2
- data/tracks/scala/exercises/sieve/src/test/scala/SieveTest.scala +8 -4
- data/tracks/scala/exercises/simple-cipher/src/test/scala/CipherTest.scala +17 -9
- data/tracks/scala/exercises/sublist/src/test/scala/sublist_test.scala +17 -0
- data/tracks/scala/exercises/trinary/src/test/scala/TrinaryTest.scala +14 -7
- data/tracks/scala/exercises/wordy/src/test/scala/WordProblemTest.scala +28 -14
- data/tracks/scala/project/Build.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala +57 -0
- data/tracks/sml/config.json +41 -6
- data/tracks/sml/exercises/flatten-array/example.sml +6 -0
- data/tracks/sml/exercises/flatten-array/test_flatten_array.sml +10 -0
- data/tracks/sml/exercises/nth-prime/example.sml +46 -0
- data/tracks/sml/exercises/nth-prime/test_nth_prime.sml +14 -0
- data/tracks/sml/exercises/raindrops/example.sml +9 -0
- data/tracks/sml/exercises/raindrops/raindrops.sml +2 -0
- data/tracks/sml/exercises/raindrops/test_raindrops.sml +95 -0
- data/tracks/swift/config.json +269 -328
- data/tracks/swift/exercises/pangram/PangramExample.swift +17 -0
- data/tracks/swift/exercises/pangram/PangramTest.swift +43 -0
- data/tracks/swift/xcodeProject/xSwift.xcodeproj/project.pbxproj +16 -0
- metadata +95 -3
@@ -7,6 +7,7 @@ class MinesweeperTest extends FlatSpec with Matchers {
|
|
7
7
|
}
|
8
8
|
|
9
9
|
it should "handle empty board" in {
|
10
|
+
pending
|
10
11
|
Minesweeper.annotate(List(" ",
|
11
12
|
" ",
|
12
13
|
" ")) should
|
@@ -16,6 +17,7 @@ class MinesweeperTest extends FlatSpec with Matchers {
|
|
16
17
|
}
|
17
18
|
|
18
19
|
it should "handle board full of mines" in {
|
20
|
+
pending
|
19
21
|
Minesweeper.annotate(List("***",
|
20
22
|
"***",
|
21
23
|
"***")) should
|
@@ -25,6 +27,7 @@ class MinesweeperTest extends FlatSpec with Matchers {
|
|
25
27
|
}
|
26
28
|
|
27
29
|
it should "handle surrounded" in {
|
30
|
+
pending
|
28
31
|
Minesweeper.annotate(List("***",
|
29
32
|
"* *",
|
30
33
|
"***")) should
|
@@ -34,12 +37,14 @@ class MinesweeperTest extends FlatSpec with Matchers {
|
|
34
37
|
}
|
35
38
|
|
36
39
|
it should "handle horizontal line" in {
|
40
|
+
pending
|
37
41
|
Minesweeper.annotate(List(" * * ")) should
|
38
42
|
equal(List("1*2*1"))
|
39
43
|
}
|
40
44
|
|
41
45
|
|
42
46
|
it should "handle vertical line" in {
|
47
|
+
pending
|
43
48
|
Minesweeper.annotate(List(" ",
|
44
49
|
"*",
|
45
50
|
" ",
|
@@ -53,6 +58,7 @@ class MinesweeperTest extends FlatSpec with Matchers {
|
|
53
58
|
}
|
54
59
|
|
55
60
|
it should "handle cross" in {
|
61
|
+
pending
|
56
62
|
Minesweeper.annotate(List(" * ",
|
57
63
|
" * ",
|
58
64
|
"*****",
|
@@ -6,22 +6,27 @@ class PrimeTest extends FlatSpec with Matchers {
|
|
6
6
|
}
|
7
7
|
|
8
8
|
it should "calculate 2nd prime" in {
|
9
|
+
pending
|
9
10
|
Prime.nth(2) should be (3)
|
10
11
|
}
|
11
12
|
|
12
13
|
it should "calculate 6th prime" in {
|
14
|
+
pending
|
13
15
|
Prime.nth(6) should be (13)
|
14
16
|
}
|
15
17
|
|
16
18
|
it should "calculate 1000th prime" in {
|
19
|
+
pending
|
17
20
|
Prime.nth(1000) should be (7919)
|
18
21
|
}
|
19
22
|
|
20
23
|
it should "calculate 10000th prime" in {
|
24
|
+
pending
|
21
25
|
Prime.nth(10000) should be (104729)
|
22
26
|
}
|
23
27
|
|
24
28
|
it should "calculate 10001th prime" in {
|
29
|
+
pending
|
25
30
|
Prime.nth(10001) should be (104743)
|
26
31
|
}
|
27
32
|
}
|
@@ -9,6 +9,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
9
9
|
}
|
10
10
|
|
11
11
|
it should "recognize one" in {
|
12
|
+
pending
|
12
13
|
Ocr(List(" "
|
13
14
|
, " |"
|
14
15
|
, " |"
|
@@ -16,6 +17,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
16
17
|
}
|
17
18
|
|
18
19
|
it should "recognize two" in {
|
20
|
+
pending
|
19
21
|
Ocr(List(" _ "
|
20
22
|
, " _|"
|
21
23
|
, "|_ "
|
@@ -23,6 +25,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
23
25
|
}
|
24
26
|
|
25
27
|
it should "recognize three" in {
|
28
|
+
pending
|
26
29
|
Ocr(List(" _ "
|
27
30
|
, " _|"
|
28
31
|
, " _|"
|
@@ -30,6 +33,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
30
33
|
}
|
31
34
|
|
32
35
|
it should "recognize four" in {
|
36
|
+
pending
|
33
37
|
Ocr(List(" "
|
34
38
|
, "|_|"
|
35
39
|
, " |"
|
@@ -37,6 +41,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
37
41
|
}
|
38
42
|
|
39
43
|
it should "recognize five" in {
|
44
|
+
pending
|
40
45
|
Ocr(List(" _ "
|
41
46
|
, "|_ "
|
42
47
|
, " _|"
|
@@ -44,6 +49,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
44
49
|
}
|
45
50
|
|
46
51
|
it should "recognize six" in {
|
52
|
+
pending
|
47
53
|
Ocr(List(" _ "
|
48
54
|
, "|_ "
|
49
55
|
, "|_|"
|
@@ -51,6 +57,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
51
57
|
}
|
52
58
|
|
53
59
|
it should "recognize seven" in {
|
60
|
+
pending
|
54
61
|
Ocr(List(" _ "
|
55
62
|
, " |"
|
56
63
|
, " |"
|
@@ -58,6 +65,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
58
65
|
}
|
59
66
|
|
60
67
|
it should "recognize eight" in {
|
68
|
+
pending
|
61
69
|
Ocr(List(" _ "
|
62
70
|
, "|_|"
|
63
71
|
, "|_|"
|
@@ -65,6 +73,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
65
73
|
}
|
66
74
|
|
67
75
|
it should "recognize nine" in {
|
76
|
+
pending
|
68
77
|
Ocr(List(" _ "
|
69
78
|
, "|_|"
|
70
79
|
, " _|"
|
@@ -72,6 +81,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
72
81
|
}
|
73
82
|
|
74
83
|
it should "recognize garble" in {
|
84
|
+
pending
|
75
85
|
Ocr(List(" "
|
76
86
|
, "| |"
|
77
87
|
, "| |"
|
@@ -79,6 +89,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
79
89
|
}
|
80
90
|
|
81
91
|
it should "recognize ten" in {
|
92
|
+
pending
|
82
93
|
Ocr(List(" _ "
|
83
94
|
, " || |"
|
84
95
|
, " ||_|"
|
@@ -86,6 +97,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
86
97
|
}
|
87
98
|
|
88
99
|
it should "recognize 110101100" in {
|
100
|
+
pending
|
89
101
|
Ocr(List(" _ _ _ _ "
|
90
102
|
, " | || | || | | || || |"
|
91
103
|
, " | ||_| ||_| | ||_||_|"
|
@@ -93,6 +105,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
93
105
|
}
|
94
106
|
|
95
107
|
it should "recognize garbled multi digit ocr" in {
|
108
|
+
pending
|
96
109
|
Ocr(List(" _ _ _ "
|
97
110
|
, " | || | || | || || |"
|
98
111
|
, " | | _| ||_| | ||_||_|"
|
@@ -100,6 +113,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
100
113
|
}
|
101
114
|
|
102
115
|
it should "recognize 1234567890" in {
|
116
|
+
pending
|
103
117
|
Ocr(List(" _ _ _ _ _ _ _ _ "
|
104
118
|
, " | _| _||_||_ |_ ||_||_|| |"
|
105
119
|
, " ||_ _| | _||_| ||_| _||_|"
|
@@ -107,6 +121,7 @@ class OcrTest extends FlatSpec with Matchers {
|
|
107
121
|
}
|
108
122
|
|
109
123
|
it should "recognize 123,456,789" in {
|
124
|
+
pending
|
110
125
|
Ocr(List(" _ _ "
|
111
126
|
, " | _| _|"
|
112
127
|
, " ||_ _|"
|
@@ -8,6 +8,7 @@ class OctalTest extends FlatSpec with Matchers {
|
|
8
8
|
}
|
9
9
|
|
10
10
|
it should "invalid octal should error" in {
|
11
|
+
pending
|
11
12
|
intercept[IllegalArgumentException] {
|
12
13
|
Octal.octalToInt("1239")
|
13
14
|
}
|
@@ -18,30 +19,36 @@ class OctalTest extends FlatSpec with Matchers {
|
|
18
19
|
}
|
19
20
|
|
20
21
|
it should "handle zeros" in {
|
22
|
+
pending
|
21
23
|
Octal.octalToInt("00000000") should equal(0)
|
22
24
|
}
|
23
25
|
|
24
26
|
it should "handle single digit" in {
|
27
|
+
pending
|
25
28
|
Octal.octalToInt("0") should equal(0)
|
26
29
|
Octal.octalToInt("7") should equal(7)
|
27
30
|
}
|
28
31
|
|
29
32
|
it should "handle multiple digits" in {
|
33
|
+
pending
|
30
34
|
Octal.octalToInt("10") should equal(8)
|
31
35
|
Octal.octalToInt("17") should equal(15)
|
32
36
|
Octal.octalToInt("1234567") should equal(342391)
|
33
37
|
}
|
34
38
|
|
35
39
|
it should "handle Int 0" in {
|
40
|
+
pending
|
36
41
|
Octal.intToOctal(0) should equal("0")
|
37
42
|
}
|
38
43
|
|
39
44
|
it should "handle Int to multi digit octal" in {
|
45
|
+
pending
|
40
46
|
Octal.intToOctal(9) should equal("11")
|
41
47
|
Octal.intToOctal(342391) should equal("1234567")
|
42
48
|
}
|
43
49
|
|
44
50
|
it should "handle Int to octal with trailing zeros" in {
|
51
|
+
pending
|
45
52
|
Octal.intToOctal(8) should equal("10")
|
46
53
|
}
|
47
54
|
}
|
@@ -41,31 +41,38 @@ class FrequencyTest extends FunSuite with Matchers {
|
|
41
41
|
}
|
42
42
|
|
43
43
|
test("Single letter") {
|
44
|
+
pending
|
44
45
|
Frequency.frequency(10, Seq("a")) should be (Map('a' -> 1))
|
45
46
|
}
|
46
47
|
|
47
48
|
test("Case insensitivity") {
|
49
|
+
pending
|
48
50
|
Frequency.frequency(1000, Seq("aA")) should be (Map('a' -> 2))
|
49
51
|
}
|
50
52
|
|
51
53
|
test("Many empty texts") {
|
54
|
+
pending
|
52
55
|
Frequency.frequency(1, Iterator.fill(10000)(" ").toSeq) should be (Map())
|
53
56
|
}
|
54
57
|
|
55
58
|
test("many times the same text gives a predictable result") {
|
59
|
+
pending
|
56
60
|
Frequency.frequency(1, Iterator.fill(1000)("abc").toSeq) should
|
57
61
|
be (Map('a' -> 1000, 'b' -> 1000, 'c' -> 1000))
|
58
62
|
}
|
59
63
|
|
60
64
|
test("Ignore punctuation") {
|
65
|
+
pending
|
61
66
|
Frequency.frequency(1, ode_an_die_freude).get(',') should be (None)
|
62
67
|
}
|
63
68
|
|
64
69
|
test("Ignore numbers") {
|
70
|
+
pending
|
65
71
|
Frequency.frequency(1, Seq("Testing 1, 2, 3")).get('1') should be (None)
|
66
72
|
}
|
67
73
|
|
68
74
|
test("All three anthems - 1 worker") {
|
75
|
+
pending
|
69
76
|
val freqs = Frequency.frequency(1, ode_an_die_freude ++ wilhelmus ++ star_spangled_banner)
|
70
77
|
freqs.get('a') should be (Some(49))
|
71
78
|
freqs.get('t') should be (Some(56))
|
@@ -73,6 +80,7 @@ class FrequencyTest extends FunSuite with Matchers {
|
|
73
80
|
}
|
74
81
|
|
75
82
|
test("All three anthems - 4 workers") {
|
83
|
+
pending
|
76
84
|
val freqs = Frequency.frequency(4, ode_an_die_freude ++ wilhelmus ++ star_spangled_banner)
|
77
85
|
freqs.get('a') should be (Some(49))
|
78
86
|
freqs.get('t') should be (Some(56))
|
@@ -6,24 +6,29 @@ class PascalsTriangleTest extends FlatSpec with Matchers {
|
|
6
6
|
}
|
7
7
|
|
8
8
|
it should "handle 2 rows" in {
|
9
|
+
pending
|
9
10
|
PascalsTriangle.triangle(2) should be (List(List(1), List(1, 1)))
|
10
11
|
}
|
11
12
|
|
12
13
|
it should "handle 3 rows" in {
|
14
|
+
pending
|
13
15
|
PascalsTriangle.triangle(3) should be (List(List(1), List(1, 1), List(1, 2, 1)))
|
14
16
|
}
|
15
17
|
|
16
18
|
it should "handle 4 rows" in {
|
19
|
+
pending
|
17
20
|
PascalsTriangle.triangle(4) should be (List(List(1), List(1, 1),
|
18
21
|
List(1, 2, 1), List(1, 3, 3, 1)))
|
19
22
|
}
|
20
23
|
|
21
24
|
it should "handle 5 rows" in {
|
25
|
+
pending
|
22
26
|
PascalsTriangle.triangle(5) should be (List(List(1), List(1, 1),
|
23
27
|
List(1, 2, 1), List(1, 3, 3, 1), List(1, 4, 6, 4, 1)))
|
24
28
|
}
|
25
29
|
|
26
30
|
it should "handle 20 rows" in {
|
31
|
+
pending
|
27
32
|
PascalsTriangle.triangle(20).takeRight(1).head should be (List(1, 19,
|
28
33
|
171, 969, 3876, 11628, 27132, 50388, 75582, 92378,
|
29
34
|
92378, 75582, 50388, 27132, 11628, 3876, 969, 171,
|
@@ -7,12 +7,14 @@ class PigLatinTest extends FlatSpec with Matchers {
|
|
7
7
|
}
|
8
8
|
|
9
9
|
it should "translate beginning with single letter consonant clusters" in {
|
10
|
+
pending
|
10
11
|
PigLatin.translate("pig") should be ("igpay")
|
11
12
|
PigLatin.translate("koala") should be ("oalakay")
|
12
13
|
PigLatin.translate("qat") should be ("atqay")
|
13
14
|
}
|
14
15
|
|
15
16
|
it should "translate beginning with multiple letter consonant clusters" in {
|
17
|
+
pending
|
16
18
|
PigLatin.translate("chair") should be ("airchay")
|
17
19
|
PigLatin.translate("therapy") should be ("erapythay")
|
18
20
|
PigLatin.translate("thrush") should be ("ushthray")
|
@@ -20,11 +22,13 @@ class PigLatinTest extends FlatSpec with Matchers {
|
|
20
22
|
}
|
21
23
|
|
22
24
|
it should "translate beginning with consonant clusters with qu" in {
|
25
|
+
pending
|
23
26
|
PigLatin.translate("queen") should be ("eenquay")
|
24
27
|
PigLatin.translate("square") should be ("aresquay")
|
25
28
|
}
|
26
29
|
|
27
30
|
it should "translate phrases" in {
|
31
|
+
pending
|
28
32
|
PigLatin.translate("quick fast run") should be ("ickquay astfay unray")
|
29
33
|
}
|
30
34
|
}
|
@@ -13,14 +13,17 @@ class PythagoreanTripletTest extends FunSuite with Matchers {
|
|
13
13
|
}
|
14
14
|
|
15
15
|
test("pythagoreanTriplets 1 to 10") {
|
16
|
+
pending
|
16
17
|
PythagoreanTriplet.pythagoreanTriplets(1, 10) should be (Seq((3, 4, 5), (6, 8, 10)))
|
17
18
|
}
|
18
19
|
|
19
20
|
test("pythagoreanTriplets 11 to 20") {
|
21
|
+
pending
|
20
22
|
PythagoreanTriplet.pythagoreanTriplets(11, 20) should be (Seq((12, 16, 20)))
|
21
23
|
}
|
22
24
|
|
23
25
|
test("pythagoreanTriplets 56 to 95") {
|
26
|
+
pending
|
24
27
|
PythagoreanTriplet.pythagoreanTriplets(56, 95) should be (Seq((57, 76, 95), (60, 63, 87)))
|
25
28
|
}
|
26
29
|
}
|
@@ -14,6 +14,7 @@ class QueensTest extends FunSuite with Matchers {
|
|
14
14
|
}
|
15
15
|
|
16
16
|
test("boardString") {
|
17
|
+
pending
|
17
18
|
Queens().boardString(Some(Position(2, 4)), Some(Position(6, 6))) should equal(
|
18
19
|
"_ _ _ _ _ _ _ _\n" +
|
19
20
|
"_ _ _ _ _ _ _ _\n" +
|
@@ -26,18 +27,22 @@ class QueensTest extends FunSuite with Matchers {
|
|
26
27
|
}
|
27
28
|
|
28
29
|
test("canAttack - false") {
|
30
|
+
pending
|
29
31
|
Queens().canAttack(Position(2, 3), Position(4, 7)) should be (false)
|
30
32
|
}
|
31
33
|
|
32
34
|
test("canAttack - vert attack") {
|
35
|
+
pending
|
33
36
|
Queens().canAttack(Position(2, 4), Position(2, 7)) should be (true)
|
34
37
|
}
|
35
38
|
|
36
39
|
test("canAttack - horiz attack") {
|
40
|
+
pending
|
37
41
|
Queens().canAttack(Position(5, 4), Position(2, 4)) should be (true)
|
38
42
|
}
|
39
43
|
|
40
44
|
test("canAttack - diag attack") {
|
45
|
+
pending
|
41
46
|
Queens().canAttack(Position(1, 1), Position(6, 6)) should be (true)
|
42
47
|
Queens().canAttack(Position(0, 6), Position(1, 7)) should be (true)
|
43
48
|
Queens().canAttack(Position(4, 1), Position(6, 3)) should be (true)
|
@@ -7,45 +7,53 @@ class RobotTest extends FunSuite with Matchers {
|
|
7
7
|
robot.coordinates should equal((0, 0))
|
8
8
|
}
|
9
9
|
|
10
|
-
test("advance - positive") {
|
10
|
+
test("advance - positive") {
|
11
|
+
pending
|
11
12
|
Robot(Bearing.North, (0, 0)).advance should equal(Robot(Bearing.North, (0, 1)))
|
12
13
|
Robot(Bearing.East, (0, 0)).advance should equal(Robot(Bearing.East, (1, 0)))
|
13
14
|
}
|
14
15
|
|
15
|
-
test("advance - negative") {
|
16
|
+
test("advance - negative") {
|
17
|
+
pending
|
16
18
|
Robot(Bearing.South, (0, 0)).advance should equal(Robot(Bearing.South, (0, -1)))
|
17
19
|
Robot(Bearing.West, (0, 0)).advance should equal(Robot(Bearing.West, (-1, 0)))
|
18
20
|
}
|
19
21
|
|
20
|
-
test("turning") {
|
22
|
+
test("turning") {
|
23
|
+
pending
|
21
24
|
Robot(Bearing.South, (0, 0)).turnRight should equal(Robot(Bearing.West, (0, 0)))
|
22
25
|
Robot(Bearing.West, (0, 0)).turnLeft() should equal(Robot(Bearing.South, (0, 0)))
|
23
26
|
}
|
24
27
|
|
25
|
-
test("turning - edge cases") {
|
28
|
+
test("turning - edge cases") {
|
29
|
+
pending
|
26
30
|
Robot(Bearing.West, (0, 0)).turnRight should equal(Robot(Bearing.North, (0, 0)))
|
27
31
|
Robot(Bearing.North, (0, 0)).turnLeft should equal(Robot(Bearing.West, (0, 0)))
|
28
32
|
}
|
29
33
|
|
30
|
-
test("simulate Seurat") {
|
34
|
+
test("simulate Seurat") {
|
35
|
+
pending
|
31
36
|
val seurat = Robot(Bearing.East, (-2, 1))
|
32
37
|
val movedSeurat = seurat.simulate("RLAALAL")
|
33
38
|
movedSeurat should equal(Robot(Bearing.West, (0, 2)))
|
34
39
|
}
|
35
40
|
|
36
|
-
test("simulate Erasmus") {
|
41
|
+
test("simulate Erasmus") {
|
42
|
+
pending
|
37
43
|
val erasmus = Robot(Bearing.North, (0, 0))
|
38
44
|
val movedErasmus = erasmus.simulate("LAAARALA")
|
39
45
|
movedErasmus should equal(Robot(Bearing.West, (-4, 1)))
|
40
46
|
}
|
41
47
|
|
42
|
-
test("simulate Chirox") {
|
48
|
+
test("simulate Chirox") {
|
49
|
+
pending
|
43
50
|
val chirox = Robot(Bearing.East, (2, -7))
|
44
51
|
val movedChirox = chirox.simulate("RRAAAAALA")
|
45
52
|
movedChirox should equal(Robot(Bearing.South, (-3, -8)))
|
46
53
|
}
|
47
54
|
|
48
|
-
test("simulate Awesomo") {
|
55
|
+
test("simulate Awesomo") {
|
56
|
+
pending
|
49
57
|
val awesomo = Robot(Bearing.South, (8, 4))
|
50
58
|
val movedAwesomo = awesomo.simulate("LAAARRRALLLL")
|
51
59
|
movedAwesomo should equal(Robot(Bearing.North, (11, 5)))
|
@@ -5,72 +5,89 @@ class SayTest extends FunSuite with Matchers {
|
|
5
5
|
Say.inEnglish(0) should be (Some("zero"))
|
6
6
|
}
|
7
7
|
|
8
|
-
test("one") {
|
8
|
+
test("one") {
|
9
|
+
pending
|
9
10
|
Say.inEnglish(1) should be (Some("one"))
|
10
11
|
}
|
11
12
|
|
12
|
-
test("fourteen") {
|
13
|
+
test("fourteen") {
|
14
|
+
pending
|
13
15
|
Say.inEnglish(14) should be (Some("fourteen"))
|
14
16
|
}
|
15
17
|
|
16
|
-
test("twenty") {
|
18
|
+
test("twenty") {
|
19
|
+
pending
|
17
20
|
Say.inEnglish(20) should be (Some("twenty"))
|
18
21
|
}
|
19
22
|
|
20
|
-
test("twenty-two") {
|
23
|
+
test("twenty-two") {
|
24
|
+
pending
|
21
25
|
Say.inEnglish(22) should be (Some("twenty-two"))
|
22
26
|
}
|
23
27
|
|
24
|
-
test("fifty") {
|
28
|
+
test("fifty") {
|
29
|
+
pending
|
25
30
|
Say.inEnglish(50) should be (Some("fifty"))
|
26
31
|
}
|
27
32
|
|
28
|
-
test("ninety-eight") {
|
33
|
+
test("ninety-eight") {
|
34
|
+
pending
|
29
35
|
Say.inEnglish(98) should be (Some("ninety-eight"))
|
30
36
|
}
|
31
37
|
|
32
|
-
test("one hundred") {
|
38
|
+
test("one hundred") {
|
39
|
+
pending
|
33
40
|
Say.inEnglish(100) should be (Some("one hundred"))
|
34
41
|
}
|
35
42
|
|
36
|
-
test("one hundred twenty-three") {
|
43
|
+
test("one hundred twenty-three") {
|
44
|
+
pending
|
37
45
|
Say.inEnglish(123) should be (Some("one hundred twenty-three"))
|
38
46
|
}
|
39
47
|
|
40
|
-
test("one thousand") {
|
48
|
+
test("one thousand") {
|
49
|
+
pending
|
41
50
|
Say.inEnglish(1000) should be (Some("one thousand"))
|
42
51
|
}
|
43
52
|
|
44
|
-
test("one thousand two hundred thirty-four") {
|
53
|
+
test("one thousand two hundred thirty-four") {
|
54
|
+
pending
|
45
55
|
Say.inEnglish(1234) should be (Some("one thousand two hundred thirty-four"))
|
46
56
|
}
|
47
57
|
|
48
|
-
test("one million") {
|
58
|
+
test("one million") {
|
59
|
+
pending
|
49
60
|
Say.inEnglish(1000000) should be (Some("one million"))
|
50
61
|
}
|
51
62
|
|
52
|
-
test("one million two") {
|
63
|
+
test("one million two") {
|
64
|
+
pending
|
53
65
|
Say.inEnglish(1000002) should be (Some("one million two"))
|
54
66
|
}
|
55
67
|
|
56
|
-
test("one million two thousand three hundred forty-five") {
|
68
|
+
test("one million two thousand three hundred forty-five") {
|
69
|
+
pending
|
57
70
|
Say.inEnglish(1002345) should be (Some("one million two thousand three hundred forty-five"))
|
58
71
|
}
|
59
72
|
|
60
|
-
test("one billion") {
|
73
|
+
test("one billion") {
|
74
|
+
pending
|
61
75
|
Say.inEnglish(1000000000) should be (Some("one billion"))
|
62
76
|
}
|
63
77
|
|
64
|
-
test("A big number") {
|
78
|
+
test("A big number") {
|
79
|
+
pending
|
65
80
|
Say.inEnglish(987654321123L) should be (Some("nine hundred eighty-seven billion " +
|
66
81
|
"six hundred fifty-four million three hundred twenty-one thousand one hundred twenty-three"))
|
67
82
|
}
|
68
83
|
|
69
|
-
test("Lower bound") {
|
84
|
+
test("Lower bound") {
|
85
|
+
pending
|
70
86
|
Say.inEnglish(-1) should be (None)
|
71
87
|
}
|
72
88
|
|
73
|
-
test("Upper bound") {
|
89
|
+
test("Upper bound") {
|
90
|
+
pending
|
74
91
|
Say.inEnglish(1000000000000L) should be (None)
|
75
92
|
}
|
76
93
|
}
|
@@ -6,26 +6,32 @@ class scrabble_score_test extends FunSuite with Matchers {
|
|
6
6
|
}
|
7
7
|
|
8
8
|
test("score letter uppercase") {
|
9
|
+
pending
|
9
10
|
new Scrabble().scoreLetter('A') should be (1)
|
10
11
|
}
|
11
12
|
|
12
13
|
test("score word") {
|
14
|
+
pending
|
13
15
|
new Scrabble().scoreWord("at") should be (2)
|
14
16
|
}
|
15
17
|
|
16
18
|
test("score word with dupe letters") {
|
19
|
+
pending
|
17
20
|
new Scrabble().scoreWord("street") should be (6)
|
18
21
|
}
|
19
22
|
|
20
23
|
test("score quirky word") {
|
24
|
+
pending
|
21
25
|
new Scrabble().scoreWord("quirky") should be (22)
|
22
26
|
}
|
23
27
|
|
24
28
|
test("score capitalized word") {
|
29
|
+
pending
|
25
30
|
new Scrabble().scoreWord("OXYPHENBUTAZONE") should be (41)
|
26
31
|
}
|
27
32
|
|
28
33
|
test("score mixed case word") {
|
34
|
+
pending
|
29
35
|
new Scrabble().scoreWord("Oxyphenbutazone") should be (41)
|
30
36
|
}
|
31
37
|
}
|
@@ -6,46 +6,55 @@ class SecretHandshakeTest extends FunSuite with Matchers {
|
|
6
6
|
SecretHandshake.handshake("1") should be (List("wink"))
|
7
7
|
}
|
8
8
|
|
9
|
-
test("10 to double blink") {
|
9
|
+
test("10 to double blink") {
|
10
|
+
pending
|
10
11
|
SecretHandshake.handshake(2) should be (List("double blink"))
|
11
12
|
SecretHandshake.handshake("10") should be (List("double blink"))
|
12
13
|
}
|
13
14
|
|
14
|
-
test("100 to close your eyes") {
|
15
|
+
test("100 to close your eyes") {
|
16
|
+
pending
|
15
17
|
SecretHandshake.handshake(4) should be (List("close your eyes"))
|
16
18
|
SecretHandshake.handshake("100") should be (List("close your eyes"))
|
17
19
|
}
|
18
20
|
|
19
|
-
test("1000 to jump") {
|
21
|
+
test("1000 to jump") {
|
22
|
+
pending
|
20
23
|
SecretHandshake.handshake(8) should be (List("jump"))
|
21
24
|
SecretHandshake.handshake("1000") should be (List("jump"))
|
22
25
|
}
|
23
26
|
|
24
|
-
test("11 to wink and double blink") {
|
27
|
+
test("11 to wink and double blink") {
|
28
|
+
pending
|
25
29
|
SecretHandshake.handshake(3) should be (List("wink", "double blink"))
|
26
30
|
SecretHandshake.handshake("11") should be (List("wink", "double blink"))
|
27
31
|
}
|
28
32
|
|
29
|
-
test("10011 to double blink and wink") {
|
33
|
+
test("10011 to double blink and wink") {
|
34
|
+
pending
|
30
35
|
SecretHandshake.handshake(19) should be (List("double blink", "wink"))
|
31
36
|
SecretHandshake.handshake("10011") should be (List("double blink", "wink"))
|
32
37
|
}
|
33
38
|
|
34
|
-
test("11111 to jump, close your eyes, double blink, and wink") {
|
39
|
+
test("11111 to jump, close your eyes, double blink, and wink") {
|
40
|
+
pending
|
35
41
|
SecretHandshake.handshake(31) should be (List("jump", "close your eyes", "double blink", "wink"))
|
36
42
|
SecretHandshake.handshake("11111") should be (List("jump", "close your eyes", "double blink", "wink"))
|
37
43
|
}
|
38
44
|
|
39
|
-
test("zero") {
|
45
|
+
test("zero") {
|
46
|
+
pending
|
40
47
|
SecretHandshake.handshake(0) should be (List())
|
41
48
|
SecretHandshake.handshake("0") should be (List())
|
42
49
|
}
|
43
50
|
|
44
|
-
test("gibberish") {
|
51
|
+
test("gibberish") {
|
52
|
+
pending
|
45
53
|
SecretHandshake.handshake("piggies") should be (List())
|
46
54
|
}
|
47
55
|
|
48
|
-
test("partial gibberish") {
|
56
|
+
test("partial gibberish") {
|
57
|
+
pending
|
49
58
|
SecretHandshake.handshake("1piggies") should be (List())
|
50
59
|
}
|
51
60
|
}
|
@@ -8,14 +8,16 @@ class SeriesTest extends FunSuite with Matchers {
|
|
8
8
|
List(3), List(4)))
|
9
9
|
}
|
10
10
|
|
11
|
-
test("slices of two") {
|
11
|
+
test("slices of two") {
|
12
|
+
pending
|
12
13
|
Series.slices(2, "") should be (List())
|
13
14
|
Series.slices(2, "01") should be (List(List(0, 1)))
|
14
15
|
Series.slices(2, "01234") should be (List(List(0, 1), List(1, 2), List(2, 3),
|
15
16
|
List(3, 4)))
|
16
17
|
}
|
17
18
|
|
18
|
-
test("slices of three") {
|
19
|
+
test("slices of three") {
|
20
|
+
pending
|
19
21
|
Series.slices(3, "") should be (List())
|
20
22
|
Series.slices(3, "012") should be (List(List(0, 1, 2)))
|
21
23
|
Series.slices(3, "01234") should be (List(List(0, 1, 2), List(1, 2, 3),
|