trackler 2.2.1.107 → 2.2.1.108
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/pig-latin/description.md +4 -4
- data/tracks/c/config.json +42 -0
- data/tracks/c/exercises/bracket-push/README.md +3 -0
- data/tracks/c/exercises/bracket-push/makefile +25 -0
- data/tracks/c/exercises/bracket-push/src/example.c +52 -0
- data/tracks/c/exercises/bracket-push/src/example.h +7 -0
- data/tracks/c/exercises/bracket-push/test/test_bracket_push.c +132 -0
- data/tracks/c/exercises/bracket-push/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/bracket-push/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/bracket-push/test/vendor/unity_internals.h +701 -0
- data/tracks/c/exercises/etl/README.md +46 -0
- data/tracks/c/exercises/etl/makefile +25 -0
- data/tracks/c/exercises/etl/src/example.c +44 -0
- data/tracks/c/exercises/etl/src/example.h +18 -0
- data/tracks/c/exercises/etl/test/test_etl.c +120 -0
- data/tracks/c/exercises/etl/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/etl/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/etl/test/vendor/unity_internals.h +701 -0
- data/tracks/c/exercises/luhn/README.md +64 -0
- data/tracks/c/exercises/luhn/makefile +25 -0
- data/tracks/c/exercises/luhn/src/example.c +38 -0
- data/tracks/c/exercises/luhn/src/example.h +7 -0
- data/tracks/c/exercises/luhn/test/test_luhn.c +109 -0
- data/tracks/c/exercises/luhn/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/luhn/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/luhn/test/vendor/unity_internals.h +701 -0
- data/tracks/c/exercises/prime-factors/README.md +29 -0
- data/tracks/c/exercises/prime-factors/makefile +25 -0
- data/tracks/c/exercises/prime-factors/src/example.c +28 -0
- data/tracks/c/exercises/prime-factors/src/example.h +11 -0
- data/tracks/c/exercises/prime-factors/test/test_prime_factors.c +96 -0
- data/tracks/c/exercises/prime-factors/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/prime-factors/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/prime-factors/test/vendor/unity_internals.h +701 -0
- data/tracks/clojure/exercises/hello-world/src/example.clj +2 -3
- data/tracks/clojure/exercises/hello-world/test/hello_world_test.clj +0 -6
- data/tracks/common-lisp/README.md +3 -8
- data/tracks/common-lisp/config/exercise_readme.go.tmpl +1 -1
- data/tracks/common-lisp/exercises/acronym/README.md +1 -1
- data/tracks/common-lisp/exercises/acronym/acronym-test.lisp +0 -5
- data/tracks/common-lisp/exercises/allergies/README.md +1 -1
- data/tracks/common-lisp/exercises/anagram/README.md +1 -1
- data/tracks/common-lisp/exercises/atbash-cipher/README.md +1 -1
- data/tracks/common-lisp/exercises/beer-song/README.md +1 -1
- data/tracks/common-lisp/exercises/binary/README.md +1 -1
- data/tracks/common-lisp/exercises/bob/README.md +1 -1
- data/tracks/common-lisp/exercises/collatz-conjecture/README.md +1 -1
- data/tracks/common-lisp/exercises/crypto-square/README.md +1 -1
- data/tracks/common-lisp/exercises/difference-of-squares/README.md +1 -1
- data/tracks/common-lisp/exercises/etl/README.md +1 -1
- data/tracks/common-lisp/exercises/gigasecond/README.md +1 -1
- data/tracks/common-lisp/exercises/grade-school/README.md +1 -1
- data/tracks/common-lisp/exercises/grains/README.md +1 -1
- data/tracks/common-lisp/exercises/hamming/README.md +1 -1
- data/tracks/common-lisp/exercises/hello-world/README.md +1 -1
- data/tracks/common-lisp/exercises/isogram/README.md +1 -1
- data/tracks/common-lisp/exercises/leap/README.md +1 -1
- data/tracks/common-lisp/exercises/meetup/README.md +1 -1
- data/tracks/common-lisp/exercises/nucleotide-count/README.md +1 -1
- data/tracks/common-lisp/exercises/pascals-triangle/README.md +1 -1
- data/tracks/common-lisp/exercises/perfect-numbers/README.md +1 -1
- data/tracks/common-lisp/exercises/phone-number/README.md +1 -1
- data/tracks/common-lisp/exercises/prime-factors/README.md +1 -1
- data/tracks/common-lisp/exercises/raindrops/README.md +1 -1
- data/tracks/common-lisp/exercises/rna-transcription/README.md +1 -1
- data/tracks/common-lisp/exercises/robot-name/README.md +1 -1
- data/tracks/common-lisp/exercises/roman-numerals/README.md +1 -1
- data/tracks/common-lisp/exercises/scrabble-score/README.md +1 -1
- data/tracks/common-lisp/exercises/sieve/README.md +1 -1
- data/tracks/common-lisp/exercises/space-age/README.md +1 -1
- data/tracks/common-lisp/exercises/strain/README.md +1 -1
- data/tracks/common-lisp/exercises/sublist/README.md +1 -1
- data/tracks/common-lisp/exercises/triangle/README.md +1 -1
- data/tracks/common-lisp/exercises/trinary/README.md +1 -1
- data/tracks/common-lisp/exercises/word-count/README.md +1 -1
- data/tracks/csharp/exercises/meetup/MeetupTest.cs +177 -177
- data/tracks/csharp/exercises/robot-simulator/Example.cs +27 -27
- data/tracks/csharp/exercises/robot-simulator/RobotSimulator.cs +3 -3
- data/tracks/csharp/exercises/robot-simulator/RobotSimulatorTest.cs +152 -31
- data/tracks/csharp/generators/Exercises/Meetup.cs +8 -9
- data/tracks/csharp/generators/Exercises/RobotSimulator.cs +116 -0
- data/tracks/delphi/exercises/allergies/uAllergyTests.pas +28 -0
- data/tracks/delphi/exercises/binary-search/uBinarySearchExample.pas +6 -0
- data/tracks/delphi/exercises/binary-search/uBinarySearchTest.pas +53 -37
- data/tracks/delphi/exercises/collatz-conjecture/uCollatzconjectureTest.pas +3 -0
- data/tracks/delphi/exercises/etl/uETLtests.pas +13 -10
- data/tracks/delphi/exercises/grains/uGrainsTests.pas +5 -2
- data/tracks/delphi/exercises/hamming/uHammingTests.pas +3 -0
- data/tracks/delphi/exercises/hello-world/uTestHelloWorld.pas +3 -0
- data/tracks/delphi/exercises/leap/uLeapTests.pas +3 -0
- data/tracks/delphi/exercises/minesweeper/uMineSweeperTest.pas +3 -0
- data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountTest.pas +5 -17
- data/tracks/delphi/exercises/perfect-numbers/uPerfectNumbersExample.pas +6 -0
- data/tracks/delphi/exercises/perfect-numbers/uPerfectNumbersTest.pas +77 -26
- data/tracks/delphi/exercises/pig-latin/README.md +4 -4
- data/tracks/delphi/exercises/pig-latin/uTestPigLatin.pas +12 -9
- data/tracks/delphi/exercises/poker/uPokerExample.pas +81 -26
- data/tracks/delphi/exercises/poker/uPokerTest.pas +343 -121
- data/tracks/delphi/exercises/raindrops/uRaindropsTest.pas +3 -0
- data/tracks/delphi/exercises/saddle-points/uSaddlePointsExample.pas +4 -3
- data/tracks/delphi/exercises/saddle-points/uSaddlePointsTests.pas +25 -47
- data/tracks/delphi/exercises/triangle/uTestTriangle.pas +4 -2
- data/tracks/delphi/exercises/two-fer/utwoferTest.pas +3 -0
- data/tracks/delphi/exercises/wordy/uWordyTests.pas +3 -0
- data/tracks/ecmascript/.travis.yml +2 -1
- data/tracks/ecmascript/config.json +14 -0
- data/tracks/ecmascript/exercises/accumulate/package.json +1 -2
- data/tracks/ecmascript/exercises/acronym/package.json +1 -2
- data/tracks/ecmascript/exercises/all-your-base/package.json +1 -2
- data/tracks/ecmascript/exercises/allergies/package.json +1 -2
- data/tracks/ecmascript/exercises/alphametics/package.json +1 -2
- data/tracks/ecmascript/exercises/anagram/package.json +1 -2
- data/tracks/ecmascript/exercises/atbash-cipher/package.json +1 -2
- data/tracks/ecmascript/exercises/beer-song/package.json +1 -2
- data/tracks/ecmascript/exercises/binary-search-tree/package.json +1 -2
- data/tracks/ecmascript/exercises/binary-search/package.json +1 -2
- data/tracks/ecmascript/exercises/binary/package.json +1 -2
- data/tracks/ecmascript/exercises/bob/README.md +2 -0
- data/tracks/ecmascript/exercises/bob/bob.spec.js +5 -5
- data/tracks/ecmascript/exercises/bob/example.js +7 -2
- data/tracks/ecmascript/exercises/bob/package.json +1 -2
- data/tracks/ecmascript/exercises/bowling/package.json +1 -2
- data/tracks/ecmascript/exercises/bracket-push/package.json +1 -2
- data/tracks/ecmascript/exercises/change/package.json +1 -2
- data/tracks/ecmascript/exercises/circular-buffer/package.json +1 -2
- data/tracks/ecmascript/exercises/clock/package.json +1 -2
- data/tracks/ecmascript/exercises/collatz-conjecture/package.json +1 -2
- data/tracks/ecmascript/exercises/complex-numbers/package.json +1 -2
- data/tracks/ecmascript/exercises/connect/package.json +1 -2
- data/tracks/ecmascript/exercises/crypto-square/package.json +1 -2
- data/tracks/ecmascript/exercises/custom-set/package.json +1 -2
- data/tracks/ecmascript/exercises/diamond/package.json +1 -2
- data/tracks/ecmascript/exercises/difference-of-squares/package.json +1 -2
- data/tracks/ecmascript/exercises/diffie-hellman/package.json +1 -2
- data/tracks/ecmascript/exercises/etl/package.json +1 -2
- data/tracks/ecmascript/exercises/flatten-array/package.json +1 -2
- data/tracks/ecmascript/exercises/food-chain/package.json +1 -2
- data/tracks/ecmascript/exercises/gigasecond/package.json +1 -2
- data/tracks/ecmascript/exercises/grade-school/package.json +1 -2
- data/tracks/ecmascript/exercises/grains/package.json +1 -2
- data/tracks/ecmascript/exercises/hamming/package.json +1 -2
- data/tracks/ecmascript/exercises/hello-world/package.json +1 -2
- data/tracks/ecmascript/exercises/hexadecimal/package.json +1 -2
- data/tracks/ecmascript/exercises/house/package.json +1 -2
- data/tracks/ecmascript/exercises/isbn-verifier/package.json +1 -2
- data/tracks/ecmascript/exercises/isogram/package.json +1 -2
- data/tracks/ecmascript/exercises/kindergarten-garden/package.json +1 -2
- data/tracks/ecmascript/exercises/largest-series-product/package.json +1 -2
- data/tracks/ecmascript/exercises/leap/package.json +1 -2
- data/tracks/ecmascript/exercises/linked-list/package.json +1 -2
- data/tracks/ecmascript/exercises/list-ops/package.json +1 -2
- data/tracks/ecmascript/exercises/luhn/package.json +1 -2
- data/tracks/ecmascript/exercises/matrix/package.json +1 -2
- data/tracks/ecmascript/exercises/meetup/package.json +1 -2
- data/tracks/ecmascript/exercises/minesweeper/package.json +1 -2
- data/tracks/ecmascript/exercises/nth-prime/package.json +1 -2
- data/tracks/ecmascript/exercises/nucleotide-count/README.md +60 -0
- data/tracks/ecmascript/exercises/nucleotide-count/example.js +13 -0
- data/tracks/ecmascript/exercises/nucleotide-count/nucleotide-count.spec.js +23 -0
- data/tracks/ecmascript/exercises/nucleotide-count/package.json +70 -0
- data/tracks/ecmascript/exercises/ocr-numbers/package.json +1 -2
- data/tracks/ecmascript/exercises/octal/package.json +1 -2
- data/tracks/ecmascript/exercises/palindrome-products/package.json +1 -2
- data/tracks/ecmascript/exercises/pangram/package.json +1 -2
- data/tracks/ecmascript/exercises/pascals-triangle/package.json +1 -2
- data/tracks/ecmascript/exercises/perfect-numbers/package.json +1 -2
- data/tracks/ecmascript/exercises/phone-number/package.json +1 -2
- data/tracks/ecmascript/exercises/pig-latin/package.json +1 -2
- data/tracks/ecmascript/exercises/prime-factors/package.json +1 -2
- data/tracks/ecmascript/exercises/protein-translation/package.json +1 -2
- data/tracks/ecmascript/exercises/proverb/package.json +1 -2
- data/tracks/ecmascript/exercises/pythagorean-triplet/package.json +1 -2
- data/tracks/ecmascript/exercises/queen-attack/package.json +1 -2
- data/tracks/ecmascript/exercises/raindrops/package.json +1 -2
- data/tracks/ecmascript/exercises/react/package.json +1 -2
- data/tracks/ecmascript/exercises/rectangles/package.json +1 -2
- data/tracks/ecmascript/exercises/rna-transcription/package.json +1 -2
- data/tracks/ecmascript/exercises/robot-name/package.json +1 -2
- data/tracks/ecmascript/exercises/robot-simulator/package.json +1 -2
- data/tracks/ecmascript/exercises/roman-numerals/package.json +1 -2
- data/tracks/ecmascript/exercises/rotational-cipher/package.json +1 -2
- data/tracks/ecmascript/exercises/run-length-encoding/package.json +1 -2
- data/tracks/ecmascript/exercises/saddle-points/package.json +1 -2
- data/tracks/ecmascript/exercises/say/package.json +1 -2
- data/tracks/ecmascript/exercises/scrabble-score/package.json +1 -2
- data/tracks/ecmascript/exercises/secret-handshake/package.json +1 -2
- data/tracks/ecmascript/exercises/series/package.json +1 -2
- data/tracks/ecmascript/exercises/sieve/package.json +1 -2
- data/tracks/ecmascript/exercises/simple-cipher/package.json +1 -2
- data/tracks/ecmascript/exercises/simple-linked-list/package.json +1 -2
- data/tracks/ecmascript/exercises/space-age/package.json +1 -2
- data/tracks/ecmascript/exercises/spiral-matrix/package.json +1 -2
- data/tracks/ecmascript/exercises/strain/package.json +1 -2
- data/tracks/ecmascript/exercises/sublist/package.json +1 -2
- data/tracks/ecmascript/exercises/sum-of-multiples/package.json +1 -2
- data/tracks/ecmascript/exercises/transpose/package.json +1 -2
- data/tracks/ecmascript/exercises/triangle/package.json +1 -2
- data/tracks/ecmascript/exercises/trinary/package.json +1 -2
- data/tracks/ecmascript/exercises/twelve-days/package.json +1 -2
- data/tracks/ecmascript/exercises/two-bucket/package.json +1 -2
- data/tracks/ecmascript/exercises/two-fer/package.json +1 -2
- data/tracks/ecmascript/exercises/word-count/package.json +1 -2
- data/tracks/ecmascript/exercises/word-search/package.json +1 -2
- data/tracks/ecmascript/exercises/wordy/package.json +1 -2
- data/tracks/ecmascript/package.json +1 -2
- data/tracks/elm/config.json +13 -1
- data/tracks/elm/exercises/binary-search/BinarySearch.elm +9 -0
- data/tracks/elm/exercises/binary-search/BinarySearch.example.elm +36 -0
- data/tracks/elm/exercises/binary-search/README.md +71 -0
- data/tracks/elm/exercises/binary-search/elm-package.json +15 -0
- data/tracks/elm/exercises/binary-search/tests/Tests.elm +66 -0
- data/tracks/elm/exercises/binary-search/tests/elm-package.json +17 -0
- data/tracks/elm/exercises/hamming/Hamming.example.elm +3 -3
- data/tracks/elm/exercises/hamming/tests/Tests.elm +14 -14
- data/tracks/go/exercises/word-search/.meta/gen.go +9 -7
- data/tracks/go/exercises/word-search/cases_test.go +2 -2
- data/tracks/groovy/config.json +12 -0
- data/tracks/groovy/exercises/bank-account/BankAccount.groovy +30 -0
- data/tracks/groovy/exercises/bank-account/BankAccountSpec.groovy +200 -0
- data/tracks/groovy/exercises/bank-account/Example.groovy +47 -0
- data/tracks/groovy/exercises/bank-account/README.md +75 -0
- data/tracks/groovy/exercises/phone-number/Example.groovy +10 -14
- data/tracks/groovy/exercises/phone-number/PhoneNumber.groovy +2 -14
- data/tracks/groovy/exercises/phone-number/PhoneNumberSpec.groovy +39 -26
- data/tracks/groovy/exercises/phone-number/README.md +1 -1
- data/tracks/java/config.json +13 -0
- data/tracks/java/exercises/forth/README.md +10 -0
- data/tracks/java/exercises/rna-transcription/.meta/version +1 -1
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/java/exercises/sieve/.meta/version +1 -1
- data/tracks/java/exercises/spiral-matrix/.meta/version +1 -1
- data/tracks/java/exercises/triangle/.meta/version +1 -1
- data/tracks/java/exercises/two-bucket/README.md +1 -1
- data/tracks/java/exercises/zipper/.meta/src/reference/java/Zipper.java +199 -0
- data/tracks/java/exercises/zipper/.meta/version +1 -0
- data/tracks/java/exercises/zipper/README.md +42 -0
- data/tracks/java/exercises/zipper/build.gradle +18 -0
- data/tracks/java/exercises/zipper/src/main/java/.keep +0 -0
- data/tracks/java/exercises/zipper/src/test/java/ZipperTest.java +204 -0
- data/tracks/javascript/package.json +10 -0
- data/tracks/ocaml/.travis-ci.sh +1 -1
- data/tracks/ocaml/.travis.yml +1 -1
- data/tracks/ocaml/README.md +1 -1
- data/tracks/ocaml/config/exercise_readme.go.tmpl +2 -0
- data/tracks/python/config.json +13 -0
- data/tracks/python/exercises/all-your-base/all_your_base.py +1 -1
- data/tracks/python/exercises/all-your-base/all_your_base_test.py +8 -8
- data/tracks/python/exercises/alphametics/alphametics_test.py +49 -9
- data/tracks/python/exercises/binary-search-tree/binary_search_tree.py +11 -5
- data/tracks/python/exercises/binary-search-tree/binary_search_tree_test.py +89 -48
- data/tracks/python/exercises/binary-search-tree/example.py +42 -52
- data/tracks/python/exercises/binary-search/binary_search_test.py +1 -1
- data/tracks/python/exercises/book-store/book_store_test.py +18 -39
- data/tracks/python/exercises/book-store/example.py +1 -1
- data/tracks/python/exercises/bowling/bowling.py +0 -2
- data/tracks/python/exercises/bowling/bowling_test.py +49 -13
- data/tracks/python/exercises/bowling/example.py +85 -135
- data/tracks/python/exercises/bracket-push/bracket_push.py +1 -1
- data/tracks/python/exercises/bracket-push/bracket_push_test.py +16 -16
- data/tracks/python/exercises/bracket-push/example.py +2 -2
- data/tracks/python/exercises/change/change_test.py +17 -4
- data/tracks/python/exercises/change/example.py +2 -2
- data/tracks/python/exercises/circular-buffer/circular_buffer.py +12 -0
- data/tracks/python/exercises/circular-buffer/circular_buffer_test.py +4 -11
- data/tracks/python/exercises/clock/clock.py +10 -1
- data/tracks/python/exercises/clock/clock_test.py +9 -9
- data/tracks/python/exercises/clock/example.py +4 -1
- data/tracks/python/exercises/collatz-conjecture/collatz_conjecture_test.py +15 -5
- data/tracks/python/exercises/collatz-conjecture/example.py +1 -1
- data/tracks/python/exercises/complex-numbers/complex_numbers_test.py +37 -26
- data/tracks/python/exercises/custom-set/custom_set_test.py +1 -1
- data/tracks/python/exercises/diamond/diamond_test.py +1 -1
- data/tracks/python/exercises/dominoes/dominoes_test.py +1 -1
- data/tracks/python/exercises/forth/forth_test.py +1 -1
- data/tracks/python/exercises/house/example.py +11 -3
- data/tracks/python/exercises/house/house.py +1 -5
- data/tracks/python/exercises/house/house_test.py +269 -116
- data/tracks/python/exercises/list-ops/list_ops_test.py +1 -1
- data/tracks/python/exercises/luhn/luhn.py +3 -0
- data/tracks/python/exercises/luhn/luhn_test.py +1 -1
- data/tracks/python/exercises/markdown/markdown_test.py +2 -3
- data/tracks/python/exercises/minesweeper/minesweeper_test.py +1 -1
- data/tracks/python/exercises/nth-prime/nth_prime_test.py +1 -1
- data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +1 -1
- data/tracks/python/exercises/palindrome-products/palindrome_products_test.py +14 -6
- data/tracks/python/exercises/perfect-numbers/perfect_numbers_test.py +1 -24
- data/tracks/python/exercises/phone-number/phone_number_test.py +11 -3
- data/tracks/python/exercises/poker/example.py +4 -3
- data/tracks/python/exercises/poker/poker.py +1 -1
- data/tracks/python/exercises/poker/poker_test.py +196 -119
- data/tracks/python/exercises/pov/example.py +3 -3
- data/tracks/python/exercises/pov/pov.py +2 -2
- data/tracks/python/exercises/pov/pov_test.py +19 -18
- data/tracks/python/exercises/protein-translation/protein_translation_test.py +14 -24
- data/tracks/python/exercises/rail-fence-cipher/rail_fence_cipher_test.py +1 -1
- data/tracks/python/exercises/rational-numbers/README.md +59 -0
- data/tracks/python/exercises/rational-numbers/example.py +58 -0
- data/tracks/python/exercises/rational-numbers/rational_numbers.py +34 -0
- data/tracks/python/exercises/rational-numbers/rational_numbers_test.py +132 -0
- data/tracks/python/exercises/rectangles/rectangles_test.py +1 -1
- data/tracks/python/exercises/roman-numerals/roman_numerals_test.py +2 -1
- data/tracks/python/exercises/run-length-encoding/run_length_encoding_test.py +2 -2
- data/tracks/python/exercises/saddle-points/saddle_points_test.py +18 -18
- data/tracks/python/exercises/scale-generator/example.py +4 -5
- data/tracks/python/exercises/scale-generator/scale_generator.py +2 -2
- data/tracks/python/exercises/scale-generator/scale_generator_test.py +38 -73
- data/tracks/python/exercises/secret-handshake/secret_handshake_test.py +1 -1
- data/tracks/python/exercises/tournament/tournament_test.py +1 -1
- data/tracks/python/exercises/twelve-days/example.py +3 -8
- data/tracks/python/exercises/twelve-days/twelve_days.py +1 -9
- data/tracks/python/exercises/twelve-days/twelve_days_test.py +51 -50
- data/tracks/python/exercises/two-bucket/example.py +3 -4
- data/tracks/python/exercises/two-bucket/two_bucket.py +1 -1
- data/tracks/python/exercises/two-bucket/two_bucket_test.py +8 -13
- data/tracks/python/exercises/two-fer/two_fer_test.py +8 -9
- data/tracks/python/exercises/variable-length-quantity/variable_length_quantity_test.py +1 -1
- data/tracks/python/exercises/word-count/word_count_test.py +8 -14
- data/tracks/python/exercises/word-search/word_search.py +3 -15
- data/tracks/python/exercises/word-search/word_search_test.py +1 -1
- data/tracks/python/exercises/wordy/wordy_test.py +1 -1
- data/tracks/python/exercises/zebra-puzzle/example.py +11 -2
- data/tracks/python/exercises/zebra-puzzle/zebra_puzzle.py +5 -1
- data/tracks/python/exercises/zebra-puzzle/zebra_puzzle_test.py +8 -5
- data/tracks/python/exercises/zipper/zipper_test.py +24 -30
- data/tracks/scala/exercises/dominoes/src/test/scala/DominoesTest.scala +2 -2
- data/tracks/scala/exercises/flatten-array/src/test/scala/FlattenArrayTest.scala +1 -1
- data/tracks/scala/exercises/food-chain/example.scala +3 -3
- data/tracks/scala/exercises/food-chain/src/test/scala/FoodChainTest.scala +12 -12
- data/tracks/scala/exercises/forth/src/test/scala/ForthTest.scala +35 -10
- data/tracks/scala/exercises/gigasecond/src/test/scala/GigasecondTest.scala +2 -2
- data/tracks/scala/exercises/hamming/src/test/scala/HammingTest.scala +4 -4
- data/tracks/scala/exercises/hello-world/src/test/scala/HelloWorldTest.scala +2 -3
- data/tracks/scala/exercises/house/example.scala +4 -5
- data/tracks/scala/exercises/house/src/test/scala/HouseTest.scala +16 -17
- data/tracks/scala/exercises/isogram/src/test/scala/IsogramTest.scala +3 -3
- data/tracks/scala/exercises/kindergarten-garden/src/test/scala/GardenTest.scala +1 -29
- data/tracks/scala/exercises/largest-series-product/src/test/scala/SeriesTest.scala +20 -17
- data/tracks/scala/exercises/leap/src/test/scala/LeapTest.scala +3 -3
- data/tracks/scala/exercises/luhn/src/test/scala/LuhnTest.scala +3 -3
- data/tracks/scala/exercises/matrix/example.scala +5 -1
- data/tracks/scala/exercises/matrix/src/test/scala/MatrixTest.scala +48 -12
- data/tracks/scala/exercises/meetup/src/test/scala/MeetupTest.scala +2 -1
- data/tracks/scala/exercises/minesweeper/src/test/scala/MinesweeperTest.scala +9 -9
- data/tracks/scala/testgen/src/main/scala/DominoesTestGenerator.scala +6 -6
- data/tracks/scala/testgen/src/main/scala/FlattenArrayTestGenerator.scala +6 -6
- data/tracks/scala/testgen/src/main/scala/FoodChainTestGenerator.scala +10 -12
- data/tracks/scala/testgen/src/main/scala/ForthTestGenerator.scala +6 -6
- data/tracks/scala/testgen/src/main/scala/GigasecondTestGenerator.scala +6 -4
- data/tracks/scala/testgen/src/main/scala/HammingTestGenerator.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/HouseTestGenerator.scala +10 -16
- data/tracks/scala/testgen/src/main/scala/IsogramTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/KindergartenGardenTestGenerator.scala +6 -5
- data/tracks/scala/testgen/src/main/scala/LeapTestGenerator.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/LuhnTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/MatrixTestGenerator.scala +35 -0
- data/tracks/scala/testgen/src/main/scala/MeetupTestGenerator.scala +14 -11
- data/tracks/scala/testgen/src/main/scala/MinesweeperTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/SeriesTestGenerator.scala +3 -3
- data/tracks/typescript/config/exercise_readme.go.tmpl +25 -4
- data/tracks/typescript/exercises/acronym/README.md +7 -2
- data/tracks/typescript/exercises/atbash-cipher/README.md +2 -1
- data/tracks/typescript/exercises/beer-song/README.md +2 -2
- data/tracks/typescript/exercises/binary-search-tree/README.md +2 -0
- data/tracks/typescript/exercises/circular-buffer/README.md +16 -7
- data/tracks/typescript/exercises/clock/README.md +6 -0
- data/tracks/typescript/exercises/diamond/README.md +8 -7
- data/tracks/typescript/exercises/etl/README.md +3 -1
- data/tracks/typescript/exercises/food-chain/README.md +1 -1
- data/tracks/typescript/exercises/grade-school/README.md +0 -1
- data/tracks/typescript/exercises/hello-world/.meta/hints.md +378 -0
- data/tracks/typescript/exercises/hello-world/README.md +37 -11
- data/tracks/typescript/exercises/largest-series-product/README.md +1 -6
- data/tracks/typescript/exercises/leap/README.md +1 -1
- data/tracks/typescript/exercises/linked-list/README.md +20 -15
- data/tracks/typescript/exercises/nth-prime/README.md +7 -2
- data/tracks/typescript/exercises/ocr-numbers/README.md +7 -6
- data/tracks/typescript/exercises/pangram/README.md +1 -1
- data/tracks/typescript/exercises/pascals-triangle/README.md +1 -1
- data/tracks/typescript/exercises/phone-number/README.md +4 -3
- data/tracks/typescript/exercises/prime-factors/README.md +1 -12
- data/tracks/typescript/exercises/pythagorean-triplet/README.md +3 -7
- data/tracks/typescript/exercises/rna-transcription/README.md +2 -2
- data/tracks/typescript/exercises/robot-simulator/README.md +3 -1
- data/tracks/typescript/exercises/scrabble-score/README.md +3 -1
- data/tracks/typescript/exercises/series/README.md +0 -4
- data/tracks/typescript/exercises/space-age/README.md +1 -1
- data/tracks/typescript/exercises/strain/README.md +6 -0
- data/tracks/typescript/exercises/sum-of-multiples/README.md +4 -7
- data/tracks/typescript/exercises/two-bucket/README.md +15 -19
- data/tracks/typescript/exercises/word-count/README.md +1 -2
- data/tracks/typescript/exercises/wordy/README.md +0 -5
- metadata +61 -5
- data/tracks/common-lisp/exercises/bob/.meta/description.md +0 -10
- data/tracks/javascript/.eslintrc.json +0 -10
- data/tracks/typescript/docs/EXERCISE_README_INSERT.md +0 -24
@@ -4,93 +4,131 @@ interface
|
|
4
4
|
uses
|
5
5
|
DUnitX.TestFramework;
|
6
6
|
|
7
|
+
const
|
8
|
+
CanonicalVersion = '1.1.0';
|
9
|
+
|
7
10
|
type
|
8
11
|
|
9
12
|
[TestFixture]
|
10
13
|
PokerTest = class(TObject)
|
11
14
|
public
|
12
15
|
[Test]
|
13
|
-
//
|
14
|
-
procedure
|
16
|
+
// [Ignore('Comment the "[Ignore]" statement to run the test')]
|
17
|
+
procedure Single_hand_always_wins;
|
18
|
+
|
19
|
+
[Test]
|
20
|
+
[Ignore]
|
21
|
+
procedure Highest_card_out_of_all_hands_wins;
|
22
|
+
|
23
|
+
[Test]
|
24
|
+
[Ignore]
|
25
|
+
procedure A_tie_has_multiple_winners;
|
26
|
+
|
27
|
+
[Test]
|
28
|
+
[Ignore]
|
29
|
+
procedure Multiple_hands_with_the_same_high_cards_tie_compares_next_highest_ranked_down_to_last_card;
|
30
|
+
|
31
|
+
[Test]
|
32
|
+
[Ignore]
|
33
|
+
procedure One_pair_beats_high_card;
|
34
|
+
|
35
|
+
[Test]
|
36
|
+
[Ignore]
|
37
|
+
procedure Highest_pair_wins;
|
38
|
+
|
39
|
+
[Test]
|
40
|
+
[Ignore]
|
41
|
+
procedure Two_pairs_beats_one_pair;
|
42
|
+
|
43
|
+
[Test]
|
44
|
+
[Ignore]
|
45
|
+
procedure Both_hands_have_two_pairs_highest_ranked_pair_wins;
|
46
|
+
|
47
|
+
[Test]
|
48
|
+
[Ignore]
|
49
|
+
procedure Both_hands_have_two_pairs_with_the_same_highest_ranked_pair_tie_goes_to_low_pair;
|
50
|
+
|
51
|
+
[Test]
|
52
|
+
[Ignore]
|
53
|
+
procedure Both_hands_have_two_identically_ranked_pairs_tie_goes_to_remaining_card_kicker;
|
15
54
|
|
16
55
|
[Test]
|
17
56
|
[Ignore]
|
18
|
-
procedure
|
57
|
+
procedure Three_of_a_kind_beats_two_pair;
|
19
58
|
|
20
59
|
[Test]
|
21
60
|
[Ignore]
|
22
|
-
procedure
|
61
|
+
procedure Both_hands_have_three_of_a_kind_tie_goes_to_highest_ranked_triplet;
|
23
62
|
|
24
63
|
[Test]
|
25
64
|
[Ignore]
|
26
|
-
procedure
|
65
|
+
procedure With_multiple_decks_two_players_can_have_same_three_of_a_kind_ties_go_to_highest_remaining_cards;
|
27
66
|
|
28
67
|
[Test]
|
29
68
|
[Ignore]
|
30
|
-
procedure
|
69
|
+
procedure A_straight_beats_three_of_a_kind;
|
31
70
|
|
32
71
|
[Test]
|
33
72
|
[Ignore]
|
34
|
-
procedure
|
73
|
+
procedure Aces_can_end_a_straight_10_J_Q_K_A;
|
35
74
|
|
36
75
|
[Test]
|
37
76
|
[Ignore]
|
38
|
-
procedure
|
77
|
+
procedure Aces_can_start_a_straight_A_2_3_4_5;
|
39
78
|
|
40
79
|
[Test]
|
41
80
|
[Ignore]
|
42
|
-
procedure
|
81
|
+
procedure Both_hands_with_a_straight_tie_goes_to_highest_ranked_card;
|
43
82
|
|
44
83
|
[Test]
|
45
84
|
[Ignore]
|
46
|
-
procedure
|
85
|
+
procedure Even_though_an_ace_is_usually_high_a_5_high_straight_is_the_lowest_scoring_straight;
|
47
86
|
|
48
87
|
[Test]
|
49
88
|
[Ignore]
|
50
|
-
procedure
|
89
|
+
procedure Flush_beats_a_straight;
|
51
90
|
|
52
91
|
[Test]
|
53
92
|
[Ignore]
|
54
|
-
procedure
|
93
|
+
procedure Both_hands_have_a_flush_tie_goes_to_high_card_down_to_the_last_one_if_necessary;
|
55
94
|
|
56
95
|
[Test]
|
57
96
|
[Ignore]
|
58
|
-
procedure
|
97
|
+
procedure Full_house_beats_a_flush;
|
59
98
|
|
60
99
|
[Test]
|
61
100
|
[Ignore]
|
62
|
-
procedure
|
101
|
+
procedure Both_hands_have_a_full_house_tie_goes_to_highest_ranked_triplet;
|
63
102
|
|
64
103
|
[Test]
|
65
104
|
[Ignore]
|
66
|
-
procedure
|
105
|
+
procedure With_multiple_decks_both_hands_have_a_full_house_with_the_same_triplet_tie_goes_to_the_pair;
|
67
106
|
|
68
107
|
[Test]
|
69
108
|
[Ignore]
|
70
|
-
procedure
|
109
|
+
procedure Four_of_a_kind_beats_a_full_house;
|
71
110
|
|
72
111
|
[Test]
|
73
112
|
[Ignore]
|
74
|
-
procedure
|
113
|
+
procedure Both_hands_have_four_of_a_kind_tie_goes_to_high_quad;
|
75
114
|
|
76
115
|
[Test]
|
77
116
|
[Ignore]
|
78
|
-
procedure
|
117
|
+
procedure With_multiple_decks_both_hands_with_identical_four_of_a_kind_tie_determined_by_kicker;
|
79
118
|
|
80
119
|
[Test]
|
81
120
|
[Ignore]
|
82
|
-
procedure
|
121
|
+
procedure Straight_flush_beats_four_of_a_kind;
|
83
122
|
|
84
123
|
[Test]
|
85
124
|
[Ignore]
|
86
|
-
procedure
|
125
|
+
procedure Both_hands_have_straight_flush_tie_goes_to_highest_ranked_card;
|
87
126
|
end;
|
88
127
|
|
89
128
|
implementation
|
90
129
|
uses Generics.Collections, uPoker;
|
91
130
|
|
92
|
-
procedure PokerTest.
|
93
|
-
const hand: string = '5S 4S 7H 8D JC';
|
131
|
+
procedure PokerTest.Single_hand_always_wins;
|
94
132
|
var expectedHands,
|
95
133
|
inputHands: TList<string>;
|
96
134
|
ActualHands: TList<string>;
|
@@ -99,9 +137,9 @@ var expectedHands,
|
|
99
137
|
i: integer;
|
100
138
|
begin
|
101
139
|
inputHands := TList<string>.Create;
|
102
|
-
inputHands.AddRange(
|
140
|
+
inputHands.AddRange(['5S 4S 7H 8D JC']);
|
103
141
|
expectedHands := TList<string>.Create;
|
104
|
-
expectedHands.AddRange(
|
142
|
+
expectedHands.AddRange(['5S 4S 7H 8D JC']);
|
105
143
|
|
106
144
|
ActualHands := Poker.BestHands(inputHands);
|
107
145
|
|
@@ -112,9 +150,7 @@ begin
|
|
112
150
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
113
151
|
end;
|
114
152
|
|
115
|
-
procedure PokerTest.
|
116
|
-
const nothing: string = '4S 5H 6S 8D JH';
|
117
|
-
pairOf4: string = '2S 4H 6S 4D JH';
|
153
|
+
procedure PokerTest.Highest_card_out_of_all_hands_wins;
|
118
154
|
var expectedHands,
|
119
155
|
inputHands: TList<string>;
|
120
156
|
ActualHands: TList<string>;
|
@@ -123,9 +159,11 @@ var expectedHands,
|
|
123
159
|
i: integer;
|
124
160
|
begin
|
125
161
|
inputHands := TList<string>.Create;
|
126
|
-
inputHands.AddRange([
|
162
|
+
inputHands.AddRange(['4D 5S 6S 8D 3C',
|
163
|
+
'2S 4C 7S 9H 10H',
|
164
|
+
'3S 4S 5D 6H JH']);
|
127
165
|
expectedHands := TList<string>.Create;
|
128
|
-
expectedHands.AddRange(
|
166
|
+
expectedHands.AddRange(['3S 4S 5D 6H JH']);
|
129
167
|
|
130
168
|
ActualHands := Poker.BestHands(inputHands);
|
131
169
|
|
@@ -136,9 +174,7 @@ begin
|
|
136
174
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
137
175
|
end;
|
138
176
|
|
139
|
-
procedure PokerTest.
|
140
|
-
const pairOf2: string = '4S 2H 6D 2D JD';
|
141
|
-
pairOf4: string = '2S 4H 6S 4D JH';
|
177
|
+
procedure PokerTest.A_tie_has_multiple_winners;
|
142
178
|
var expectedHands,
|
143
179
|
inputHands: TList<string>;
|
144
180
|
ActualHands: TList<string>;
|
@@ -147,9 +183,13 @@ var expectedHands,
|
|
147
183
|
i: integer;
|
148
184
|
begin
|
149
185
|
inputHands := TList<string>.create;
|
150
|
-
inputHands.AddRange([
|
186
|
+
inputHands.AddRange(['4D 5S 6S 8D 3C',
|
187
|
+
'2S 4C 7S 9H 10H',
|
188
|
+
'3S 4S 5D 6H JH',
|
189
|
+
'3H 4H 5C 6C JD']);
|
151
190
|
expectedHands := TList<string>.Create;
|
152
|
-
expectedHands.AddRange(
|
191
|
+
expectedHands.AddRange(['3S 4S 5D 6H JH',
|
192
|
+
'3H 4H 5C 6C JD']);
|
153
193
|
|
154
194
|
ActualHands := Poker.BestHands(inputHands);
|
155
195
|
|
@@ -160,9 +200,7 @@ begin
|
|
160
200
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
161
201
|
end;
|
162
202
|
|
163
|
-
procedure PokerTest.
|
164
|
-
const pairOf8: string = '2S 8H 6S 8D JH';
|
165
|
-
doublePair: string = '4C 5C 4S 8D 5H';
|
203
|
+
procedure PokerTest.Multiple_hands_with_the_same_high_cards_tie_compares_next_highest_ranked_down_to_last_card;
|
166
204
|
var expectedHands,
|
167
205
|
inputHands: TList<string>;
|
168
206
|
ActualHands: TList<string>;
|
@@ -171,10 +209,11 @@ var expectedHands,
|
|
171
209
|
i: integer;
|
172
210
|
begin
|
173
211
|
inputHands := TList<string>.Create;
|
174
|
-
inputHands.AddRange([
|
212
|
+
inputHands.AddRange(['3S 5H 6S 8D 7H',
|
213
|
+
'2S 5D 6D 8C 7S']);
|
175
214
|
|
176
215
|
expectedHands := TList<string>.Create;
|
177
|
-
expectedHands.
|
216
|
+
expectedHands.AddRange(['3S 5H 6S 8D 7H']);
|
178
217
|
|
179
218
|
ActualHands := Poker.BestHands(inputHands);
|
180
219
|
|
@@ -185,9 +224,7 @@ begin
|
|
185
224
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
186
225
|
end;
|
187
226
|
|
188
|
-
procedure PokerTest.
|
189
|
-
const doublePair2And8: string = '2D 8H 2S 8D JH';
|
190
|
-
doublePair4And5: string = '4S 5C 4C 8D 5H';
|
227
|
+
procedure PokerTest.One_pair_beats_high_card;
|
191
228
|
var expectedHands,
|
192
229
|
inputHands: TList<string>;
|
193
230
|
ActualHands: TList<string>;
|
@@ -196,10 +233,11 @@ var expectedHands,
|
|
196
233
|
i: integer;
|
197
234
|
begin
|
198
235
|
inputHands := TList<string>.Create;
|
199
|
-
inputHands.AddRange([
|
236
|
+
inputHands.AddRange(['4S 5H 6C 8D KH',
|
237
|
+
'2S 4H 6S 4D JH']);
|
200
238
|
|
201
239
|
expectedHands := TList<string>.Create;
|
202
|
-
expectedHands.
|
240
|
+
expectedHands.AddRange(['2S 4H 6S 4D JH']);
|
203
241
|
|
204
242
|
ActualHands := Poker.BestHands(inputHands);
|
205
243
|
|
@@ -210,9 +248,7 @@ begin
|
|
210
248
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
211
249
|
end;
|
212
250
|
|
213
|
-
procedure PokerTest.
|
214
|
-
const doublePair2And8: string = '2D 8H 2S 8D JH';
|
215
|
-
threeOf4: string = '4D 5H 4S 8D 4H';
|
251
|
+
procedure PokerTest.Highest_pair_wins;
|
216
252
|
var expectedHands,
|
217
253
|
inputHands: TList<string>;
|
218
254
|
ActualHands: TList<string>;
|
@@ -221,10 +257,11 @@ var expectedHands,
|
|
221
257
|
i: integer;
|
222
258
|
begin
|
223
259
|
inputHands := TList<string>.Create;
|
224
|
-
inputHands.AddRange([
|
260
|
+
inputHands.AddRange(['4S 2H 6S 2D JH',
|
261
|
+
'2S 4H 6C 4D JD']);
|
225
262
|
|
226
263
|
expectedHands := TList<string>.Create;
|
227
|
-
expectedHands.
|
264
|
+
expectedHands.AddRange(['2S 4H 6C 4D JD']);
|
228
265
|
|
229
266
|
ActualHands := Poker.BestHands(inputHands);
|
230
267
|
|
@@ -235,9 +272,7 @@ begin
|
|
235
272
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
236
273
|
end;
|
237
274
|
|
238
|
-
procedure PokerTest.
|
239
|
-
const threeOf2: string = '2S 2H 2S 8D JH';
|
240
|
-
threeOf1: string = '4S AH AS 8D AH';
|
275
|
+
procedure PokerTest.Two_pairs_beats_one_pair;
|
241
276
|
var expectedHands,
|
242
277
|
inputHands: TList<string>;
|
243
278
|
ActualHands: TList<string>;
|
@@ -246,10 +281,11 @@ var expectedHands,
|
|
246
281
|
i: integer;
|
247
282
|
begin
|
248
283
|
inputHands := TList<string>.Create;
|
249
|
-
inputHands.AddRange([
|
284
|
+
inputHands.AddRange(['2S 8H 6S 8D JH',
|
285
|
+
'4S 5H 4C 8C 5C']);
|
250
286
|
|
251
287
|
expectedHands := TList<string>.Create;
|
252
|
-
expectedHands.
|
288
|
+
expectedHands.AddRange(['4S 5H 4C 8C 5C']);
|
253
289
|
|
254
290
|
ActualHands := Poker.BestHands(inputHands);
|
255
291
|
|
@@ -260,9 +296,7 @@ begin
|
|
260
296
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
261
297
|
end;
|
262
298
|
|
263
|
-
procedure PokerTest.
|
264
|
-
const threeOf4: string = '4S 5D 4C 8D 4H';
|
265
|
-
straight: string = '3S 4D 2S 6D 5H';
|
299
|
+
procedure PokerTest.Both_hands_have_two_pairs_highest_ranked_pair_wins;
|
266
300
|
var expectedHands,
|
267
301
|
inputHands: TList<string>;
|
268
302
|
ActualHands: TList<string>;
|
@@ -271,10 +305,11 @@ var expectedHands,
|
|
271
305
|
i: integer;
|
272
306
|
begin
|
273
307
|
inputHands := TList<string>.Create;
|
274
|
-
inputHands.AddRange([
|
308
|
+
inputHands.AddRange(['2S 8H 2D 8D 3H',
|
309
|
+
'4S 5H 4C 8S 5D']);
|
275
310
|
|
276
311
|
expectedHands := TList<string>.Create;
|
277
|
-
expectedHands.
|
312
|
+
expectedHands.AddRange(['2S 8H 2D 8D 3H']);
|
278
313
|
|
279
314
|
ActualHands := Poker.BestHands(inputHands);
|
280
315
|
|
@@ -285,11 +320,7 @@ begin
|
|
285
320
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
286
321
|
end;
|
287
322
|
|
288
|
-
procedure PokerTest.
|
289
|
-
const straightTo8: string = '4S 6H 7S 8D 5H';
|
290
|
-
straightTo9: string = '5S 7H 8S 9D 6H';
|
291
|
-
straightTo1: string = 'AS QH KS TD JH';
|
292
|
-
straightTo5: string = '4S AH 3S 2D 5H';
|
323
|
+
procedure PokerTest.Both_hands_have_two_pairs_with_the_same_highest_ranked_pair_tie_goes_to_low_pair;
|
293
324
|
var expectedHands,
|
294
325
|
inputHands: TList<string>;
|
295
326
|
ActualHands: TList<string>;
|
@@ -298,10 +329,11 @@ var expectedHands,
|
|
298
329
|
i: integer;
|
299
330
|
begin
|
300
331
|
inputHands := TList<string>.Create;
|
301
|
-
inputHands.AddRange([
|
332
|
+
inputHands.AddRange(['2S QS 2C QD JH',
|
333
|
+
'JD QH JS 8D QC']);
|
302
334
|
|
303
335
|
expectedHands := TList<string>.Create;
|
304
|
-
expectedHands.
|
336
|
+
expectedHands.AddRange(['JD QH JS 8D QC']);
|
305
337
|
|
306
338
|
ActualHands := Poker.BestHands(inputHands);
|
307
339
|
|
@@ -310,12 +342,22 @@ begin
|
|
310
342
|
Assert.AreEqual(expectedHands.Count,ActualHands.Count);
|
311
343
|
for i := Low(expectedHandsArray) to High(expectedHandsArray) do
|
312
344
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
345
|
+
end;
|
313
346
|
|
314
|
-
|
315
|
-
|
347
|
+
procedure PokerTest.Both_hands_have_two_identically_ranked_pairs_tie_goes_to_remaining_card_kicker;
|
348
|
+
var expectedHands,
|
349
|
+
inputHands: TList<string>;
|
350
|
+
ActualHands: TList<string>;
|
351
|
+
expectedHandsArray,
|
352
|
+
ActualHandsArray: TArray<string>;
|
353
|
+
i: integer;
|
354
|
+
begin
|
355
|
+
inputHands := TList<string>.Create;
|
356
|
+
inputHands.AddRange(['JD QH JS 8D QC',
|
357
|
+
'JS QS JC 2D QD']);
|
316
358
|
|
317
|
-
expectedHands
|
318
|
-
expectedHands.
|
359
|
+
expectedHands := TList<string>.Create;
|
360
|
+
expectedHands.AddRange(['JD QH JS 8D QC']);
|
319
361
|
|
320
362
|
ActualHands := Poker.BestHands(inputHands);
|
321
363
|
|
@@ -326,9 +368,7 @@ begin
|
|
326
368
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
327
369
|
end;
|
328
370
|
|
329
|
-
procedure PokerTest.
|
330
|
-
const straightTo8: string = '4S 6H 7S 8D 5H';
|
331
|
-
flushTo7: string = '2S 4S 5S 6S 7S';
|
371
|
+
procedure PokerTest.Three_of_a_kind_beats_two_pair;
|
332
372
|
var expectedHands,
|
333
373
|
inputHands: TList<string>;
|
334
374
|
ActualHands: TList<string>;
|
@@ -337,10 +377,11 @@ var expectedHands,
|
|
337
377
|
i: integer;
|
338
378
|
begin
|
339
379
|
inputHands := TList<string>.Create;
|
340
|
-
inputHands.AddRange([
|
380
|
+
inputHands.AddRange(['2S 8H 2H 8D JH',
|
381
|
+
'4S 5H 4C 8S 4H']);
|
341
382
|
|
342
383
|
expectedHands := TList<string>.Create;
|
343
|
-
expectedHands.
|
384
|
+
expectedHands.AddRange(['4S 5H 4C 8S 4H']);
|
344
385
|
|
345
386
|
ActualHands := Poker.BestHands(inputHands);
|
346
387
|
|
@@ -351,9 +392,7 @@ begin
|
|
351
392
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
352
393
|
end;
|
353
394
|
|
354
|
-
procedure PokerTest.
|
355
|
-
const flushTo8: string = '3H 6H 7H 8H 5H';
|
356
|
-
flushTo7: string = '2S 4S 5S 6S 7S';
|
395
|
+
procedure PokerTest.Both_hands_have_three_of_a_kind_tie_goes_to_highest_ranked_triplet;
|
357
396
|
var expectedHands,
|
358
397
|
inputHands: TList<string>;
|
359
398
|
ActualHands: TList<string>;
|
@@ -362,10 +401,11 @@ var expectedHands,
|
|
362
401
|
i: integer;
|
363
402
|
begin
|
364
403
|
inputHands := TList<string>.Create;
|
365
|
-
inputHands.AddRange([
|
404
|
+
inputHands.AddRange(['2S 2H 2C 8D JH',
|
405
|
+
'4S AH AS 8C AD']);
|
366
406
|
|
367
407
|
expectedHands := TList<string>.Create;
|
368
|
-
expectedHands.
|
408
|
+
expectedHands.AddRange(['4S AH AS 8C AD']);
|
369
409
|
|
370
410
|
ActualHands := Poker.BestHands(inputHands);
|
371
411
|
|
@@ -376,9 +416,7 @@ begin
|
|
376
416
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
377
417
|
end;
|
378
418
|
|
379
|
-
procedure PokerTest.
|
380
|
-
const flushTo8: string = '3H 6H 7H 8H 5H';
|
381
|
-
full: string = '4S 5H 4S 5D 4H';
|
419
|
+
procedure PokerTest.With_multiple_decks_two_players_can_have_same_three_of_a_kind_ties_go_to_highest_remaining_cards;
|
382
420
|
var expectedHands,
|
383
421
|
inputHands: TList<string>;
|
384
422
|
ActualHands: TList<string>;
|
@@ -387,10 +425,11 @@ var expectedHands,
|
|
387
425
|
i: integer;
|
388
426
|
begin
|
389
427
|
inputHands := TList<string>.Create;
|
390
|
-
inputHands.AddRange([
|
428
|
+
inputHands.AddRange(['4S AH AS 7C AD',
|
429
|
+
'4S AH AS 8C AD']);
|
391
430
|
|
392
431
|
expectedHands := TList<string>.Create;
|
393
|
-
expectedHands.
|
432
|
+
expectedHands.AddRange(['4S AH AS 8C AD']);
|
394
433
|
|
395
434
|
ActualHands := Poker.BestHands(inputHands);
|
396
435
|
|
@@ -401,9 +440,7 @@ begin
|
|
401
440
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
402
441
|
end;
|
403
442
|
|
404
|
-
procedure PokerTest.
|
405
|
-
const fullOf4By9: string = '4H 4S 4D 9S 9D';
|
406
|
-
fullOf5By8: string = '5H 5S 5D 8S 8D';
|
443
|
+
procedure PokerTest.A_straight_beats_three_of_a_kind;
|
407
444
|
var expectedHands,
|
408
445
|
inputHands: TList<string>;
|
409
446
|
ActualHands: TList<string>;
|
@@ -412,10 +449,11 @@ var expectedHands,
|
|
412
449
|
i: integer;
|
413
450
|
begin
|
414
451
|
inputHands := TList<string>.Create;
|
415
|
-
inputHands.AddRange([
|
452
|
+
inputHands.AddRange(['4S 5H 4C 8D 4H',
|
453
|
+
'3S 4D 2S 6D 5C']);
|
416
454
|
|
417
455
|
expectedHands := TList<string>.Create;
|
418
|
-
expectedHands.
|
456
|
+
expectedHands.AddRange(['3S 4D 2S 6D 5C']);
|
419
457
|
|
420
458
|
ActualHands := Poker.BestHands(inputHands);
|
421
459
|
|
@@ -426,9 +464,7 @@ begin
|
|
426
464
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
427
465
|
end;
|
428
466
|
|
429
|
-
procedure PokerTest.
|
430
|
-
const full: string = '4S 5H 4S 5D 4H';
|
431
|
-
squareOf3: string = '3S 3H 2S 3D 3H';
|
467
|
+
procedure PokerTest.Aces_can_end_a_straight_10_J_Q_K_A;
|
432
468
|
var expectedHands,
|
433
469
|
inputHands: TList<string>;
|
434
470
|
ActualHands: TList<string>;
|
@@ -437,10 +473,11 @@ var expectedHands,
|
|
437
473
|
i: integer;
|
438
474
|
begin
|
439
475
|
inputHands := TList<string>.Create;
|
440
|
-
inputHands.AddRange([
|
476
|
+
inputHands.AddRange(['4S 5H 4C 8D 4H',
|
477
|
+
'10D JH QS KD AC']);
|
441
478
|
|
442
479
|
expectedHands := TList<string>.Create;
|
443
|
-
expectedHands.
|
480
|
+
expectedHands.AddRange(['10D JH QS KD AC']);
|
444
481
|
|
445
482
|
ActualHands := Poker.BestHands(inputHands);
|
446
483
|
|
@@ -451,9 +488,7 @@ begin
|
|
451
488
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
452
489
|
end;
|
453
490
|
|
454
|
-
procedure PokerTest.
|
455
|
-
const squareOf2: string = '2S 2H 2S 8D 2H';
|
456
|
-
squareOf5: string = '4S 5H 5S 5D 5H';
|
491
|
+
procedure PokerTest.Aces_can_start_a_straight_A_2_3_4_5;
|
457
492
|
var expectedHands,
|
458
493
|
inputHands: TList<string>;
|
459
494
|
ActualHands: TList<string>;
|
@@ -462,10 +497,11 @@ var expectedHands,
|
|
462
497
|
i: integer;
|
463
498
|
begin
|
464
499
|
inputHands := TList<string>.Create;
|
465
|
-
inputHands.AddRange([
|
500
|
+
inputHands.AddRange(['4S 5H 4C 8D 4H',
|
501
|
+
'4D AH 3S 2D 5C']);
|
466
502
|
|
467
503
|
expectedHands := TList<string>.Create;
|
468
|
-
expectedHands.
|
504
|
+
expectedHands.AddRange(['4D AH 3S 2D 5C']);
|
469
505
|
|
470
506
|
ActualHands := Poker.BestHands(inputHands);
|
471
507
|
|
@@ -476,9 +512,7 @@ begin
|
|
476
512
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
477
513
|
end;
|
478
514
|
|
479
|
-
procedure PokerTest.
|
480
|
-
const squareOf5: string = '4S 5H 5S 5D 5H';
|
481
|
-
straightFlushTo9: string = '5S 7S 8S 9S 6S';
|
515
|
+
procedure PokerTest.Both_hands_with_a_straight_tie_goes_to_highest_ranked_card;
|
482
516
|
var expectedHands,
|
483
517
|
inputHands: TList<string>;
|
484
518
|
ActualHands: TList<string>;
|
@@ -487,10 +521,11 @@ var expectedHands,
|
|
487
521
|
i: integer;
|
488
522
|
begin
|
489
523
|
inputHands := TList<string>.Create;
|
490
|
-
inputHands.AddRange([
|
524
|
+
inputHands.AddRange(['4S 6C 7S 8D 5H',
|
525
|
+
'5S 7H 8S 9D 6H']);
|
491
526
|
|
492
527
|
expectedHands := TList<string>.Create;
|
493
|
-
expectedHands.
|
528
|
+
expectedHands.AddRange(['5S 7H 8S 9D 6H']);
|
494
529
|
|
495
530
|
ActualHands := Poker.BestHands(inputHands);
|
496
531
|
|
@@ -501,9 +536,7 @@ begin
|
|
501
536
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
502
537
|
end;
|
503
538
|
|
504
|
-
procedure PokerTest.
|
505
|
-
const straightFlushTo8: string = '4H 6H 7H 8H 5H';
|
506
|
-
straightFlushTo9: string = '5S 7S 8S 9S 6S';
|
539
|
+
procedure PokerTest.Even_though_an_ace_is_usually_high_a_5_high_straight_is_the_lowest_scoring_straight;
|
507
540
|
var expectedHands,
|
508
541
|
inputHands: TList<string>;
|
509
542
|
ActualHands: TList<string>;
|
@@ -512,10 +545,11 @@ var expectedHands,
|
|
512
545
|
i: integer;
|
513
546
|
begin
|
514
547
|
inputHands := TList<string>.Create;
|
515
|
-
inputHands.AddRange([
|
548
|
+
inputHands.AddRange(['2H 3C 4D 5D 6H',
|
549
|
+
'4S AH 3S 2D 5H']);
|
516
550
|
|
517
551
|
expectedHands := TList<string>.Create;
|
518
|
-
expectedHands.
|
552
|
+
expectedHands.AddRange(['2H 3C 4D 5D 6H']);
|
519
553
|
|
520
554
|
ActualHands := Poker.BestHands(inputHands);
|
521
555
|
|
@@ -526,10 +560,7 @@ begin
|
|
526
560
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
527
561
|
end;
|
528
562
|
|
529
|
-
procedure PokerTest.
|
530
|
-
const spadeStraightTo9: string = '9S 8S 7S 6S 5S';
|
531
|
-
diamondStraightTo9: string = '9D 8D 7D 6D 5D';
|
532
|
-
threeOf4: string = '4D 4S 4H QS KS';
|
563
|
+
procedure PokerTest.Flush_beats_a_straight;
|
533
564
|
var expectedHands,
|
534
565
|
inputHands: TList<string>;
|
535
566
|
ActualHands: TList<string>;
|
@@ -538,10 +569,11 @@ var expectedHands,
|
|
538
569
|
i: integer;
|
539
570
|
begin
|
540
571
|
inputHands := TList<string>.Create;
|
541
|
-
inputHands.AddRange([
|
572
|
+
inputHands.AddRange(['4C 6H 7D 8D 5H',
|
573
|
+
'2S 4S 5S 6S 7S']);
|
542
574
|
|
543
575
|
expectedHands := TList<string>.Create;
|
544
|
-
expectedHands.AddRange([
|
576
|
+
expectedHands.AddRange(['2S 4S 5S 6S 7S']);
|
545
577
|
|
546
578
|
ActualHands := Poker.BestHands(inputHands);
|
547
579
|
|
@@ -552,9 +584,7 @@ begin
|
|
552
584
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
553
585
|
end;
|
554
586
|
|
555
|
-
procedure PokerTest.
|
556
|
-
const straightTo5: string = '2S 4D 5C 3S AS';
|
557
|
-
twoJacks: string = 'JD 8D 7D JC 5D';
|
587
|
+
procedure PokerTest.Both_hands_have_a_flush_tie_goes_to_high_card_down_to_the_last_one_if_necessary;
|
558
588
|
var expectedHands,
|
559
589
|
inputHands: TList<string>;
|
560
590
|
ActualHands: TList<string>;
|
@@ -563,10 +593,11 @@ var expectedHands,
|
|
563
593
|
i: integer;
|
564
594
|
begin
|
565
595
|
inputHands := TList<string>.Create;
|
566
|
-
inputHands.AddRange([
|
596
|
+
inputHands.AddRange(['4H 7H 8H 9H 6H',
|
597
|
+
'2S 4S 5S 6S 7S']);
|
567
598
|
|
568
599
|
expectedHands := TList<string>.Create;
|
569
|
-
expectedHands.AddRange(
|
600
|
+
expectedHands.AddRange(['4H 7H 8H 9H 6H']);
|
570
601
|
|
571
602
|
ActualHands := Poker.BestHands(inputHands);
|
572
603
|
|
@@ -577,6 +608,197 @@ begin
|
|
577
608
|
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
578
609
|
end;
|
579
610
|
|
611
|
+
procedure PokerTest.Full_house_beats_a_flush;
|
612
|
+
var expectedHands,
|
613
|
+
inputHands: TList<string>;
|
614
|
+
ActualHands: TList<string>;
|
615
|
+
expectedHandsArray,
|
616
|
+
ActualHandsArray: TArray<string>;
|
617
|
+
i: integer;
|
618
|
+
begin
|
619
|
+
inputHands := TList<string>.Create;
|
620
|
+
inputHands.AddRange(['3H 6H 7H 8H 5H',
|
621
|
+
'4S 5H 4C 5D 4H']);
|
622
|
+
|
623
|
+
expectedHands := TList<string>.Create;
|
624
|
+
expectedHands.AddRange(['4S 5H 4C 5D 4H']);
|
625
|
+
|
626
|
+
ActualHands := Poker.BestHands(inputHands);
|
627
|
+
|
628
|
+
expectedHandsArray := expectedHands.ToArray;
|
629
|
+
ActualHandsArray := ActualHands.ToArray;
|
630
|
+
Assert.AreEqual(expectedHands.Count,ActualHands.Count);
|
631
|
+
for i := Low(expectedHandsArray) to High(expectedHandsArray) do
|
632
|
+
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
633
|
+
end;
|
634
|
+
|
635
|
+
procedure PokerTest.Both_hands_have_a_full_house_tie_goes_to_highest_ranked_triplet;
|
636
|
+
var expectedHands,
|
637
|
+
inputHands: TList<string>;
|
638
|
+
ActualHands: TList<string>;
|
639
|
+
expectedHandsArray,
|
640
|
+
ActualHandsArray: TArray<string>;
|
641
|
+
i: integer;
|
642
|
+
begin
|
643
|
+
inputHands := TList<string>.Create;
|
644
|
+
inputHands.AddRange(['4H 4S 4D 9S 9D',
|
645
|
+
'5H 5S 5D 8S 8D']);
|
646
|
+
|
647
|
+
expectedHands := TList<string>.Create;
|
648
|
+
expectedHands.AddRange(['5H 5S 5D 8S 8D']);
|
649
|
+
|
650
|
+
ActualHands := Poker.BestHands(inputHands);
|
651
|
+
|
652
|
+
expectedHandsArray := expectedHands.ToArray;
|
653
|
+
ActualHandsArray := ActualHands.ToArray;
|
654
|
+
Assert.AreEqual(expectedHands.Count,ActualHands.Count);
|
655
|
+
for i := Low(expectedHandsArray) to High(expectedHandsArray) do
|
656
|
+
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
657
|
+
end;
|
658
|
+
|
659
|
+
procedure PokerTest.With_multiple_decks_both_hands_have_a_full_house_with_the_same_triplet_tie_goes_to_the_pair;
|
660
|
+
var expectedHands,
|
661
|
+
inputHands: TList<string>;
|
662
|
+
ActualHands: TList<string>;
|
663
|
+
expectedHandsArray,
|
664
|
+
ActualHandsArray: TArray<string>;
|
665
|
+
i: integer;
|
666
|
+
begin
|
667
|
+
inputHands := TList<string>.Create;
|
668
|
+
inputHands.AddRange(['5H 5S 5D 9S 9D',
|
669
|
+
'5H 5S 5D 8S 8D']);
|
670
|
+
|
671
|
+
expectedHands := TList<string>.Create;
|
672
|
+
expectedHands.AddRange(['5H 5S 5D 9S 9D']);
|
673
|
+
|
674
|
+
ActualHands := Poker.BestHands(inputHands);
|
675
|
+
|
676
|
+
expectedHandsArray := expectedHands.ToArray;
|
677
|
+
ActualHandsArray := ActualHands.ToArray;
|
678
|
+
Assert.AreEqual(expectedHands.Count,ActualHands.Count);
|
679
|
+
for i := Low(expectedHandsArray) to High(expectedHandsArray) do
|
680
|
+
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
681
|
+
end;
|
682
|
+
|
683
|
+
procedure PokerTest.Four_of_a_kind_beats_a_full_house;
|
684
|
+
var expectedHands,
|
685
|
+
inputHands: TList<string>;
|
686
|
+
ActualHands: TList<string>;
|
687
|
+
expectedHandsArray,
|
688
|
+
ActualHandsArray: TArray<string>;
|
689
|
+
i: integer;
|
690
|
+
begin
|
691
|
+
inputHands := TList<string>.Create;
|
692
|
+
inputHands.AddRange(['4S 5H 4D 5D 4H',
|
693
|
+
'3S 3H 2S 3D 3C']);
|
694
|
+
|
695
|
+
expectedHands := TList<string>.Create;
|
696
|
+
expectedHands.AddRange(['3S 3H 2S 3D 3C']);
|
697
|
+
|
698
|
+
ActualHands := Poker.BestHands(inputHands);
|
699
|
+
|
700
|
+
expectedHandsArray := expectedHands.ToArray;
|
701
|
+
ActualHandsArray := ActualHands.ToArray;
|
702
|
+
Assert.AreEqual(expectedHands.Count,ActualHands.Count);
|
703
|
+
for i := Low(expectedHandsArray) to High(expectedHandsArray) do
|
704
|
+
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
705
|
+
end;
|
706
|
+
|
707
|
+
procedure PokerTest.Both_hands_have_four_of_a_kind_tie_goes_to_high_quad;
|
708
|
+
var expectedHands,
|
709
|
+
inputHands: TList<string>;
|
710
|
+
ActualHands: TList<string>;
|
711
|
+
expectedHandsArray,
|
712
|
+
ActualHandsArray: TArray<string>;
|
713
|
+
i: integer;
|
714
|
+
begin
|
715
|
+
inputHands := TList<string>.Create;
|
716
|
+
inputHands.AddRange(['2S 2H 2C 8D 2D', //708
|
717
|
+
'4S 5H 5S 5D 5C']); //705
|
718
|
+
|
719
|
+
expectedHands := TList<string>.Create;
|
720
|
+
expectedHands.AddRange(['4S 5H 5S 5D 5C']);
|
721
|
+
|
722
|
+
ActualHands := Poker.BestHands(inputHands);
|
723
|
+
|
724
|
+
expectedHandsArray := expectedHands.ToArray;
|
725
|
+
ActualHandsArray := ActualHands.ToArray;
|
726
|
+
Assert.AreEqual(expectedHands.Count,ActualHands.Count);
|
727
|
+
for i := Low(expectedHandsArray) to High(expectedHandsArray) do
|
728
|
+
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
729
|
+
end;
|
730
|
+
|
731
|
+
procedure PokerTest.With_multiple_decks_both_hands_with_identical_four_of_a_kind_tie_determined_by_kicker;
|
732
|
+
var expectedHands,
|
733
|
+
inputHands: TList<string>;
|
734
|
+
ActualHands: TList<string>;
|
735
|
+
expectedHandsArray,
|
736
|
+
ActualHandsArray: TArray<string>;
|
737
|
+
i: integer;
|
738
|
+
begin
|
739
|
+
inputHands := TList<string>.Create;
|
740
|
+
inputHands.AddRange(['3S 3H 2S 3D 3C',
|
741
|
+
'3S 3H 4S 3D 3C']);
|
742
|
+
|
743
|
+
expectedHands := TList<string>.Create;
|
744
|
+
expectedHands.AddRange(['3S 3H 4S 3D 3C']);
|
745
|
+
|
746
|
+
ActualHands := Poker.BestHands(inputHands);
|
747
|
+
|
748
|
+
expectedHandsArray := expectedHands.ToArray;
|
749
|
+
ActualHandsArray := ActualHands.ToArray;
|
750
|
+
Assert.AreEqual(expectedHands.Count,ActualHands.Count);
|
751
|
+
for i := Low(expectedHandsArray) to High(expectedHandsArray) do
|
752
|
+
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
753
|
+
end;
|
754
|
+
|
755
|
+
procedure PokerTest.Straight_flush_beats_four_of_a_kind;
|
756
|
+
var expectedHands,
|
757
|
+
inputHands: TList<string>;
|
758
|
+
ActualHands: TList<string>;
|
759
|
+
expectedHandsArray,
|
760
|
+
ActualHandsArray: TArray<string>;
|
761
|
+
i: integer;
|
762
|
+
begin
|
763
|
+
inputHands := TList<string>.Create;
|
764
|
+
inputHands.AddRange(['4S 5H 5S 5D 5C',
|
765
|
+
'7S 8S 9S 6S 10S']);
|
766
|
+
|
767
|
+
expectedHands := TList<string>.Create;
|
768
|
+
expectedHands.AddRange(['7S 8S 9S 6S 10S']);
|
769
|
+
|
770
|
+
ActualHands := Poker.BestHands(inputHands);
|
771
|
+
|
772
|
+
expectedHandsArray := expectedHands.ToArray;
|
773
|
+
ActualHandsArray := ActualHands.ToArray;
|
774
|
+
Assert.AreEqual(expectedHands.Count,ActualHands.Count);
|
775
|
+
for i := Low(expectedHandsArray) to High(expectedHandsArray) do
|
776
|
+
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
777
|
+
end;
|
778
|
+
|
779
|
+
procedure PokerTest.Both_hands_have_straight_flush_tie_goes_to_highest_ranked_card;
|
780
|
+
var expectedHands,
|
781
|
+
inputHands: TList<string>;
|
782
|
+
ActualHands: TList<string>;
|
783
|
+
expectedHandsArray,
|
784
|
+
ActualHandsArray: TArray<string>;
|
785
|
+
i: integer;
|
786
|
+
begin
|
787
|
+
inputHands := TList<string>.Create;
|
788
|
+
inputHands.AddRange(['4H 6H 7H 8H 5H',
|
789
|
+
'5S 7S 8S 9S 6S']);
|
790
|
+
|
791
|
+
expectedHands := TList<string>.Create;
|
792
|
+
expectedHands.AddRange(['5S 7S 8S 9S 6S']);
|
793
|
+
|
794
|
+
ActualHands := Poker.BestHands(inputHands);
|
795
|
+
|
796
|
+
expectedHandsArray := expectedHands.ToArray;
|
797
|
+
ActualHandsArray := ActualHands.ToArray;
|
798
|
+
Assert.AreEqual(expectedHands.Count,ActualHands.Count);
|
799
|
+
for i := Low(expectedHandsArray) to High(expectedHandsArray) do
|
800
|
+
Assert.AreEqual(expectedHandsArray[i], ActualHandsArray[i]);
|
801
|
+
end;
|
580
802
|
|
581
803
|
initialization
|
582
804
|
TDUnitX.RegisterTestFixture(PokerTest);
|