trackler 2.0.0.2 → 2.0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/common/exercises/forth/canonical-data.json +1 -1
- data/common/exercises/pangram/canonical-data.json +0 -10
- data/common/exercises/run-length-encoding/canonical-data.json +21 -11
- data/lib/trackler/version.rb +1 -1
- data/tracks/bash/SETUP.md +2 -39
- data/tracks/bash/config.json +0 -9
- data/tracks/bash/exercises/hello-world/HINTS.md +38 -0
- data/tracks/bash/exercises/hello-world/hello_world_test.sh +0 -14
- data/tracks/haskell/.travis.yml +2 -13
- data/tracks/haskell/README.md +2 -1
- data/tracks/haskell/config.json +6 -0
- data/tracks/haskell/exercises/accumulate/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/accumulate/{src/Example.hs → examples/success-standard/src/Accumulate.hs} +0 -0
- data/tracks/haskell/exercises/all-your-base/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/all-your-base/{src/Example.hs → examples/success-standard/src/Base.hs} +0 -0
- data/tracks/haskell/exercises/allergies/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/allergies/{src/Example.hs → examples/success-standard/src/Allergies.hs} +0 -0
- data/tracks/haskell/exercises/alphametics/HINTS.md +5 -0
- data/tracks/haskell/exercises/alphametics/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/alphametics/examples/success-standard/src/Alphametics.hs +116 -0
- data/tracks/haskell/exercises/alphametics/package.yaml +20 -0
- data/tracks/haskell/exercises/alphametics/src/Alphametics.hs +4 -0
- data/tracks/haskell/exercises/alphametics/stack.yaml +1 -0
- data/tracks/haskell/exercises/alphametics/test/Tests.hs +78 -0
- data/tracks/haskell/exercises/anagram/examples/{list-string → success-liststring}/package.yaml +0 -1
- data/tracks/haskell/exercises/anagram/examples/{list-string → success-liststring/src}/Anagram.hs +0 -0
- data/tracks/haskell/exercises/anagram/examples/{set-text → success-settext}/package.yaml +0 -0
- data/tracks/haskell/exercises/anagram/examples/{set-text → success-settext/src}/Anagram.hs +0 -0
- data/tracks/haskell/exercises/atbash-cipher/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/atbash-cipher/{src/Example.hs → examples/success-standard/src/Atbash.hs} +0 -0
- data/tracks/haskell/exercises/bank-account/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/bank-account/{src/Example.hs → examples/success-standard/src/BankAccount.hs} +0 -0
- data/tracks/haskell/exercises/beer-song/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/beer-song/{src/Example.hs → examples/success-standard/src/Beer.hs} +0 -0
- data/tracks/haskell/exercises/binary-search-tree/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/binary-search-tree/{src/Example.hs → examples/success-standard/src/BST.hs} +0 -0
- data/tracks/haskell/exercises/binary/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/binary/{src/Example.hs → examples/success-standard/src/Binary.hs} +0 -0
- data/tracks/haskell/exercises/bob/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/bob/{src/Example.hs → examples/success-standard/src/Bob.hs} +0 -0
- data/tracks/haskell/exercises/change/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/change/{src/Example.hs → examples/success-standard/src/Change.hs} +0 -0
- data/tracks/haskell/exercises/clock/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/clock/{src/Example.hs → examples/success-standard/src/Clock.hs} +0 -0
- data/tracks/haskell/exercises/connect/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/connect/{src/Example.hs → examples/success-standard/src/Connect.hs} +0 -0
- data/tracks/haskell/exercises/crypto-square/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/crypto-square/{src/Example.hs → examples/success-standard/src/CryptoSquare.hs} +0 -0
- data/tracks/haskell/exercises/custom-set/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/custom-set/{src/Example.hs → examples/success-standard/src/CustomSet.hs} +0 -0
- data/tracks/haskell/exercises/difference-of-squares/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/difference-of-squares/{src/Example.hs → examples/success-standard/src/Squares.hs} +0 -0
- data/tracks/haskell/exercises/etl/examples/success-standard/package.yaml +17 -0
- data/tracks/haskell/exercises/etl/{src/Example.hs → examples/success-standard/src/ETL.hs} +0 -0
- data/tracks/haskell/exercises/food-chain/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/food-chain/{src/Example.hs → examples/success-standard/src/FoodChain.hs} +0 -0
- data/tracks/haskell/exercises/forth/HINTS.md +2 -2
- data/tracks/haskell/exercises/forth/examples/success-standard/package.yaml +19 -0
- data/tracks/haskell/exercises/forth/{src/Example.hs → examples/success-standard/src/Forth.hs} +3 -3
- data/tracks/haskell/exercises/forth/package.yaml +0 -1
- data/tracks/haskell/exercises/forth/src/Forth.hs +3 -3
- data/tracks/haskell/exercises/forth/test/Tests.hs +120 -65
- data/tracks/haskell/exercises/gigasecond/examples/success-standard/package.yaml +17 -0
- data/tracks/haskell/exercises/gigasecond/{src/Example.hs → examples/success-standard/src/Gigasecond.hs} +0 -0
- data/tracks/haskell/exercises/go-counting/examples/success-standard/package.yaml +20 -0
- data/tracks/haskell/exercises/go-counting/{src/Example.hs → examples/success-standard/src/Counting.hs} +0 -0
- data/tracks/haskell/exercises/grade-school/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/grade-school/{src/Example.hs → examples/success-standard/src/School.hs} +0 -0
- data/tracks/haskell/exercises/grains/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/grains/{src/Example.hs → examples/success-standard/src/Grains.hs} +0 -0
- data/tracks/haskell/exercises/grains/test/Tests.hs +1 -2
- data/tracks/haskell/exercises/hamming/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/hamming/{src/Example.hs → examples/success-standard/src/Hamming.hs} +0 -0
- data/tracks/haskell/exercises/hexadecimal/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/hexadecimal/{src/Example.hs → examples/success-standard/src/Hexadecimal.hs} +0 -0
- data/tracks/haskell/exercises/house/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/house/{src/Example.hs → examples/success-standard/src/House.hs} +0 -0
- data/tracks/haskell/exercises/kindergarten-garden/examples/success-standard/package.yaml +19 -0
- data/tracks/haskell/exercises/kindergarten-garden/{src/Example.hs → examples/success-standard/src/Garden.hs} +0 -0
- data/tracks/haskell/exercises/largest-series-product/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/largest-series-product/{src/Example.hs → examples/success-standard/src/Series.hs} +0 -0
- data/tracks/haskell/exercises/leap/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/leap/{src/Example.hs → examples/success-standard/src/LeapYear.hs} +0 -0
- data/tracks/haskell/exercises/lens-person/examples/success-standard/package.yaml +19 -0
- data/tracks/haskell/exercises/lens-person/{src/Example.hs → examples/success-standard/src/Person.hs} +0 -0
- data/tracks/haskell/exercises/linked-list/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/linked-list/{src/Example.hs → examples/success-standard/src/Deque.hs} +0 -0
- data/tracks/haskell/exercises/list-ops/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/list-ops/{src/Example.hs → examples/success-standard/src/ListOps.hs} +0 -0
- data/tracks/haskell/exercises/luhn/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/luhn/{src/Example.hs → examples/success-standard/src/Luhn.hs} +0 -0
- data/tracks/haskell/exercises/matrix/examples/success-standard/package.yaml +17 -0
- data/tracks/haskell/exercises/matrix/{src/Example.hs → examples/success-standard/src/Matrix.hs} +0 -0
- data/tracks/haskell/exercises/meetup/examples/success-standard/package.yaml +17 -0
- data/tracks/haskell/exercises/meetup/{src/Example.hs → examples/success-standard/src/Meetup.hs} +0 -0
- data/tracks/haskell/exercises/minesweeper/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/minesweeper/{src/Example.hs → examples/success-standard/src/Minesweeper.hs} +0 -0
- data/tracks/haskell/exercises/nth-prime/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/nth-prime/{src/Example.hs → examples/success-standard/src/Prime.hs} +0 -0
- data/tracks/haskell/exercises/nucleotide-count/examples/success-standard/package.yaml +17 -0
- data/tracks/haskell/exercises/nucleotide-count/{src/Example.hs → examples/success-standard/src/DNA.hs} +0 -0
- data/tracks/haskell/exercises/ocr-numbers/examples/success-standard/package.yaml +19 -0
- data/tracks/haskell/exercises/ocr-numbers/{src/Example.hs → examples/success-standard/src/OCR.hs} +0 -0
- data/tracks/haskell/exercises/octal/examples/success-standard/package.yaml +17 -0
- data/tracks/haskell/exercises/octal/{src/Example.hs → examples/success-standard/src/Octal.hs} +0 -0
- data/tracks/haskell/exercises/palindrome-products/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/palindrome-products/{src/Example.hs → examples/success-standard/src/Palindromes.hs} +0 -0
- data/tracks/haskell/exercises/parallel-letter-frequency/examples/success-standard/package.yaml +20 -0
- data/tracks/haskell/exercises/parallel-letter-frequency/{src/Example.hs → examples/success-standard/src/Frequency.hs} +0 -0
- data/tracks/haskell/exercises/pascals-triangle/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/pascals-triangle/{src/Example.hs → examples/success-standard/src/Triangle.hs} +0 -0
- data/tracks/haskell/exercises/phone-number/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/phone-number/{src/Example.hs → examples/success-standard/src/Phone.hs} +0 -0
- data/tracks/haskell/exercises/pig-latin/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/pig-latin/{src/Example.hs → examples/success-standard/src/PigLatin.hs} +0 -0
- data/tracks/haskell/exercises/pig-latin/test/Tests.hs +2 -1
- data/tracks/haskell/exercises/pov/examples/success-standard/package.yaml +17 -0
- data/tracks/haskell/exercises/pov/{src/Example.hs → examples/success-standard/src/POV.hs} +0 -0
- data/tracks/haskell/exercises/pov/test/Tests.hs +34 -8
- data/tracks/haskell/exercises/prime-factors/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/prime-factors/{src/Example.hs → examples/success-standard/src/PrimeFactors.hs} +0 -0
- data/tracks/haskell/exercises/pythagorean-triplet/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/pythagorean-triplet/{src/Example.hs → examples/success-standard/src/Triplet.hs} +0 -0
- data/tracks/haskell/exercises/queen-attack/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/queen-attack/{src/Example.hs → examples/success-standard/src/Queens.hs} +0 -0
- data/tracks/haskell/exercises/raindrops/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/raindrops/{src/Example.hs → examples/success-standard/src/Raindrops.hs} +0 -0
- data/tracks/haskell/exercises/rna-transcription/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/rna-transcription/{src/Example.hs → examples/success-standard/src/DNA.hs} +0 -0
- data/tracks/haskell/exercises/robot-name/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/robot-name/{src/Example.hs → examples/success-standard/src/Robot.hs} +0 -0
- data/tracks/haskell/exercises/robot-simulator/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/robot-simulator/{src/Example.hs → examples/success-standard/src/Robot.hs} +0 -0
- data/tracks/haskell/exercises/roman-numerals/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/roman-numerals/{src/Example.hs → examples/success-standard/src/Roman.hs} +0 -0
- data/tracks/haskell/exercises/saddle-points/examples/success-standard/package.yaml +19 -0
- data/tracks/haskell/exercises/saddle-points/{src/Example.hs → examples/success-standard/src/Matrix.hs} +0 -0
- data/tracks/haskell/exercises/say/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/say/{src/Example.hs → examples/success-standard/src/Say.hs} +0 -0
- data/tracks/haskell/exercises/say/test/Tests.hs +4 -2
- data/tracks/haskell/exercises/scrabble-score/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/scrabble-score/{src/Example.hs → examples/success-standard/src/Scrabble.hs} +0 -0
- data/tracks/haskell/exercises/secret-handshake/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/secret-handshake/{src/Example.hs → examples/success-standard/src/SecretHandshake.hs} +0 -0
- data/tracks/haskell/exercises/series/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/series/{src/Example.hs → examples/success-standard/src/Series.hs} +0 -0
- data/tracks/haskell/exercises/sgf-parsing/examples/success-standard/package.yaml +20 -0
- data/tracks/haskell/exercises/sgf-parsing/{src/Example.hs → examples/success-standard/src/Sgf.hs} +0 -0
- data/tracks/haskell/exercises/sieve/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/sieve/{src/Example.hs → examples/success-standard/src/Sieve.hs} +0 -0
- data/tracks/haskell/exercises/simple-cipher/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/simple-cipher/{src/Example.hs → examples/success-standard/src/Cipher.hs} +0 -0
- data/tracks/haskell/exercises/simple-linked-list/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/simple-linked-list/{src/Example.hs → examples/success-standard/src/LinkedList.hs} +0 -0
- data/tracks/haskell/exercises/space-age/examples/success-double/package.yaml +0 -3
- data/tracks/haskell/exercises/space-age/examples/success-double/{SpaceAge.hs → src/SpaceAge.hs} +0 -0
- data/tracks/haskell/exercises/space-age/examples/success-rational/package.yaml +0 -3
- data/tracks/haskell/exercises/space-age/examples/success-rational/{SpaceAge.hs → src/SpaceAge.hs} +0 -0
- data/tracks/haskell/exercises/strain/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/strain/{src/Example.hs → examples/success-standard/src/Strain.hs} +0 -0
- data/tracks/haskell/exercises/sublist/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/sublist/{src/Example.hs → examples/success-standard/src/Sublist.hs} +0 -0
- data/tracks/haskell/exercises/sum-of-multiples/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/sum-of-multiples/{src/Example.hs → examples/success-standard/src/SumOfMultiples.hs} +0 -0
- data/tracks/haskell/exercises/triangle/examples/success-standard/package.yaml +18 -0
- data/tracks/haskell/exercises/triangle/{src/Example.hs → examples/success-standard/src/Triangle.hs} +0 -0
- data/tracks/haskell/exercises/trinary/examples/success-standard/package.yaml +17 -0
- data/tracks/haskell/exercises/trinary/{src/Example.hs → examples/success-standard/src/Trinary.hs} +0 -0
- data/tracks/haskell/exercises/word-count/examples/success-newtype/package.yaml +0 -2
- data/tracks/haskell/exercises/word-count/examples/success-newtype/{WordCount.hs → src/WordCount.hs} +0 -0
- data/tracks/haskell/exercises/word-count/examples/success-simple/package.yaml +0 -2
- data/tracks/haskell/exercises/word-count/examples/success-simple/{WordCount.hs → src/WordCount.hs} +0 -0
- data/tracks/haskell/exercises/wordy/examples/success-standard/package.yaml +19 -0
- data/tracks/haskell/exercises/wordy/{src/Example.hs → examples/success-standard/src/WordProblem.hs} +0 -0
- data/tracks/haskell/exercises/zebra-puzzle/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/zebra-puzzle/{src/Example.hs → examples/success-standard/src/ZebraPuzzle.hs} +0 -0
- data/tracks/haskell/exercises/zipper/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/zipper/{src/Example.hs → examples/success-standard/src/Zipper.hs} +0 -0
- data/tracks/java/config.json +7 -1
- data/tracks/java/exercises/difference-of-squares/build.gradle +17 -0
- data/tracks/java/exercises/difference-of-squares/src/example/java/.keep +0 -0
- data/tracks/java/exercises/difference-of-squares/src/example/java/Difference.java +20 -0
- data/tracks/java/exercises/difference-of-squares/src/main/java/.keep +0 -0
- data/tracks/java/exercises/difference-of-squares/src/main/java/Difference.java +5 -0
- data/tracks/java/exercises/difference-of-squares/src/test/java/DifferenceTest.java +87 -0
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/kotlin/docs/TESTS.md +97 -13
- data/tracks/ruby/exercises/alphametics/.version +1 -1
- data/tracks/ruby/exercises/alphametics/alphametics_test.rb +55 -45
- data/tracks/ruby/exercises/alphametics/example.rb +100 -63
- data/tracks/ruby/exercises/alphametics/example.tt +7 -6
- data/tracks/ruby/lib/alphametics_cases.rb +49 -13
- data/tracks/ruby/lib/generator.rb +2 -1
- data/tracks/rust/docs/LEARNING.md +1 -0
- data/tracks/rust/exercises/acronym/tests/acronym.rs +6 -0
- metadata +164 -80
data/tracks/haskell/exercises/leap/{src/Example.hs → examples/success-standard/src/LeapYear.hs}
RENAMED
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
name: lens-person
|
2
|
+
|
3
|
+
dependencies:
|
4
|
+
- base
|
5
|
+
- time
|
6
|
+
|
7
|
+
library:
|
8
|
+
exposed-modules: Person
|
9
|
+
source-dirs: src
|
10
|
+
dependencies:
|
11
|
+
- lens
|
12
|
+
|
13
|
+
tests:
|
14
|
+
test:
|
15
|
+
main: Tests.hs
|
16
|
+
source-dirs: test
|
17
|
+
dependencies:
|
18
|
+
- lens-person
|
19
|
+
- hspec
|
data/tracks/haskell/exercises/lens-person/{src/Example.hs → examples/success-standard/src/Person.hs}
RENAMED
File without changes
|
data/tracks/haskell/exercises/linked-list/{src/Example.hs → examples/success-standard/src/Deque.hs}
RENAMED
File without changes
|
data/tracks/haskell/exercises/list-ops/{src/Example.hs → examples/success-standard/src/ListOps.hs}
RENAMED
File without changes
|
File without changes
|
data/tracks/haskell/exercises/matrix/{src/Example.hs → examples/success-standard/src/Matrix.hs}
RENAMED
File without changes
|
data/tracks/haskell/exercises/meetup/{src/Example.hs → examples/success-standard/src/Meetup.hs}
RENAMED
File without changes
|
File without changes
|
data/tracks/haskell/exercises/nth-prime/{src/Example.hs → examples/success-standard/src/Prime.hs}
RENAMED
File without changes
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
name: ocr-numbers
|
2
|
+
|
3
|
+
dependencies:
|
4
|
+
- base
|
5
|
+
|
6
|
+
library:
|
7
|
+
exposed-modules: OCR
|
8
|
+
source-dirs: src
|
9
|
+
dependencies:
|
10
|
+
- containers
|
11
|
+
- split
|
12
|
+
|
13
|
+
tests:
|
14
|
+
test:
|
15
|
+
main: Tests.hs
|
16
|
+
source-dirs: test
|
17
|
+
dependencies:
|
18
|
+
- ocr-numbers
|
19
|
+
- hspec
|
data/tracks/haskell/exercises/ocr-numbers/{src/Example.hs → examples/success-standard/src/OCR.hs}
RENAMED
File without changes
|
data/tracks/haskell/exercises/octal/{src/Example.hs → examples/success-standard/src/Octal.hs}
RENAMED
File without changes
|
File without changes
|
data/tracks/haskell/exercises/parallel-letter-frequency/examples/success-standard/package.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
name: parallel-letter-frequency
|
2
|
+
|
3
|
+
dependencies:
|
4
|
+
- base
|
5
|
+
- containers
|
6
|
+
- text
|
7
|
+
|
8
|
+
library:
|
9
|
+
exposed-modules: Frequency
|
10
|
+
source-dirs: src
|
11
|
+
dependencies:
|
12
|
+
- parallel
|
13
|
+
|
14
|
+
tests:
|
15
|
+
test:
|
16
|
+
main: Tests.hs
|
17
|
+
source-dirs: test
|
18
|
+
dependencies:
|
19
|
+
- parallel-letter-frequency
|
20
|
+
- hspec
|
File without changes
|
File without changes
|
data/tracks/haskell/exercises/phone-number/{src/Example.hs → examples/success-standard/src/Phone.hs}
RENAMED
File without changes
|
data/tracks/haskell/exercises/pig-latin/{src/Example.hs → examples/success-standard/src/PigLatin.hs}
RENAMED
File without changes
|
@@ -10,7 +10,7 @@ specs :: Spec
|
|
10
10
|
specs = describe "pig-latin" $
|
11
11
|
describe "translate" $ do
|
12
12
|
|
13
|
-
-- Test cases adapted from `exercism/x-common/pig-latin.json` on 2016-
|
13
|
+
-- Test cases adapted from `exercism/x-common/pig-latin.json` on 2016-11-06.
|
14
14
|
|
15
15
|
describe "ay is added to words that start with vowels" $ do
|
16
16
|
it "word beginning with a" $ translate "apple" `shouldBe` "appleay"
|
@@ -30,6 +30,7 @@ specs = describe "pig-latin" $
|
|
30
30
|
it "word beginning with ch" $ translate "chair" `shouldBe` "airchay"
|
31
31
|
it "word beginning with qu" $ translate "queen" `shouldBe` "eenquay"
|
32
32
|
it "word beginning with qu and a preceding consonant" $ translate "square" `shouldBe` "aresquay"
|
33
|
+
it "... but not words beginning with a vowel then qu" $ translate "equal" `shouldBe` "equalay"
|
33
34
|
it "word beginning with th" $ translate "therapy" `shouldBe` "erapythay"
|
34
35
|
it "word beginning with thr" $ translate "thrush" `shouldBe` "ushthray"
|
35
36
|
it "word beginning with sch" $ translate "school" `shouldBe` "oolschay"
|
File without changes
|
@@ -15,13 +15,13 @@ main = hspecWith defaultConfig {configFastFail = True} specs
|
|
15
15
|
specs :: Spec
|
16
16
|
specs = describe "pov" $ do
|
17
17
|
|
18
|
-
--
|
19
|
-
-- for the test cases in `exercism/x-common`.
|
18
|
+
-- Test cases adapted from `exercism/x-common/pov` on 2016-11-06.
|
20
19
|
|
21
20
|
describe "fromPOV" $ do
|
22
21
|
|
23
22
|
let cases =
|
24
23
|
[ ("reparenting singleton" , singleton , Just singleton')
|
24
|
+
, ("reparenting with sibling" , simple , Just simple' )
|
25
25
|
, ("reparenting flat" , flat , Just flat' )
|
26
26
|
, ("reparenting nested" , nested , Just nested' )
|
27
27
|
, ("reparenting kids" , kids , Just kids' )
|
@@ -51,6 +51,17 @@ specs = describe "pov" $ do
|
|
51
51
|
|
52
52
|
describe "tracePathBetween" $ do
|
53
53
|
|
54
|
+
it "Can find path from x -> parent" $
|
55
|
+
tracePathBetween "x" "parent" simple
|
56
|
+
`shouldBe` Just [ "x"
|
57
|
+
, "parent" ]
|
58
|
+
|
59
|
+
it "Can find path from x -> sibling" $
|
60
|
+
tracePathBetween "x" "b" flat
|
61
|
+
`shouldBe` Just [ "x"
|
62
|
+
, "root"
|
63
|
+
, "b" ]
|
64
|
+
|
54
65
|
it "Can trace a path from x -> cousin" $
|
55
66
|
tracePathBetween "x" "cousin-1" cousins
|
56
67
|
`shouldBe` Just [ "x"
|
@@ -59,10 +70,6 @@ specs = describe "pov" $ do
|
|
59
70
|
, "uncle"
|
60
71
|
, "cousin-1" ]
|
61
72
|
|
62
|
-
it "Cannot trace between un-connected nodes" $
|
63
|
-
tracePathBetween "x" "NOT THERE" cousins
|
64
|
-
`shouldBe` Nothing
|
65
|
-
|
66
73
|
it "Can trace from a leaf to a leaf" $
|
67
74
|
tracePathBetween "kid-a" "cousin-0" cousins
|
68
75
|
`shouldBe` Just [ "kid-a"
|
@@ -72,6 +79,14 @@ specs = describe "pov" $ do
|
|
72
79
|
, "uncle"
|
73
80
|
, "cousin-0" ]
|
74
81
|
|
82
|
+
it "Cannot trace if destination does not exist" $
|
83
|
+
tracePathBetween "x" "NOT THERE" cousins
|
84
|
+
`shouldBe` Nothing
|
85
|
+
|
86
|
+
it "Cannot trace if source does not exist" $
|
87
|
+
tracePathBetween "NOT THERE" "x" cousins
|
88
|
+
`shouldBe` Nothing
|
89
|
+
|
75
90
|
-- Functions used in the tests.
|
76
91
|
|
77
92
|
leaf :: a -> Tree a
|
@@ -91,13 +106,24 @@ toEdges (Node r ts) = map ((r,) . rootLabel) ts ++ concatMap toEdges ts
|
|
91
106
|
|
92
107
|
-- Trees used in the tests.
|
93
108
|
|
94
|
-
singleton , flat , kids , nested , cousins :: Tree String
|
95
|
-
singleton', flat', kids', nested', cousins' :: Tree String
|
109
|
+
singleton , simple , flat , kids , nested , cousins :: Tree String
|
110
|
+
singleton', simple', flat', kids', nested', cousins' :: Tree String
|
96
111
|
|
97
112
|
singleton = leaf "x"
|
98
113
|
|
99
114
|
singleton' = leaf "x"
|
100
115
|
|
116
|
+
simple = Node "parent"
|
117
|
+
[ leaf "x"
|
118
|
+
, leaf "sibling"
|
119
|
+
]
|
120
|
+
|
121
|
+
simple' = Node "x"
|
122
|
+
[ Node "parent"
|
123
|
+
[ leaf "sibling"
|
124
|
+
]
|
125
|
+
]
|
126
|
+
|
101
127
|
flat = Node "root"
|
102
128
|
[ leaf "a"
|
103
129
|
, leaf "b"
|