trackler 2.2.1.104 → 2.2.1.105
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/.travis.yml +41 -1
- data/problem-specifications/README.md +5 -5
- data/problem-specifications/canonical-schema.json +11 -6
- data/problem-specifications/exercises/all-your-base/canonical-data.json +2 -2
- data/problem-specifications/exercises/circular-buffer/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/complex-numbers/canonical-data.json +9 -1
- data/problem-specifications/exercises/forth/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/grains/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/grep/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/house/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/isogram/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/list-ops/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/pov/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/scale-generator/canonical-data.json +181 -0
- data/problem-specifications/exercises/trinary/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/word-search/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/exercises/zipper/USE_OLD_SCHEMA +0 -0
- data/problem-specifications/old-schema.json +137 -0
- data/tracks/bash/config.json +13 -1
- data/tracks/bash/exercises/scrabble-score/.meta/version +1 -0
- data/tracks/bash/exercises/scrabble-score/README.md +55 -0
- data/tracks/bash/exercises/scrabble-score/example.sh +14 -0
- data/tracks/bash/exercises/scrabble-score/scrabble_score_test.sh +89 -0
- data/tracks/c/config/exercise_readme.go.tmpl +31 -4
- data/tracks/c/exercises/all-your-base/README.md +0 -1
- data/tracks/c/exercises/beer-song/README.md +1 -1
- data/tracks/c/exercises/collatz-conjecture/README.md +1 -1
- data/tracks/c/exercises/complex-numbers/README.md +21 -18
- data/tracks/c/exercises/nucleotide-count/README.md +2 -2
- data/tracks/c/exercises/palindrome-products/README.md +5 -12
- data/tracks/c/exercises/pangram/test/test_pangram.c +11 -22
- data/tracks/c/exercises/pascals-triangle/README.md +1 -1
- data/tracks/c/exercises/phone-number/README.md +1 -1
- data/tracks/c/exercises/react/README.md +0 -1
- data/tracks/c/exercises/rna-transcription/README.md +2 -2
- data/tracks/c/exercises/sublist/README.md +0 -1
- data/tracks/c/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/ceylon/config/exercise_readme.go.tmpl +15 -4
- data/tracks/ceylon/exercises/react/README.md +0 -1
- data/tracks/cfml/{docs/EXERCISE_README_INSERT.md → config/exercise-readme-insert.md} +0 -0
- data/tracks/cfml/exercises/acronym/AcronymTest.cfc +2 -6
- data/tracks/cfml/exercises/acronym/README.md +0 -1
- data/tracks/cfml/exercises/anagram/AnagramTest.cfc +0 -16
- data/tracks/cfml/exercises/atbash-cipher/README.md +2 -1
- data/tracks/cfml/exercises/bob/Bob.cfc +1 -1
- data/tracks/cfml/exercises/bob/BobTest.cfc +25 -25
- data/tracks/cfml/exercises/bob/README.md +2 -0
- data/tracks/cfml/exercises/bob/Solution.cfc +17 -5
- data/tracks/cfml/exercises/diamond/Diamond.cfc +1 -1
- data/tracks/cfml/exercises/diamond/DiamondTest.cfc +5 -5
- data/tracks/cfml/exercises/diamond/README.md +6 -6
- data/tracks/cfml/exercises/diamond/Solution.cfc +2 -2
- data/tracks/cfml/exercises/flatten-array/FlattenArray.cfc +1 -1
- data/tracks/cfml/exercises/flatten-array/FlattenArrayTest.cfc +6 -9
- data/tracks/cfml/exercises/flatten-array/README.md +1 -2
- data/tracks/cfml/exercises/flatten-array/Solution.cfc +2 -2
- data/tracks/cfml/exercises/gigasecond/Gigasecond.cfc +1 -1
- data/tracks/cfml/exercises/gigasecond/GigasecondTest.cfc +5 -5
- data/tracks/cfml/exercises/gigasecond/Solution.cfc +3 -3
- data/tracks/cfml/exercises/grains/README.md +0 -1
- data/tracks/cfml/exercises/grains/Solution.cfc +4 -1
- data/tracks/cfml/exercises/hamming/HammingTest.cfc +2 -2
- data/tracks/cfml/exercises/hello-world/HelloWorld.cfc +1 -1
- data/tracks/cfml/exercises/hello-world/HelloWorldTest.cfc +5 -4
- data/tracks/cfml/exercises/hello-world/Solution.cfc +1 -1
- data/tracks/cfml/exercises/isogram/IsogramTest.cfc +2 -2
- data/tracks/cfml/exercises/isogram/README.md +2 -1
- data/tracks/cfml/exercises/leap/Leap.cfc +1 -1
- data/tracks/cfml/exercises/leap/LeapTest.cfc +14 -22
- data/tracks/cfml/exercises/leap/README.md +1 -1
- data/tracks/cfml/exercises/leap/Solution.cfc +1 -1
- data/tracks/cfml/exercises/luhn/Luhn.cfc +1 -1
- data/tracks/cfml/exercises/luhn/LuhnTest.cfc +14 -14
- data/tracks/cfml/exercises/luhn/README.md +7 -7
- data/tracks/cfml/exercises/luhn/Solution.cfc +6 -6
- data/tracks/cfml/exercises/markdown/Markdown.cfc +4 -4
- data/tracks/cfml/exercises/markdown/MarkdownTest.cfc +9 -9
- data/tracks/cfml/exercises/markdown/Solution.cfc +4 -4
- data/tracks/cfml/exercises/nth-prime/NthPrime.cfc +1 -1
- data/tracks/cfml/exercises/nth-prime/NthPrimeTest.cfc +5 -5
- data/tracks/cfml/exercises/nth-prime/Solution.cfc +4 -4
- data/tracks/cfml/exercises/pangram/Pangram.cfc +1 -1
- data/tracks/cfml/exercises/pangram/PangramTest.cfc +14 -10
- data/tracks/cfml/exercises/pangram/README.md +1 -1
- data/tracks/cfml/exercises/pangram/Solution.cfc +4 -4
- data/tracks/cfml/exercises/pig-latin/PigLatin.cfc +1 -1
- data/tracks/cfml/exercises/pig-latin/PigLatinTest.cfc +35 -23
- data/tracks/cfml/exercises/pig-latin/Solution.cfc +4 -4
- data/tracks/cfml/exercises/rna-transcription/README.md +2 -2
- data/tracks/cfml/exercises/rna-transcription/RnaTranscriptionTest.cfc +0 -12
- data/tracks/cfml/exercises/saddle-points/README.md +2 -2
- data/tracks/cfml/exercises/saddle-points/SaddlePoints.cfc +1 -1
- data/tracks/cfml/exercises/saddle-points/SaddlePointsTest.cfc +5 -5
- data/tracks/cfml/exercises/saddle-points/Solution.cfc +10 -10
- data/tracks/cfml/exercises/scrabble-score/README.md +3 -1
- data/tracks/cfml/exercises/scrabble-score/ScrabbleScore.cfc +1 -1
- data/tracks/cfml/exercises/scrabble-score/ScrabbleScoreTest.cfc +11 -11
- data/tracks/cfml/exercises/scrabble-score/Solution.cfc +2 -2
- data/tracks/cfml/exercises/secret-handshake/README.md +2 -2
- data/tracks/cfml/exercises/secret-handshake/SecretHandshake.cfc +1 -1
- data/tracks/cfml/exercises/secret-handshake/SecretHandshakeTest.cfc +11 -11
- data/tracks/cfml/exercises/secret-handshake/Solution.cfc +6 -6
- data/tracks/cfml/exercises/space-age/README.md +1 -2
- data/tracks/cfml/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/cfml/exercises/sum-of-multiples/SumOfMultiplesTest.cfc +4 -0
- data/tracks/cfml/exercises/triangle/README.md +9 -6
- data/tracks/cfml/exercises/word-count/README.md +1 -2
- data/tracks/cfml/exercises/word-count/Solution.cfc +2 -2
- data/tracks/cfml/exercises/word-count/WordCount.cfc +1 -1
- data/tracks/cfml/exercises/word-count/WordCountTest.cfc +14 -10
- data/tracks/cfml/tasks/GenerateReadme.cfc +2 -2
- data/tracks/cfml/tasks/GenerateTests.cfc +17 -4
- data/tracks/cfml/tasks/TestAllSolutions.cfc +3 -0
- data/tracks/common-lisp/config/exercise_readme.go.tmpl +46 -4
- data/tracks/common-lisp/exercises/acronym/README.md +1 -1
- data/tracks/common-lisp/exercises/beer-song/README.md +1 -1
- data/tracks/common-lisp/exercises/crypto-square/README.md +6 -4
- data/tracks/common-lisp/exercises/etl/README.md +2 -2
- data/tracks/common-lisp/exercises/isogram/README.md +3 -1
- data/tracks/common-lisp/exercises/meetup/README.md +16 -12
- data/tracks/common-lisp/exercises/nucleotide-count/README.md +2 -2
- data/tracks/common-lisp/exercises/pascals-triangle/README.md +1 -1
- data/tracks/common-lisp/exercises/phone-number/README.md +1 -1
- data/tracks/common-lisp/exercises/rna-transcription/README.md +2 -2
- data/tracks/common-lisp/exercises/space-age/README.md +1 -2
- data/tracks/common-lisp/exercises/sublist/README.md +2 -0
- data/tracks/crystal/config/exercise_readme.go.tmpl +22 -4
- data/tracks/crystal/exercises/acronym/README.md +0 -1
- data/tracks/crystal/exercises/atbash-cipher/README.md +2 -1
- data/tracks/crystal/exercises/binary/README.md +2 -0
- data/tracks/{php → crystal}/exercises/bob/.meta/description.md +0 -0
- data/tracks/crystal/exercises/flatten-array/README.md +1 -2
- data/tracks/crystal/exercises/forth/README.md +0 -1
- data/tracks/crystal/exercises/leap/README.md +1 -1
- data/tracks/crystal/exercises/pangram/README.md +1 -1
- data/tracks/crystal/exercises/pascals-triangle/README.md +2 -2
- data/tracks/crystal/exercises/react/README.md +0 -1
- data/tracks/crystal/exercises/rna-transcription/README.md +2 -2
- data/tracks/crystal/exercises/roman-numerals/README.md +1 -1
- data/tracks/crystal/exercises/run-length-encoding/README.md +4 -4
- data/tracks/csharp/config/exercise_readme.go.tmpl +0 -3
- data/tracks/csharp/exercises/accumulate/README.md +0 -3
- data/tracks/csharp/exercises/acronym/README.md +0 -3
- data/tracks/csharp/exercises/all-your-base/README.md +0 -3
- data/tracks/csharp/exercises/allergies/README.md +0 -3
- data/tracks/csharp/exercises/alphametics/README.md +0 -3
- data/tracks/csharp/exercises/anagram/README.md +0 -3
- data/tracks/csharp/exercises/armstrong-numbers/README.md +0 -3
- data/tracks/csharp/exercises/atbash-cipher/README.md +0 -3
- data/tracks/csharp/exercises/bank-account/README.md +0 -3
- data/tracks/csharp/exercises/beer-song/README.md +0 -3
- data/tracks/csharp/exercises/binary-search-tree/README.md +0 -3
- data/tracks/csharp/exercises/binary-search/README.md +0 -3
- data/tracks/csharp/exercises/binary/README.md +0 -3
- data/tracks/csharp/exercises/bob/README.md +0 -3
- data/tracks/csharp/exercises/book-store/README.md +0 -3
- data/tracks/csharp/exercises/bowling/README.md +0 -3
- data/tracks/csharp/exercises/bracket-push/README.md +0 -3
- data/tracks/csharp/exercises/change/README.md +0 -3
- data/tracks/csharp/exercises/circular-buffer/README.md +0 -3
- data/tracks/csharp/exercises/clock/README.md +0 -3
- data/tracks/csharp/exercises/collatz-conjecture/README.md +0 -3
- data/tracks/csharp/exercises/complex-numbers/README.md +0 -3
- data/tracks/csharp/exercises/connect/README.md +0 -3
- data/tracks/csharp/exercises/crypto-square/README.md +0 -3
- data/tracks/csharp/exercises/custom-set/README.md +0 -3
- data/tracks/csharp/exercises/diamond/README.md +0 -3
- data/tracks/csharp/exercises/difference-of-squares/README.md +0 -3
- data/tracks/csharp/exercises/diffie-hellman/README.md +0 -3
- data/tracks/csharp/exercises/dominoes/README.md +0 -3
- data/tracks/csharp/exercises/dot-dsl/README.md +0 -3
- data/tracks/csharp/exercises/error-handling/README.md +0 -3
- data/tracks/csharp/exercises/etl/README.md +0 -3
- data/tracks/csharp/exercises/flatten-array/README.md +0 -3
- data/tracks/csharp/exercises/food-chain/README.md +0 -3
- data/tracks/csharp/exercises/forth/README.md +0 -3
- data/tracks/csharp/exercises/gigasecond/README.md +0 -3
- data/tracks/csharp/exercises/go-counting/README.md +0 -3
- data/tracks/csharp/exercises/grade-school/README.md +0 -3
- data/tracks/csharp/exercises/grains/README.md +0 -3
- data/tracks/csharp/exercises/grep/README.md +0 -3
- data/tracks/csharp/exercises/hamming/README.md +0 -3
- data/tracks/csharp/exercises/hangman/README.md +0 -3
- data/tracks/csharp/exercises/hello-world/README.md +0 -3
- data/tracks/csharp/exercises/hexadecimal/README.md +0 -3
- data/tracks/csharp/exercises/house/README.md +0 -3
- data/tracks/csharp/exercises/isbn-verifier/README.md +0 -3
- data/tracks/csharp/exercises/isogram/README.md +0 -3
- data/tracks/csharp/exercises/kindergarten-garden/README.md +0 -3
- data/tracks/csharp/exercises/largest-series-product/README.md +0 -3
- data/tracks/csharp/exercises/leap/README.md +0 -3
- data/tracks/csharp/exercises/ledger/README.md +0 -3
- data/tracks/csharp/exercises/linked-list/README.md +0 -3
- data/tracks/csharp/exercises/list-ops/README.md +0 -3
- data/tracks/csharp/exercises/luhn/README.md +0 -3
- data/tracks/csharp/exercises/markdown/README.md +0 -3
- data/tracks/csharp/exercises/matrix/README.md +0 -3
- data/tracks/csharp/exercises/meetup/README.md +0 -3
- data/tracks/csharp/exercises/minesweeper/README.md +0 -3
- data/tracks/csharp/exercises/nth-prime/README.md +0 -3
- data/tracks/csharp/exercises/nucleotide-count/README.md +0 -3
- data/tracks/csharp/exercises/ocr-numbers/README.md +0 -3
- data/tracks/csharp/exercises/octal/README.md +0 -3
- data/tracks/csharp/exercises/palindrome-products/README.md +0 -3
- data/tracks/csharp/exercises/pangram/README.md +0 -3
- data/tracks/csharp/exercises/parallel-letter-frequency/README.md +0 -3
- data/tracks/csharp/exercises/pascals-triangle/README.md +0 -3
- data/tracks/csharp/exercises/perfect-numbers/README.md +0 -3
- data/tracks/csharp/exercises/phone-number/README.md +0 -3
- data/tracks/csharp/exercises/pig-latin/README.md +0 -3
- data/tracks/csharp/exercises/poker/README.md +0 -3
- data/tracks/csharp/exercises/pov/README.md +0 -3
- data/tracks/csharp/exercises/prime-factors/README.md +0 -3
- data/tracks/csharp/exercises/protein-translation/README.md +0 -3
- data/tracks/csharp/exercises/proverb/README.md +0 -3
- data/tracks/csharp/exercises/pythagorean-triplet/README.md +0 -3
- data/tracks/csharp/exercises/queen-attack/README.md +0 -3
- data/tracks/csharp/exercises/rail-fence-cipher/README.md +0 -3
- data/tracks/csharp/exercises/raindrops/README.md +0 -3
- data/tracks/csharp/exercises/react/README.md +0 -3
- data/tracks/csharp/exercises/rectangles/README.md +0 -3
- data/tracks/csharp/exercises/reverse-string/README.md +0 -3
- data/tracks/csharp/exercises/rna-transcription/README.md +0 -3
- data/tracks/csharp/exercises/robot-name/README.md +0 -3
- data/tracks/csharp/exercises/robot-simulator/README.md +0 -3
- data/tracks/csharp/exercises/roman-numerals/README.md +0 -3
- data/tracks/csharp/exercises/rotational-cipher/README.md +0 -3
- data/tracks/csharp/exercises/run-length-encoding/README.md +0 -3
- data/tracks/csharp/exercises/saddle-points/README.md +0 -3
- data/tracks/csharp/exercises/say/README.md +0 -3
- data/tracks/csharp/exercises/scale-generator/README.md +0 -3
- data/tracks/csharp/exercises/scrabble-score/README.md +0 -3
- data/tracks/csharp/exercises/secret-handshake/README.md +0 -3
- data/tracks/csharp/exercises/series/README.md +0 -3
- data/tracks/csharp/exercises/sgf-parsing/README.md +0 -3
- data/tracks/csharp/exercises/sieve/README.md +0 -3
- data/tracks/csharp/exercises/simple-cipher/README.md +0 -3
- data/tracks/csharp/exercises/simple-linked-list/README.md +0 -3
- data/tracks/csharp/exercises/space-age/README.md +0 -3
- data/tracks/csharp/exercises/spiral-matrix/README.md +0 -3
- data/tracks/csharp/exercises/strain/README.md +0 -3
- data/tracks/csharp/exercises/sublist/README.md +0 -3
- data/tracks/csharp/exercises/sum-of-multiples/README.md +0 -3
- data/tracks/csharp/exercises/tournament/README.md +0 -3
- data/tracks/csharp/exercises/transpose/README.md +0 -3
- data/tracks/csharp/exercises/tree-building/README.md +0 -3
- data/tracks/csharp/exercises/triangle/README.md +0 -3
- data/tracks/csharp/exercises/trinary/README.md +0 -3
- data/tracks/csharp/exercises/twelve-days/README.md +0 -3
- data/tracks/csharp/exercises/two-bucket/README.md +0 -3
- data/tracks/csharp/exercises/two-fer/README.md +0 -3
- data/tracks/csharp/exercises/variable-length-quantity/README.md +0 -3
- data/tracks/csharp/exercises/word-count/README.md +0 -3
- data/tracks/csharp/exercises/word-search/README.md +0 -3
- data/tracks/csharp/exercises/wordy/README.md +0 -3
- data/tracks/csharp/exercises/zebra-puzzle/README.md +0 -3
- data/tracks/csharp/exercises/zipper/README.md +0 -3
- data/tracks/dart/config/exercise_readme.go.tmpl +9 -4
- data/tracks/dart/exercises/anagram/README.md +0 -1
- data/tracks/dart/exercises/difference-of-squares/README.md +0 -1
- data/tracks/dart/exercises/gigasecond/README.md +0 -1
- data/tracks/dart/exercises/hamming/README.md +0 -1
- data/tracks/dart/exercises/hello-world/README.md +0 -1
- data/tracks/dart/exercises/leap/README.md +0 -1
- data/tracks/dart/exercises/phone-number/.meta/hints.md +24 -0
- data/tracks/dart/exercises/phone-number/README.md +17 -2
- data/tracks/dart/exercises/raindrops/README.md +0 -1
- data/tracks/dart/exercises/rna-transcription/README.md +2 -3
- data/tracks/dart/exercises/word-count/README.md +0 -1
- data/tracks/delphi/config/exercise_readme.go.tmpl +20 -4
- data/tracks/delphi/exercises/bank-account/README.md +0 -1
- data/tracks/delphi/exercises/minesweeper/README.md +0 -1
- data/tracks/delphi/exercises/two-fer/README.md +1 -1
- data/tracks/elixir/exercises/all-your-base/all-your-base-test.exs +1 -2
- data/tracks/elm/README.md +23 -20
- data/tracks/elm/bin/build.sh +1 -1
- data/tracks/elm/bin/install-elm-format +2 -2
- data/tracks/elm/exercises/accumulate/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/all-your-base/AllYourBase.example.elm +10 -10
- data/tracks/elm/exercises/all-your-base/tests/Tests.elm +62 -42
- data/tracks/elm/exercises/allergies/Allergies.example.elm +1 -1
- data/tracks/elm/exercises/allergies/tests/Tests.elm +4 -4
- data/tracks/elm/exercises/anagram/Anagram.example.elm +2 -2
- data/tracks/elm/exercises/anagram/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/atbash-cipher/AtbashCipher.example.elm +11 -11
- data/tracks/elm/exercises/atbash-cipher/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/bob/Bob.example.elm +1 -1
- data/tracks/elm/exercises/bob/tests/Tests.elm +5 -5
- data/tracks/elm/exercises/collatz-conjecture/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/difference-of-squares/DifferenceOfSquares.example.elm +1 -1
- data/tracks/elm/exercises/difference-of-squares/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/gigasecond/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/grade-school/GradeSchool.example.elm +2 -2
- data/tracks/elm/exercises/grade-school/tests/Tests.elm +3 -3
- data/tracks/elm/exercises/hamming/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/hello-world/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/isogram/Isogram.example.elm +7 -7
- data/tracks/elm/exercises/isogram/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/largest-series-product/LargestSeriesProduct.example.elm +4 -4
- data/tracks/elm/exercises/largest-series-product/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/leap/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/list-ops/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/nucleotide-count/NucleotideCount.elm +1 -1
- data/tracks/elm/exercises/nucleotide-count/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/pangram/Pangram.example.elm +2 -2
- data/tracks/elm/exercises/pangram/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/pascals-triangle/Triangle.example.elm +4 -4
- data/tracks/elm/exercises/phone-number/PhoneNumber.example.elm +3 -3
- data/tracks/elm/exercises/phone-number/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/raindrops/Raindrops.example.elm +4 -4
- data/tracks/elm/exercises/raindrops/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/rna-transcription/tests/Tests.elm +1 -7
- data/tracks/elm/exercises/robot-simulator/RobotSimulator.example.elm +5 -5
- data/tracks/elm/exercises/robot-simulator/tests/Tests.elm +65 -65
- data/tracks/elm/exercises/roman-numerals/RomanNumerals.example.elm +1 -1
- data/tracks/elm/exercises/roman-numerals/tests/Tests.elm +19 -19
- data/tracks/elm/exercises/run-length-encoding/RunLengthEncoding.elm +1 -1
- data/tracks/elm/exercises/run-length-encoding/RunLengthEncoding.example.elm +2 -2
- data/tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm +3 -3
- data/tracks/elm/exercises/run-length-encoding/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/say/Say.example.elm +4 -4
- data/tracks/elm/exercises/say/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/scrabble-score/ScrabbleScore.example.elm +16 -16
- data/tracks/elm/exercises/scrabble-score/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/series/Series.example.elm +5 -5
- data/tracks/elm/exercises/series/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/space-age/SpaceAge.elm +9 -8
- data/tracks/elm/exercises/space-age/SpaceAge.example.elm +3 -2
- data/tracks/elm/exercises/space-age/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/strain/tests/Tests.elm +3 -3
- data/tracks/elm/exercises/sublist/Sublist.elm +1 -1
- data/tracks/elm/exercises/sublist/Sublist.example.elm +6 -6
- data/tracks/elm/exercises/sublist/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/sum-of-multiples/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/triangle/tests/Tests.elm +2 -2
- data/tracks/elm/exercises/word-count/WordCount.example.elm +2 -2
- data/tracks/elm/exercises/word-count/tests/Tests.elm +2 -2
- data/tracks/factor/config/exercise_readme.go.tmpl +12 -4
- data/tracks/factor/exercises/isogram/README.md +4 -3
- data/tracks/factor/exercises/leap/README.md +1 -1
- data/tracks/factor/exercises/two-fer/README.md +3 -32
- data/tracks/fsharp/config.json +10 -0
- data/tracks/fsharp/exercises/Exercises.sln +6 -0
- data/tracks/fsharp/exercises/rational-numbers/Example.fs +46 -0
- data/tracks/fsharp/exercises/rational-numbers/Program.fs +1 -0
- data/tracks/fsharp/exercises/rational-numbers/README.md +29 -0
- data/tracks/fsharp/exercises/rational-numbers/RationalNumbers.fs +19 -0
- data/tracks/fsharp/exercises/rational-numbers/RationalNumbers.fsproj +23 -0
- data/tracks/fsharp/exercises/rational-numbers/RationalNumbersTest.fs +153 -0
- data/tracks/fsharp/exercises/two-bucket/Example.fs +49 -57
- data/tracks/fsharp/exercises/two-bucket/TwoBucketTest.fs +40 -25
- data/tracks/fsharp/exercises/variable-length-quantity/Example.fs +21 -17
- data/tracks/fsharp/exercises/variable-length-quantity/VariableLengthQuantityTest.fs +85 -42
- data/tracks/fsharp/exercises/word-search/Example.fs +20 -14
- data/tracks/fsharp/exercises/word-search/WordSearch.fs +1 -1
- data/tracks/fsharp/exercises/word-search/WordSearchTest.fs +303 -48
- data/tracks/fsharp/generators/Formatting.fs +7 -2
- data/tracks/fsharp/generators/Generators.fs +97 -2
- data/tracks/fsharp/generators/Templates/_AssertEqualWithin.liquid +1 -0
- data/tracks/go/config.json +14 -0
- data/tracks/go/exercises/all-your-base/.meta/gen.go +2 -2
- data/tracks/go/exercises/all-your-base/cases_test.go +2 -2
- data/tracks/go/exercises/rectangles/.meta/gen.go +57 -0
- data/tracks/go/exercises/rectangles/README.md +85 -0
- data/tracks/go/exercises/rectangles/cases_test.go +134 -0
- data/tracks/go/exercises/rectangles/example.go +51 -0
- data/tracks/go/exercises/rectangles/rectangles_test.go +22 -0
- data/tracks/go/exercises/reverse-string/.meta/gen.go +4 -2
- data/tracks/go/exercises/reverse-string/cases_test.go +4 -2
- data/tracks/go/exercises/reverse-string/reverse_string_test.go +12 -1
- data/tracks/haskell/exercises/matrix/package.yaml +1 -1
- data/tracks/haskell/exercises/matrix/test/Tests.hs +1 -1
- data/tracks/java/config.json +12 -0
- data/tracks/java/config/exercise_readme.go.tmpl +10 -4
- data/tracks/java/exercises/all-your-base/README.md +0 -1
- data/tracks/java/exercises/alphametics/README.md +0 -1
- data/tracks/java/exercises/bank-account/README.md +0 -1
- data/tracks/java/exercises/complex-numbers/src/test/java/ComplexNumberTest.java +17 -15
- data/tracks/java/exercises/custom-set/README.md +0 -1
- data/tracks/java/exercises/diamond/.meta/version +1 -1
- data/tracks/java/exercises/diamond/src/test/java/DiamondPrinterTest.java +9 -11
- data/tracks/java/exercises/forth/README.md +0 -11
- data/tracks/java/exercises/list-ops/README.md +0 -1
- data/tracks/java/exercises/markdown/README.md +0 -1
- data/tracks/java/exercises/minesweeper/README.md +0 -1
- data/tracks/java/exercises/palindrome-products/.meta/src/reference/java/PalindromeCalculator.java +9 -0
- data/tracks/java/exercises/palindrome-products/.meta/version +1 -0
- data/tracks/java/exercises/palindrome-products/src/test/java/PalindromeCalculatorTest.java +110 -15
- data/tracks/java/exercises/parallel-letter-frequency/README.md +0 -1
- data/tracks/java/exercises/pig-latin/.meta/src/reference/java/PigLatinTranslator.java +16 -0
- data/tracks/java/exercises/pig-latin/.meta/version +1 -0
- data/tracks/java/exercises/pig-latin/src/test/java/PigLatinTranslatorTest.java +15 -1
- data/tracks/java/exercises/prime-factors/.meta/version +1 -1
- data/tracks/java/exercises/rational-numbers/.meta/src/reference/java/Rational.java +128 -0
- data/tracks/java/exercises/rational-numbers/.meta/version +1 -0
- data/tracks/java/exercises/rational-numbers/README.md +47 -0
- data/tracks/java/exercises/rational-numbers/build.gradle +17 -0
- data/tracks/java/exercises/rational-numbers/src/main/java/Rational.java +40 -0
- data/tracks/java/exercises/rational-numbers/src/test/java/RationalTest.java +288 -0
- data/tracks/java/exercises/rectangles/README.md +0 -1
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/java/exercises/sublist/README.md +0 -1
- data/tracks/java/exercises/tournament/README.md +0 -1
- data/tracks/java/exercises/two-fer/README.md +1 -1
- data/tracks/java/exercises/word-search/README.md +0 -1
- data/tracks/lua/config/exercise_readme.go.tmpl +9 -4
- data/tracks/lua/exercises/all-your-base/README.md +0 -1
- data/tracks/lua/exercises/alphametics/README.md +0 -1
- data/tracks/lua/exercises/bank-account/README.md +0 -1
- data/tracks/lua/exercises/custom-set/README.md +0 -1
- data/tracks/lua/exercises/isbn-verifier/README.md +1 -1
- data/tracks/lua/exercises/list-ops/README.md +0 -1
- data/tracks/lua/exercises/minesweeper/README.md +0 -1
- data/tracks/lua/exercises/protein-translation/README.md +2 -2
- data/tracks/lua/exercises/react/README.md +0 -1
- data/tracks/lua/exercises/rectangles/README.md +0 -1
- data/tracks/lua/exercises/reverse-string/README.md +1 -1
- data/tracks/lua/exercises/rna-transcription/README.md +1 -1
- data/tracks/lua/exercises/sublist/README.md +0 -1
- data/tracks/lua/exercises/tournament/README.md +0 -1
- data/tracks/lua/exercises/word-search/README.md +0 -1
- data/tracks/perl5/bin/exercise-gen.pl +4 -1
- data/tracks/perl5/exercises/bob/bob.t +9 -15
- data/tracks/perl5/exercises/bob/example.yaml +0 -4
- data/tracks/perl5/exercises/hello-world/example.yaml +0 -4
- data/tracks/perl5/exercises/hello-world/hello-world.t +9 -15
- data/tracks/perl5/exercises/leap/example.yaml +0 -4
- data/tracks/perl5/exercises/leap/leap.t +9 -15
- data/tracks/perl5/exercises/luhn/luhn.t +9 -13
- data/tracks/perl5/exercises/phone-number/phone-number.t +9 -13
- data/tracks/perl5/templates/test.mustache +10 -18
- data/tracks/perl6/bin/exercise-gen.pl6 +12 -2
- data/tracks/perl6/config/exercise_readme.go.tmpl +18 -4
- data/tracks/perl6/exercises/all-your-base/README.md +0 -1
- data/tracks/perl6/exercises/raindrops/.meta/exercise-data.yaml +2 -2
- data/tracks/perl6/exercises/raindrops/raindrops.t +57 -21
- data/tracks/perl6/exercises/two-fer/README.md +1 -1
- data/tracks/php/.travis.yml +1 -0
- data/tracks/php/exercises/bob/README.md +2 -0
- data/tracks/php/exercises/bob/bob_test.php +4 -1
- data/tracks/php/exercises/bob/example.php +4 -0
- data/tracks/php/exercises/connect/example.php +3 -4
- data/tracks/python/config.json +12 -12
- data/tracks/python/exercises/beer-song/beer_song.py +1 -5
- data/tracks/python/exercises/beer-song/beer_song_test.py +376 -57
- data/tracks/python/exercises/beer-song/example.py +18 -13
- data/tracks/r/config/exercise_readme.go.tmpl +9 -4
- data/tracks/r/exercises/allergies/README.md +0 -1
- data/tracks/r/exercises/beer-song/README.md +2 -2
- data/tracks/r/exercises/collatz-conjecture/README.md +1 -1
- data/tracks/r/exercises/diamond/README.md +6 -6
- data/tracks/r/exercises/grains/README.md +0 -1
- data/tracks/r/exercises/isogram/README.md +2 -1
- data/tracks/r/exercises/leap/README.md +1 -1
- data/tracks/r/exercises/luhn/README.md +7 -7
- data/tracks/r/exercises/nucleotide-count/README.md +8 -22
- data/tracks/r/exercises/pangram/README.md +1 -1
- data/tracks/r/exercises/pascals-triangle/README.md +2 -2
- data/tracks/r/exercises/perfect-numbers/README.md +2 -2
- data/tracks/r/exercises/phone-number/README.md +4 -3
- data/tracks/r/exercises/rna-transcription/README.md +2 -2
- data/tracks/r/exercises/rotational-cipher/README.md +2 -1
- data/tracks/r/exercises/scrabble-score/README.md +3 -1
- data/tracks/r/exercises/secret-handshake/README.md +2 -2
- data/tracks/r/exercises/space-age/README.md +1 -1
- data/tracks/r/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/r/exercises/tournament/README.md +5 -6
- data/tracks/r/exercises/triangle/README.md +9 -6
- data/tracks/r/exercises/word-count/README.md +1 -2
- data/tracks/rust/.gitignore +1 -0
- data/tracks/rust/exercises/reverse-string/.meta/hints.md +3 -0
- data/tracks/rust/exercises/reverse-string/README.md +5 -0
- data/tracks/rust/exercises/reverse-string/tests/reverse-string.rs +7 -0
- data/tracks/scala/config/exercise_readme.go.tmpl +10 -4
- data/tracks/scala/exercises/accumulate/README.md +0 -3
- data/tracks/scala/exercises/acronym/README.md +0 -1
- data/tracks/scala/exercises/acronym/src/test/scala/AcronymTest.scala +6 -12
- data/tracks/scala/exercises/all-your-base/README.md +1 -2
- data/tracks/scala/exercises/all-your-base/example.scala +5 -4
- data/tracks/scala/exercises/all-your-base/src/test/scala/AllYourBaseTest.scala +26 -27
- data/tracks/scala/exercises/allergies/README.md +0 -1
- data/tracks/scala/exercises/allergies/src/test/scala/AllergiesTest.scala +1 -1
- data/tracks/scala/exercises/alphametics/README.md +2 -3
- data/tracks/scala/exercises/alphametics/example.scala +25 -25
- data/tracks/scala/exercises/alphametics/src/test/scala/AlphameticsTest.scala +58 -42
- data/tracks/scala/exercises/anagram/src/test/scala/AnagramTest.scala +4 -30
- data/tracks/scala/exercises/atbash-cipher/README.md +2 -1
- data/tracks/scala/exercises/atbash-cipher/src/test/scala/AtbashCipherTest.scala +18 -14
- data/tracks/scala/exercises/bank-account/README.md +0 -1
- data/tracks/scala/exercises/beer-song/README.md +2 -2
- data/tracks/scala/exercises/binary/README.md +2 -0
- data/tracks/scala/exercises/bob/example.scala +11 -0
- data/tracks/scala/exercises/bob/src/test/scala/BobTest.scala +3 -2
- data/tracks/scala/exercises/book-store/README.md +5 -5
- data/tracks/scala/exercises/bowling/README.md +20 -6
- data/tracks/scala/exercises/change/README.md +1 -1
- data/tracks/scala/exercises/collatz-conjecture/README.md +4 -3
- data/tracks/scala/exercises/connect/README.md +1 -2
- data/tracks/scala/exercises/crypto-square/README.md +10 -8
- data/tracks/scala/exercises/custom-set/README.md +0 -1
- data/tracks/scala/exercises/dominoes/README.md +3 -4
- data/tracks/scala/exercises/etl/README.md +3 -1
- data/tracks/scala/exercises/flatten-array/README.md +7 -8
- data/tracks/scala/exercises/food-chain/README.md +1 -1
- data/tracks/scala/exercises/forth/README.md +0 -1
- data/tracks/scala/exercises/grade-school/README.md +0 -1
- data/tracks/scala/exercises/grains/README.md +0 -1
- data/tracks/scala/exercises/house/README.md +2 -3
- data/tracks/scala/exercises/isogram/README.md +2 -1
- data/tracks/scala/exercises/kindergarten-garden/README.md +13 -13
- data/tracks/scala/exercises/leap/README.md +1 -1
- data/tracks/scala/exercises/lens-person/README.md +1 -2
- data/tracks/scala/exercises/linked-list/README.md +10 -10
- data/tracks/scala/exercises/luhn/README.md +7 -7
- data/tracks/scala/exercises/matrix/README.md +6 -4
- data/tracks/scala/exercises/meetup/README.md +16 -13
- data/tracks/scala/exercises/minesweeper/README.md +0 -1
- data/tracks/scala/exercises/nucleotide-count/README.md +8 -22
- data/tracks/scala/exercises/ocr-numbers/README.md +6 -6
- data/tracks/scala/exercises/octal/README.md +6 -2
- data/tracks/scala/exercises/palindrome-products/README.md +15 -16
- data/tracks/scala/exercises/pangram/README.md +1 -1
- data/tracks/scala/exercises/parallel-letter-frequency/README.md +0 -1
- data/tracks/scala/exercises/pascals-triangle/README.md +2 -2
- data/tracks/scala/exercises/perfect-numbers/README.md +2 -2
- data/tracks/scala/exercises/phone-number/README.md +4 -3
- data/tracks/scala/exercises/protein-translation/README.md +5 -6
- data/tracks/scala/exercises/pythagorean-triplet/README.md +3 -3
- data/tracks/scala/exercises/queen-attack/README.md +1 -1
- data/tracks/scala/exercises/rail-fence-cipher/README.md +12 -7
- data/tracks/scala/exercises/rna-transcription/README.md +2 -2
- data/tracks/scala/exercises/roman-numerals/README.md +1 -1
- data/tracks/scala/exercises/run-length-encoding/README.md +4 -4
- data/tracks/scala/exercises/saddle-points/README.md +2 -2
- data/tracks/scala/exercises/scrabble-score/README.md +3 -1
- data/tracks/scala/exercises/secret-handshake/README.md +2 -2
- data/tracks/scala/exercises/sgf-parsing/README.md +4 -5
- data/tracks/scala/exercises/simple-cipher/README.md +5 -7
- data/tracks/scala/exercises/space-age/README.md +1 -1
- data/tracks/scala/exercises/spiral-matrix/README.md +2 -2
- data/tracks/scala/exercises/sublist/README.md +0 -1
- data/tracks/scala/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/scala/exercises/triangle/README.md +9 -6
- data/tracks/scala/exercises/trinary/README.md +1 -1
- data/tracks/scala/exercises/variable-length-quantity/README.md +6 -7
- data/tracks/scala/exercises/word-count/README.md +1 -2
- data/tracks/scala/exercises/wordy/README.md +0 -5
- data/tracks/scala/exercises/zipper/README.md +1 -2
- data/tracks/scala/testgen/src/main/scala/AcronymTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/AllYourBaseTestGenerator.scala +3 -5
- data/tracks/scala/testgen/src/main/scala/AllergiesTestGenerator.scala +8 -5
- data/tracks/scala/testgen/src/main/scala/{AlphametricsTestGenerator.scala → AlphameticsTestGenerator.scala} +5 -5
- data/tracks/scala/testgen/src/main/scala/AnagramTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/AtbashCipherTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/BobTestGenerator.scala +4 -3
- data/tracks/scala/testgen/src/main/scala/testgen/TestSuiteBuilder.scala +35 -0
- data/tracks/sml/config/exercise_readme.go.tmpl +29 -4
- data/tracks/sml/exercises/accumulate/README.md +2 -2
- data/tracks/sml/exercises/all-your-base/README.md +13 -10
- data/tracks/sml/exercises/atbash-cipher/README.md +2 -1
- data/tracks/sml/exercises/collatz-conjecture/README.md +1 -1
- data/tracks/sml/exercises/diamond/README.md +6 -6
- data/tracks/sml/exercises/leap/README.md +1 -1
- data/tracks/sml/exercises/list-ops/README.md +0 -1
- data/tracks/sml/exercises/nth-prime/README.md +1 -1
- data/tracks/sml/exercises/pangram/README.md +1 -1
- data/tracks/sml/exercises/perfect-numbers/README.md +2 -2
- data/tracks/sml/exercises/phone-number/README.md +4 -3
- data/tracks/sml/exercises/rna-transcription/README.md +2 -2
- data/tracks/sml/exercises/roman-numerals/README.md +1 -1
- data/tracks/sml/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/sml/exercises/two-fer/README.md +2 -31
- data/tracks/vimscript/config/exercise_readme.go.tmpl +8 -4
- data/tracks/vimscript/exercises/allergies/README.md +0 -1
- data/tracks/vimscript/exercises/atbash-cipher/README.md +2 -1
- data/tracks/vimscript/exercises/beer-song/README.md +2 -2
- data/tracks/vimscript/exercises/etl/README.md +3 -1
- data/tracks/vimscript/exercises/leap/README.md +1 -1
- data/tracks/vimscript/exercises/nucleotide-count/README.md +8 -22
- data/tracks/vimscript/exercises/pangram/README.md +1 -1
- data/tracks/vimscript/exercises/phone-number/README.md +4 -3
- data/tracks/vimscript/exercises/rna-transcription/README.md +2 -2
- data/tracks/vimscript/exercises/roman-numerals/README.md +1 -1
- data/tracks/vimscript/exercises/scrabble-score/README.md +3 -1
- data/tracks/vimscript/exercises/triangle/README.md +9 -6
- data/tracks/vimscript/exercises/word-count/README.md +1 -2
- metadata +44 -78
- data/tracks/c/docs/EXERCISE_README_INSERT.md +0 -30
- data/tracks/ceylon/config/exercise-readme-insert.md +0 -1
- data/tracks/common-lisp/docs/EXERCISE_README_INSERT.md +0 -45
- data/tracks/crystal/docs/EXERCISE_README_INSERT.md +0 -21
- data/tracks/dart/docs/EXERCISE_README_INSERT.md +0 -8
- data/tracks/delphi/docs/EXERCISE_README_INSERT.md +0 -19
- data/tracks/factor/docs/EXERCISE_README_INSERT.md +0 -12
- data/tracks/java/config/exercise-readme-insert.md +0 -9
- data/tracks/lua/docs/EXERCISE_README_INSERT.md +0 -8
- data/tracks/perl6/docs/EXERCISE_README_INSERT.md +0 -17
- data/tracks/r/docs/EXERCISE_README_INSERT.md +0 -8
- data/tracks/rust/exercises/binary-search/Cargo.lock +0 -4
- data/tracks/rust/exercises/collatz-conjecture/Cargo.lock +0 -4
- data/tracks/rust/exercises/isbn-verifier/Cargo.lock +0 -4
- data/tracks/rust/exercises/two-bucket/Cargo.lock +0 -4
- data/tracks/scala/docs/EXERCISE_README_INSERT.md +0 -9
- data/tracks/scala/exercises/bob/.meta/description.md +0 -10
- data/tracks/sml/docs/EXERCISE_README_INSERT.md +0 -28
- data/tracks/vimscript/docs/EXERCISE_README_INSERT.md +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e39b35583717370d798873a1221e64de40b594b
|
4
|
+
data.tar.gz: 73a7ac2d4e1bd78f378142b8fde385d69101b539
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfd4bc875f948d5443ee5db0fbf7a43890669a1b4a91738a020429e2a74ba5a041b568aed039ebb7c18aa706bb6fb1dec2a627958d850f748b4541838b5ec0a6
|
7
|
+
data.tar.gz: 66aa09b0a1ccb8e3af6ac9b4ed419350bda659bbfc98ff4bbf07a111134e0e40c841b401141447cfbf97ec52a387b7879740f2c7290cb9dd66846fce85be38d2
|
data/lib/trackler/version.rb
CHANGED
@@ -6,4 +6,44 @@ cache: yarn
|
|
6
6
|
|
7
7
|
script:
|
8
8
|
- bin/check_required_files_present
|
9
|
-
-
|
9
|
+
- |
|
10
|
+
invalid_old=""
|
11
|
+
invalid_new=""
|
12
|
+
forgotten=""
|
13
|
+
|
14
|
+
for json in exercises/*/canonical-data.json; do
|
15
|
+
dir=$(dirname $json)
|
16
|
+
ex=$(basename $dir)
|
17
|
+
|
18
|
+
if [ -f "$dir/USE_OLD_SCHEMA" ]; then
|
19
|
+
if ! ajv -s old-schema.json -d $json; then
|
20
|
+
invalid_old="$invalid_old $ex"
|
21
|
+
fi
|
22
|
+
# If we have converted to new,
|
23
|
+
# make sure we don't forget to remove USE_OLD_SCHEMA file!
|
24
|
+
if ajv -s canonical-schema.json -d $json 2>/dev/null; then
|
25
|
+
forgotten="$forgotten $ex"
|
26
|
+
fi
|
27
|
+
else
|
28
|
+
if ! ajv -s canonical-schema.json -d $json; then
|
29
|
+
invalid_new="$invalid_new $ex"
|
30
|
+
fi
|
31
|
+
fi
|
32
|
+
done
|
33
|
+
|
34
|
+
stat=0
|
35
|
+
|
36
|
+
if [ -n "$invalid_old" ]; then
|
37
|
+
echo "Exercises using old schema, but invalid: $invalid_old"
|
38
|
+
stat=1
|
39
|
+
fi
|
40
|
+
if [ -n "$invalid_new" ]; then
|
41
|
+
echo "Exercises using new schema, but invalid: $invalid_new"
|
42
|
+
stat=1
|
43
|
+
fi
|
44
|
+
if [ -n "$forgotten" ]; then
|
45
|
+
echo "Exercises using new schema, but forgot to remove USE_OLD_SCHEMA file: $forgotten"
|
46
|
+
stat=1
|
47
|
+
fi
|
48
|
+
|
49
|
+
exit $stat
|
@@ -170,25 +170,25 @@ PATCH changes would never break well-designed test generators, because the test
|
|
170
170
|
## Automated Tests
|
171
171
|
|
172
172
|
`canonical-data.json` for each exercise is checked for compliance against the [canonical-schema.json](canonical-schema.json).
|
173
|
-
In order to run these tests, you will need to have `
|
174
|
-
Install them from [here](https://
|
173
|
+
In order to run these tests, you will need to have `yarn` installed on your system.
|
174
|
+
Install them from [here](https://yarnpkg.com/en/docs/install).
|
175
175
|
|
176
176
|
Install the required packages:
|
177
177
|
|
178
178
|
```shell
|
179
|
-
|
179
|
+
yarn install
|
180
180
|
```
|
181
181
|
|
182
182
|
Run for all exercises:
|
183
183
|
|
184
184
|
```shell
|
185
|
-
|
185
|
+
yarn test
|
186
186
|
```
|
187
187
|
|
188
188
|
Run for single exercise:
|
189
189
|
|
190
190
|
```shell
|
191
|
-
|
191
|
+
yarn run test-one exercises/<exercise>/canonical-data.json
|
192
192
|
```
|
193
193
|
|
194
194
|
Replace `<exercise>` by the name of exercise which you want to check.
|
@@ -3,11 +3,9 @@
|
|
3
3
|
[ " This is a JSON Schema for 'canonical-data.json' files. "
|
4
4
|
, " "
|
5
5
|
, " It enforces just a general structure for all exercises, "
|
6
|
-
, "
|
7
|
-
, "
|
8
|
-
, " allow
|
9
|
-
, " 'function (input) == output' structure, like property "
|
10
|
-
, " tests. "
|
6
|
+
, " optimising for the ability to represent example-based tests"
|
7
|
+
, " of the form 'function (input) == output'. Future expansions"
|
8
|
+
, " may allow for other types of tests such as property-based. "
|
11
9
|
, " "
|
12
10
|
, " The only thing enforced regarding how test data should be "
|
13
11
|
, " structured is the error encoding, because it was agreed "
|
@@ -85,13 +83,15 @@
|
|
85
83
|
"labeledTest":
|
86
84
|
{ "description": "A single test with a description"
|
87
85
|
, "type" : "object"
|
88
|
-
, "required" : ["description", "property"]
|
86
|
+
, "required" : ["description", "property", "input", "expected"]
|
89
87
|
, "properties" :
|
90
88
|
{ "description": { "$ref": "#/definitions/description" }
|
91
89
|
, "comments" : { "$ref": "#/definitions/comments" }
|
92
90
|
, "property" : { "$ref": "#/definitions/property" }
|
91
|
+
, "input" : { "$ref": "#/definitions/input" }
|
93
92
|
, "expected" : { "$ref": "#/definitions/expected" }
|
94
93
|
}
|
94
|
+
, "additionalProperties": false
|
95
95
|
},
|
96
96
|
|
97
97
|
"labeledTestGroup":
|
@@ -117,6 +117,11 @@
|
|
117
117
|
, "pattern" : "^[a-z]+([A-Z][a-z]+)*[A-Z]?$"
|
118
118
|
},
|
119
119
|
|
120
|
+
"input":
|
121
|
+
{ "description": "The inputs to a test case"
|
122
|
+
, "type" : "object"
|
123
|
+
},
|
124
|
+
|
120
125
|
"expected":
|
121
126
|
{ "description": "The expected return value of a test case"
|
122
127
|
, "properties":
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "all-your-base",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.3.0",
|
4
4
|
"comments": [
|
5
5
|
"This canonical data makes the following choices:",
|
6
6
|
"1. Zero is always represented in outputs as [0] instead of [].",
|
@@ -138,7 +138,7 @@
|
|
138
138
|
"property": "rebase",
|
139
139
|
"input": {
|
140
140
|
"inputBase": 1,
|
141
|
-
"digits": [],
|
141
|
+
"digits": [0],
|
142
142
|
"outputBase": 10
|
143
143
|
},
|
144
144
|
"expected": {"error": "input base must be >= 2"}
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "complex-numbers",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.3.0",
|
4
4
|
"comments": [
|
5
5
|
" The canonical data assumes mathematically correct real ",
|
6
6
|
" numbers. The testsuites should consider rounding errors ",
|
@@ -323,6 +323,14 @@
|
|
323
323
|
"z": [1, 0]
|
324
324
|
},
|
325
325
|
"expected": ["e", 0]
|
326
|
+
},
|
327
|
+
{
|
328
|
+
"description": "Exponential of a number with real and imaginary part",
|
329
|
+
"property": "exp",
|
330
|
+
"input": {
|
331
|
+
"z": ["ln(2)", "pi"]
|
332
|
+
},
|
333
|
+
"expected": [-2, 0]
|
326
334
|
}
|
327
335
|
]
|
328
336
|
}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,181 @@
|
|
1
|
+
{
|
2
|
+
"exercise": "scale-generator",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"cases": [
|
5
|
+
{
|
6
|
+
"comments": [
|
7
|
+
"These tests have no interval.",
|
8
|
+
"The chromatic scale is considered the default scale"
|
9
|
+
],
|
10
|
+
"description": "Chromatic scales",
|
11
|
+
"cases": [
|
12
|
+
{
|
13
|
+
"description": "Chromatic scale with sharps",
|
14
|
+
"property": "pitches",
|
15
|
+
"input": {
|
16
|
+
"tonic": "C"
|
17
|
+
},
|
18
|
+
"expected": [ "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" ]
|
19
|
+
},
|
20
|
+
{
|
21
|
+
"description": "Chromatic scale with flats",
|
22
|
+
"property": "pitches",
|
23
|
+
"input": {
|
24
|
+
"tonic": "F"
|
25
|
+
},
|
26
|
+
"expected": [ "F", "Gb", "G", "Ab", "A", "Bb", "B", "C", "Db", "D", "Eb", "E" ]
|
27
|
+
}
|
28
|
+
]
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"comments": [
|
32
|
+
"These tests all have intervals and are explorations of different",
|
33
|
+
"traversals of the scale."
|
34
|
+
],
|
35
|
+
"description": "Scales with specified intervals",
|
36
|
+
"cases": [
|
37
|
+
{
|
38
|
+
"description": "Simple major scale",
|
39
|
+
"comments": [
|
40
|
+
"The simplest major scale, with no sharps or flats."
|
41
|
+
],
|
42
|
+
"property": "pitches",
|
43
|
+
"input": {
|
44
|
+
"tonic": "C",
|
45
|
+
"intervals": "MMmMMMm"
|
46
|
+
},
|
47
|
+
"expected": [ "C", "D", "E", "F", "G", "A", "B" ]
|
48
|
+
},
|
49
|
+
{
|
50
|
+
"description": "Major scale with sharps",
|
51
|
+
"property": "pitches",
|
52
|
+
"input": {
|
53
|
+
"tonic": "G",
|
54
|
+
"intervals": "MMmMMMm"
|
55
|
+
},
|
56
|
+
"expected": [ "G", "A", "B", "C", "D", "E", "F#" ]
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"description": "Major scale with flats",
|
60
|
+
"property": "pitches",
|
61
|
+
"input": {
|
62
|
+
"tonic": "F",
|
63
|
+
"intervals": "MMmMMMm"
|
64
|
+
},
|
65
|
+
"expected": [ "F", "G", "A", "Bb", "C", "D", "E" ]
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"description": "Minor scale with sharps",
|
69
|
+
"property": "pitches",
|
70
|
+
"input": {
|
71
|
+
"tonic": "f#",
|
72
|
+
"intervals": "MmMMmMM"
|
73
|
+
},
|
74
|
+
"expected": [ "F#", "G#", "A", "B", "C#", "D", "E" ]
|
75
|
+
},
|
76
|
+
{
|
77
|
+
"description": "Minor scale with flats",
|
78
|
+
"property": "pitches",
|
79
|
+
"input": {
|
80
|
+
"tonic": "bb",
|
81
|
+
"intervals": "MmMMmMM"
|
82
|
+
},
|
83
|
+
"expected": [ "Bb", "C", "Db", "Eb", "F", "Gb", "Ab" ]
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"description": "Dorian mode",
|
87
|
+
"property": "pitches",
|
88
|
+
"input": {
|
89
|
+
"tonic": "d",
|
90
|
+
"intervals": "MmMMMmM"
|
91
|
+
},
|
92
|
+
"expected": [ "D", "E", "F", "G", "A", "B", "C" ]
|
93
|
+
},
|
94
|
+
{
|
95
|
+
"description": "Mixolydian mode",
|
96
|
+
"property": "pitches",
|
97
|
+
"input": {
|
98
|
+
"tonic": "Eb",
|
99
|
+
"intervals": "MMmMMmM"
|
100
|
+
},
|
101
|
+
"expected": [ "Eb", "F", "G", "Ab", "Bb", "C", "Db" ]
|
102
|
+
},
|
103
|
+
{
|
104
|
+
"description": "Lydian mode",
|
105
|
+
"property": "pitches",
|
106
|
+
"input": {
|
107
|
+
"tonic": "a",
|
108
|
+
"intervals": "MMMmMMm"
|
109
|
+
},
|
110
|
+
"expected": [ "A", "B", "C#", "D#", "E", "F#", "G#" ]
|
111
|
+
},
|
112
|
+
{
|
113
|
+
"description": "Phrygian mode",
|
114
|
+
"property": "pitches",
|
115
|
+
"input": {
|
116
|
+
"tonic": "e",
|
117
|
+
"intervals": "mMMMmMM"
|
118
|
+
},
|
119
|
+
"expected": [ "E", "F", "G", "A", "B", "C", "D" ]
|
120
|
+
},
|
121
|
+
{
|
122
|
+
"description": "Locrian mode",
|
123
|
+
"property": "pitches",
|
124
|
+
"input": {
|
125
|
+
"tonic": "g",
|
126
|
+
"intervals": "mMMmMMM"
|
127
|
+
},
|
128
|
+
"expected": [ "G", "Ab", "Bb", "C", "Db", "Eb", "F" ]
|
129
|
+
},
|
130
|
+
{
|
131
|
+
"comments": [
|
132
|
+
"Note that this case introduces the accidental interval (A)"
|
133
|
+
],
|
134
|
+
"description": "Harmonic minor",
|
135
|
+
"property": "pitches",
|
136
|
+
"input": {
|
137
|
+
"tonic": "d",
|
138
|
+
"intervals": "MmMMmAm"
|
139
|
+
},
|
140
|
+
"expected": [ "D", "E", "F", "G", "A", "Bb", "Db" ]
|
141
|
+
},
|
142
|
+
{
|
143
|
+
"description": "Octatonic",
|
144
|
+
"property": "pitches",
|
145
|
+
"input": {
|
146
|
+
"tonic": "C",
|
147
|
+
"intervals": "MmMmMmMm"
|
148
|
+
},
|
149
|
+
"expected": [ "C", "D", "D#", "F", "F#", "G#", "A", "B" ]
|
150
|
+
},
|
151
|
+
{
|
152
|
+
"description": "Hexatonic",
|
153
|
+
"property": "pitches",
|
154
|
+
"input": {
|
155
|
+
"tonic": "Db",
|
156
|
+
"intervals": "MMMMMM"
|
157
|
+
},
|
158
|
+
"expected": [ "Db", "Eb", "F", "G", "A", "B" ]
|
159
|
+
},
|
160
|
+
{
|
161
|
+
"description": "Pentatonic",
|
162
|
+
"property": "pitches",
|
163
|
+
"input": {
|
164
|
+
"tonic": "A",
|
165
|
+
"intervals": "MMAMA"
|
166
|
+
},
|
167
|
+
"expected": [ "A", "B", "C#", "E", "F#" ]
|
168
|
+
},
|
169
|
+
{
|
170
|
+
"description": "Enigmatic",
|
171
|
+
"property": "pitches",
|
172
|
+
"input": {
|
173
|
+
"tonic": "G",
|
174
|
+
"intervals": "mAMMMmm"
|
175
|
+
},
|
176
|
+
"expected": [ "G", "G#", "B", "C#", "D#", "F", "F#" ]
|
177
|
+
}
|
178
|
+
]
|
179
|
+
}
|
180
|
+
]
|
181
|
+
}
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,137 @@
|
|
1
|
+
{
|
2
|
+
"comments":
|
3
|
+
[ " This is a JSON Schema for 'canonical-data.json' files. "
|
4
|
+
, " "
|
5
|
+
, " It enforces just a general structure for all exercises, "
|
6
|
+
, " without specifying how the test data should be organized "
|
7
|
+
, " for each type of test. We do this to keep generality and "
|
8
|
+
, " allow support for tests that do not fit well in the "
|
9
|
+
, " 'function (input) == output' structure, like property "
|
10
|
+
, " tests. "
|
11
|
+
, " "
|
12
|
+
, " The only thing enforced regarding how test data should be "
|
13
|
+
, " structured is the error encoding, because it was agreed "
|
14
|
+
, " and it doesn't restrict flexibility in a significant way. "
|
15
|
+
, " "
|
16
|
+
, " Standardized property names may help when automatically "
|
17
|
+
, " deriving JSON parsers in some languages, so we followed "
|
18
|
+
, " a few conventions from the 'Google JSON Style Guide'. "
|
19
|
+
, " "
|
20
|
+
, " Additionally, this schema strictly enforces letters, in "
|
21
|
+
, " lowerCamelCase, for naming the 'property' being tested. We "
|
22
|
+
, " expect this regularity will allow an easier automatic "
|
23
|
+
, " generation of function's names in test generators, "
|
24
|
+
, " slightly reducing the amount of manually generated code. "
|
25
|
+
],
|
26
|
+
|
27
|
+
"$schema": "http://json-schema.org/draft-04/schema#",
|
28
|
+
|
29
|
+
"self": { "vendor" : "io.exercism"
|
30
|
+
, "name" : "canonical-data"
|
31
|
+
, "format" : "jsonschema"
|
32
|
+
, "version": "1-0-0"
|
33
|
+
},
|
34
|
+
|
35
|
+
"$ref": "#/definitions/canonicalData",
|
36
|
+
|
37
|
+
"definitions":{
|
38
|
+
|
39
|
+
"canonicalData":
|
40
|
+
{ "description": "This is the top-level file structure"
|
41
|
+
, "type" : "object"
|
42
|
+
, "required" : ["exercise" , "version", "cases"]
|
43
|
+
, "properties" :
|
44
|
+
{ "exercise" : { "$ref": "#/definitions/exercise" }
|
45
|
+
, "version" : { "$ref": "#/definitions/version" }
|
46
|
+
, "comments" : { "$ref": "#/definitions/comments" }
|
47
|
+
, "cases" : { "$ref": "#/definitions/testGroup" }
|
48
|
+
}
|
49
|
+
, "additionalProperties": false
|
50
|
+
},
|
51
|
+
|
52
|
+
"exercise":
|
53
|
+
{ "description": "Exercise's slug (kebab-case)"
|
54
|
+
, "type" : "string"
|
55
|
+
, "pattern" : "^[a-z]+(-[a-z]+)*$"
|
56
|
+
},
|
57
|
+
|
58
|
+
"version" :
|
59
|
+
{ "description" : "Semantic versioning: MAJOR.MINOR.PATCH"
|
60
|
+
, "type" : "string"
|
61
|
+
, "pattern" : "^(0|[1-9][0-9]*)(\\.(0|[1-9][0-9]*)){2}$"
|
62
|
+
},
|
63
|
+
|
64
|
+
"comments":
|
65
|
+
{ "description": "An array of strings to fake multi-line comments"
|
66
|
+
, "type" : "array"
|
67
|
+
, "items" : { "type": "string" }
|
68
|
+
, "minItems" : 1
|
69
|
+
},
|
70
|
+
|
71
|
+
"testGroup":
|
72
|
+
{ "description": "An array of labeled test items"
|
73
|
+
, "type" : "array"
|
74
|
+
, "items" : { "$ref": "#/definitions/labeledTestItem" }
|
75
|
+
, "minItems" : 1
|
76
|
+
},
|
77
|
+
|
78
|
+
"labeledTestItem":
|
79
|
+
{ "description": "A single test or group of tests with a description"
|
80
|
+
, "oneOf": [ { "$ref": "#/definitions/labeledTest" }
|
81
|
+
, { "$ref": "#/definitions/labeledTestGroup" }
|
82
|
+
]
|
83
|
+
},
|
84
|
+
|
85
|
+
"labeledTest":
|
86
|
+
{ "description": "A single test with a description"
|
87
|
+
, "type" : "object"
|
88
|
+
, "required" : ["description", "property"]
|
89
|
+
, "properties" :
|
90
|
+
{ "description": { "$ref": "#/definitions/description" }
|
91
|
+
, "comments" : { "$ref": "#/definitions/comments" }
|
92
|
+
, "property" : { "$ref": "#/definitions/property" }
|
93
|
+
, "expected" : { "$ref": "#/definitions/expected" }
|
94
|
+
}
|
95
|
+
},
|
96
|
+
|
97
|
+
"labeledTestGroup":
|
98
|
+
{ "description": "A group of tests with a description"
|
99
|
+
, "type" : "object"
|
100
|
+
, "required" : ["description", "cases"]
|
101
|
+
, "properties" :
|
102
|
+
{ "description": { "$ref": "#/definitions/description" }
|
103
|
+
, "comments" : { "$ref": "#/definitions/comments" }
|
104
|
+
, "cases" : { "$ref": "#/definitions/testGroup" }
|
105
|
+
}
|
106
|
+
, "additionalProperties": false
|
107
|
+
},
|
108
|
+
|
109
|
+
"description":
|
110
|
+
{ "description": "A short, clear, one-line description"
|
111
|
+
, "type" : "string"
|
112
|
+
},
|
113
|
+
|
114
|
+
"property":
|
115
|
+
{ "description": "A letters-only, lowerCamelCase property name"
|
116
|
+
, "type" : "string"
|
117
|
+
, "pattern" : "^[a-z]+([A-Z][a-z]+)*[A-Z]?$"
|
118
|
+
},
|
119
|
+
|
120
|
+
"expected":
|
121
|
+
{ "description": "The expected return value of a test case"
|
122
|
+
, "properties":
|
123
|
+
{ "error": { "$ref": "#/definitions/error" }
|
124
|
+
}
|
125
|
+
, "dependencies":
|
126
|
+
{ "error": { "maxProperties": 1 }
|
127
|
+
}
|
128
|
+
},
|
129
|
+
|
130
|
+
"error":
|
131
|
+
{ "description": "A message describing an error condition"
|
132
|
+
, "type" : "string"
|
133
|
+
}
|
134
|
+
|
135
|
+
}
|
136
|
+
|
137
|
+
}
|