trackler 2.2.1.62 → 2.2.1.63
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/all-your-base/canonical-data.json +20 -29
- data/problem-specifications/exercises/forth/canonical-data.json +52 -5
- data/problem-specifications/exercises/isbn-verifier/canonical-data.json +15 -15
- data/problem-specifications/exercises/protein-translation/canonical-data.json +153 -0
- data/problem-specifications/exercises/reverse-string/canonical-data.json +39 -0
- data/problem-specifications/exercises/reverse-string/description.md +5 -0
- data/problem-specifications/exercises/reverse-string/metadata.yml +5 -0
- data/tracks/c/config.json +42 -41
- data/tracks/csharp/config.json +13 -0
- data/tracks/csharp/exercises/Exercises.sln +6 -0
- data/tracks/csharp/exercises/isbn-verifier/Example.cs +27 -0
- data/tracks/csharp/exercises/isbn-verifier/IsbnVerifier.cs +9 -0
- data/tracks/csharp/exercises/isbn-verifier/IsbnVerifier.csproj +19 -0
- data/tracks/csharp/exercises/isbn-verifier/IsbnVerifierTest.cs +84 -0
- data/tracks/csharp/exercises/isbn-verifier/README.md +40 -0
- data/tracks/csharp/generators/Exercises/IsbnVerifier.cs +15 -0
- data/tracks/delphi/config.json +28 -28
- data/tracks/erlang/config.json +10 -0
- data/tracks/erlang/exercises/accumulate/rebar.config +1 -1
- data/tracks/erlang/exercises/accumulate/test/accumulate_tests.erl +9 -7
- data/tracks/erlang/exercises/all-your-base/rebar.config +1 -1
- data/tracks/erlang/exercises/all-your-base/test/all_your_base_tests.erl +26 -24
- data/tracks/erlang/exercises/allergies/rebar.config +1 -1
- data/tracks/erlang/exercises/allergies/test/allergies_tests.erl +19 -17
- data/tracks/erlang/exercises/anagram/rebar.config +1 -3
- data/tracks/erlang/exercises/anagram/test/anagram_tests.erl +14 -12
- data/tracks/erlang/exercises/atbash-cipher/rebar.config +1 -1
- data/tracks/erlang/exercises/atbash-cipher/test/atbash_cipher_tests.erl +7 -5
- data/tracks/erlang/exercises/bank-account/rebar.config +1 -1
- data/tracks/erlang/exercises/bank-account/test/bank_account_tests.erl +52 -51
- data/tracks/erlang/exercises/beer-song/rebar.config +30 -0
- data/tracks/erlang/exercises/beer-song/test/beer_song_tests.erl +11 -10
- data/tracks/erlang/exercises/bob/rebar.config +1 -1
- data/tracks/erlang/exercises/bob/test/bob_tests.erl +33 -35
- data/tracks/erlang/exercises/circular-buffer/rebar.config +1 -1
- data/tracks/erlang/exercises/circular-buffer/test/circular_buffer_tests.erl +33 -32
- data/tracks/erlang/exercises/clock/rebar.config +1 -1
- data/tracks/erlang/exercises/clock/test/clock_tests.erl +57 -50
- data/tracks/erlang/exercises/collatz-conjecture/rebar.config +1 -1
- data/tracks/erlang/exercises/collatz-conjecture/test/collatz_conjecture_tests.erl +11 -9
- data/tracks/erlang/exercises/complex-numbers/rebar.config +1 -1
- data/tracks/erlang/exercises/complex-numbers/test/complex_numbers_tests.erl +102 -76
- data/tracks/erlang/exercises/custom-set/rebar.config +1 -1
- data/tracks/erlang/exercises/custom-set/test/custom_set_tests.erl +100 -109
- data/tracks/erlang/exercises/difference-of-squares/rebar.config +1 -1
- data/tracks/erlang/exercises/difference-of-squares/test/difference_of_squares_tests.erl +8 -7
- data/tracks/erlang/exercises/etl/rebar.config +1 -1
- data/tracks/erlang/exercises/etl/test/etl_tests.erl +6 -5
- data/tracks/erlang/exercises/gigasecond/rebar.config +1 -1
- data/tracks/erlang/exercises/gigasecond/test/gigasecond_tests.erl +9 -8
- data/tracks/erlang/exercises/grade-school/rebar.config +1 -1
- data/tracks/erlang/exercises/grade-school/test/grade_school_tests.erl +27 -23
- data/tracks/erlang/exercises/grains/rebar.config +1 -1
- data/tracks/erlang/exercises/grains/test/grains_tests.erl +7 -6
- data/tracks/erlang/exercises/hamming/rebar.config +1 -1
- data/tracks/erlang/exercises/hamming/test/hamming_tests.erl +20 -23
- data/tracks/erlang/exercises/hello-world/rebar.config +1 -1
- data/tracks/erlang/exercises/hello-world/test/hello_world_tests.erl +6 -4
- data/tracks/erlang/exercises/isogram/rebar.config +1 -1
- data/tracks/erlang/exercises/isogram/test/isogram_tests.erl +14 -12
- data/tracks/erlang/exercises/largest-series-product/rebar.config +1 -1
- data/tracks/erlang/exercises/largest-series-product/test/largest_series_product_tests.erl +22 -21
- data/tracks/erlang/exercises/leap/rebar.config +1 -1
- data/tracks/erlang/exercises/leap/test/leap_tests.erl +8 -7
- data/tracks/erlang/exercises/luhn/rebar.config +1 -1
- data/tracks/erlang/exercises/luhn/test/luhn_tests.erl +18 -16
- data/tracks/erlang/exercises/meetup/rebar.config +1 -1
- data/tracks/erlang/exercises/meetup/test/meetup_tests.erl +96 -95
- data/tracks/erlang/exercises/nucleotide-count/rebar.config +1 -1
- data/tracks/erlang/exercises/nucleotide-count/test/nucleotide_count_tests.erl +12 -11
- data/tracks/erlang/exercises/pangram/README.md +60 -0
- data/tracks/erlang/exercises/{accumulate → pangram}/include/exercism.hrl +0 -0
- data/tracks/erlang/exercises/{beer-song/rebar.conf → pangram/rebar.config} +0 -0
- data/tracks/erlang/exercises/pangram/src/example.erl +11 -0
- data/tracks/erlang/exercises/pangram/src/pangram.app.src +9 -0
- data/tracks/erlang/exercises/pangram/src/pangram.erl +8 -0
- data/tracks/erlang/exercises/pangram/test/pangram_tests.erl +38 -0
- data/tracks/erlang/exercises/parallel-letter-frequency/rebar.config +1 -1
- data/tracks/erlang/exercises/parallel-letter-frequency/test/parallel_letter_frequency_tests.erl +7 -6
- data/tracks/erlang/exercises/phone-number/rebar.config +1 -1
- data/tracks/erlang/exercises/phone-number/test/phone_number_tests.erl +13 -12
- data/tracks/erlang/exercises/rna-transcription/rebar.config +1 -1
- data/tracks/erlang/exercises/rna-transcription/test/rna_transcription_tests.erl +13 -11
- data/tracks/erlang/exercises/robot-simulator/rebar.config +1 -1
- data/tracks/erlang/exercises/robot-simulator/test/robot_simulator_tests.erl +70 -69
- data/tracks/erlang/exercises/roman-numerals/rebar.config +1 -1
- data/tracks/erlang/exercises/roman-numerals/test/roman_numerals_tests.erl +6 -5
- data/tracks/erlang/exercises/rotational-cipher/rebar.config +1 -8
- data/tracks/erlang/exercises/rotational-cipher/test/rotational_cipher_tests.erl +29 -27
- data/tracks/erlang/exercises/scrabble-score/rebar.config +1 -1
- data/tracks/erlang/exercises/scrabble-score/test/scrabble_score_tests.erl +6 -5
- data/tracks/erlang/exercises/series/rebar.config +1 -1
- data/tracks/erlang/exercises/series/test/series_tests.erl +6 -5
- data/tracks/erlang/exercises/sieve/rebar.config +1 -1
- data/tracks/erlang/exercises/sieve/test/sieve_tests.erl +10 -8
- data/tracks/erlang/exercises/space-age/rebar.config +1 -1
- data/tracks/erlang/exercises/space-age/test/space_age_tests.erl +20 -19
- data/tracks/erlang/exercises/spiral-matrix/rebar.config +1 -1
- data/tracks/erlang/exercises/spiral-matrix/test/spiral_matrix_tests.erl +12 -10
- data/tracks/erlang/exercises/strain/rebar.config +1 -1
- data/tracks/erlang/exercises/strain/test/strain_tests.erl +17 -16
- data/tracks/erlang/exercises/sum-of-multiples/rebar.config +1 -1
- data/tracks/erlang/exercises/sum-of-multiples/test/sum_of_multiples_tests.erl +16 -15
- data/tracks/erlang/exercises/triangle/rebar.config +1 -1
- data/tracks/erlang/exercises/triangle/test/triangle_tests.erl +20 -19
- data/tracks/erlang/exercises/two-fer/rebar.config +1 -1
- data/tracks/erlang/exercises/two-fer/test/two_fer_tests.erl +8 -7
- data/tracks/erlang/exercises/word-count/rebar.config +1 -1
- data/tracks/erlang/exercises/word-count/test/word_count_tests.erl +6 -5
- data/tracks/erlang/exercises/zipper/rebar.config +1 -1
- data/tracks/erlang/exercises/zipper/test/zipper_tests.erl +47 -46
- data/tracks/erlang/testgen/src/tgen.erl +8 -6
- data/tracks/erlang/testgen/src/tgen_bob.erl +1 -1
- data/tracks/erlang/testgen/src/tgen_collatz-conjecture.erl +2 -2
- data/tracks/erlang/testgen/src/tgen_complex-numbers.erl +11 -11
- data/tracks/erlang/testgen/src/tgen_custom-set.erl +14 -14
- data/tracks/erlang/testgen/src/tgen_hamming.erl +2 -2
- data/tracks/erlang/testgen/src/tgen_hello-world.erl +1 -1
- data/tracks/erlang/testgen/src/tgen_leap.erl +1 -1
- data/tracks/erlang/testgen/src/tgen_rna-transcription.erl +2 -2
- data/tracks/erlang/testgen/src/tgs.erl +6 -0
- data/tracks/fsharp/exercises/beer-song/BeerSong.fs +1 -5
- data/tracks/fsharp/exercises/beer-song/BeerSongTest.fs +342 -20
- data/tracks/fsharp/exercises/beer-song/Example.fs +16 -10
- data/tracks/fsharp/exercises/food-chain/Example.fs +1 -1
- data/tracks/fsharp/exercises/food-chain/FoodChain.fs +1 -3
- data/tracks/fsharp/exercises/food-chain/FoodChainTest.fs +11 -11
- data/tracks/fsharp/exercises/house/Example.fs +1 -1
- data/tracks/fsharp/exercises/house/House.fs +1 -3
- data/tracks/fsharp/exercises/house/HouseTest.fs +202 -202
- data/tracks/fsharp/exercises/proverb/Example.fs +9 -9
- data/tracks/fsharp/exercises/proverb/Proverb.fs +1 -3
- data/tracks/fsharp/exercises/proverb/ProverbTest.fs +50 -21
- data/tracks/fsharp/exercises/twelve-days/Example.fs +4 -4
- data/tracks/fsharp/exercises/twelve-days/TwelveDays.fs +2 -6
- data/tracks/fsharp/exercises/twelve-days/TwelveDaysTest.fs +81 -57
- data/tracks/fsharp/generators/Generators.fs +39 -15
- data/tracks/go/bin/run-generators +5 -1
- data/tracks/go/config.json +14 -2
- data/tracks/go/exercises/accumulate/example.go +2 -1
- data/tracks/go/exercises/zebra-puzzle/.meta/hints.md +24 -0
- data/tracks/go/exercises/zebra-puzzle/README.md +76 -0
- data/tracks/go/exercises/zebra-puzzle/example.go +256 -0
- data/tracks/go/exercises/zebra-puzzle/zebra_puzzle_test.go +18 -0
- data/tracks/haskell/exercises/forth/package.yaml +1 -1
- data/tracks/haskell/exercises/forth/test/Tests.hs +1 -4
- data/tracks/haskell/exercises/pascals-triangle/package.yaml +1 -1
- data/tracks/haskell/exercises/pascals-triangle/test/Tests.hs +22 -1
- data/tracks/java/POLICIES.md +3 -3
- data/tracks/java/config.json +21 -2
- data/tracks/java/exercises/atbash-cipher/.meta/src/reference/java/Atbash.java +12 -12
- data/tracks/java/exercises/protein-translation/.meta/src/reference/java/ProteinTranslator.java +47 -0
- data/tracks/java/exercises/protein-translation/.meta/version +1 -0
- data/tracks/java/exercises/protein-translation/README.md +58 -0
- data/tracks/java/exercises/protein-translation/build.gradle +18 -0
- data/tracks/java/exercises/protein-translation/src/main/java/ProteinTranslator.java +8 -0
- data/tracks/java/exercises/protein-translation/src/test/java/ProteinTranslatorTest.java +179 -0
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/javascript/.eslintignore +2 -2
- data/tracks/javascript/exercises/accumulate/example.js +1 -2
- data/tracks/javascript/exercises/grains/example.js +6 -3
- data/tracks/kotlin/exercises/beer-song/.meta/src/reference/kotlin/BeerSong.kt +3 -3
- data/tracks/kotlin/exercises/beer-song/.meta/version +1 -1
- data/tracks/kotlin/exercises/beer-song/README.md +1 -1
- data/tracks/kotlin/exercises/beer-song/src/test/kotlin/BeerSongTest.kt +6 -6
- data/tracks/kotlin/exercises/forth/.meta/version +1 -1
- data/tracks/kotlin/exercises/forth/src/test/kotlin/ForthEvaluatorTest.kt +0 -7
- data/tracks/kotlin/exercises/meetup/README.md +16 -12
- data/tracks/kotlin/exercises/nth-prime/.meta/src/reference/kotlin/Prime.kt +7 -2
- data/tracks/kotlin/exercises/nth-prime/.meta/version +1 -1
- data/tracks/kotlin/exercises/nth-prime/src/test/kotlin/PrimeTest.kt +10 -1
- data/tracks/kotlin/exercises/nucleotide-count/README.md +2 -2
- data/tracks/kotlin/exercises/pascals-triangle/.meta/src/reference/kotlin/PascalsTriangle.kt +1 -1
- data/tracks/kotlin/exercises/pascals-triangle/.meta/version +1 -1
- data/tracks/kotlin/exercises/pascals-triangle/src/test/kotlin/PascalsTriangleTest.kt +58 -1
- data/tracks/kotlin/exercises/sum-of-multiples/README.md +3 -3
- data/tracks/ocaml/exercises/forth/test.ml +1 -3
- data/tracks/ocaml/exercises/rectangles/example.ml +11 -11
- data/tracks/php/exercises/bob/example.php +2 -2
- data/tracks/purescript/config.json +3 -3
- data/tracks/python/config.json +34 -22
- data/tracks/python/exercises/alphametics/example.py +90 -34
- data/tracks/python/exercises/ocr-numbers/example.py +18 -21
- data/tracks/python/exercises/ocr-numbers/ocr_numbers.py +1 -5
- data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +124 -106
- data/tracks/python/exercises/simple-linked-list/README.md +49 -0
- data/tracks/python/exercises/simple-linked-list/example.py +67 -0
- data/tracks/python/exercises/simple-linked-list/hints.md +10 -0
- data/tracks/python/exercises/simple-linked-list/simple_linked_list.py +33 -0
- data/tracks/python/exercises/simple-linked-list/simple_linked_list_test.py +112 -0
- data/tracks/rust/README.md +2 -0
- data/tracks/rust/bin/init_exercise.py +586 -0
- data/tracks/rust/config.json +20 -10
- data/tracks/rust/exercises/book-store/.gitignore +3 -0
- data/tracks/rust/exercises/book-store/Cargo-example.toml +7 -0
- data/tracks/rust/exercises/book-store/Cargo.toml +6 -0
- data/tracks/rust/exercises/book-store/README.md +107 -0
- data/tracks/rust/exercises/book-store/example.rs +187 -0
- data/tracks/rust/exercises/book-store/src/lib.rs +3 -0
- data/tracks/rust/exercises/book-store/tests/book-store.rs +130 -0
- data/tracks/sml/config.json +8 -8
- data/tracks/typescript/config.json +6 -6
- metadata +43 -46
- data/tracks/erlang/exercises/all-your-base/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/allergies/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/anagram/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/atbash-cipher/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/bank-account/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/beer-song/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/bob/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/circular-buffer/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/clock/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/collatz-conjecture/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/complex-numbers/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/custom-set/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/difference-of-squares/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/etl/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/gigasecond/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/grade-school/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/grains/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/hamming/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/hello-world/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/isogram/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/largest-series-product/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/leap/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/luhn/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/meetup/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/nucleotide-count/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/parallel-letter-frequency/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/phone-number/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/rna-transcription/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/robot-simulator/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/roman-numerals/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/rotational-cipher/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/scrabble-score/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/series/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/sieve/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/space-age/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/spiral-matrix/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/strain/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/sum-of-multiples/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/triangle/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/two-fer/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/word-count/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/zipper/include/exercism.hrl +0 -11
@@ -1,370 +1,371 @@
|
|
1
1
|
-module(meetup_tests).
|
2
2
|
|
3
|
-
-
|
4
|
-
-
|
5
|
-
-include("exercism.hrl").
|
6
|
-
|
3
|
+
-include_lib("erl_exercism/include/exercism.hrl").
|
4
|
+
-include_lib("eunit/include/eunit.hrl").
|
7
5
|
|
8
6
|
monteenth_of_may_2013_test() ->
|
9
7
|
?assertEqual({2013, 5, 13},
|
10
|
-
|
8
|
+
meetup:schedule(2013, 5, monday, teenth)).
|
11
9
|
|
12
10
|
monteenth_of_august_2013_test() ->
|
13
11
|
?assertEqual({2013, 8, 19},
|
14
|
-
|
12
|
+
meetup:schedule(2013, 8, monday, teenth)).
|
15
13
|
|
16
14
|
monteenth_of_september_2013_test() ->
|
17
15
|
?assertEqual({2013, 9, 16},
|
18
|
-
|
16
|
+
meetup:schedule(2013, 9, monday, teenth)).
|
19
17
|
|
20
18
|
tuesteenth_of_march_2013_test() ->
|
21
19
|
?assertEqual({2013, 3, 19},
|
22
|
-
|
20
|
+
meetup:schedule(2013, 3, tuesday, teenth)).
|
23
21
|
|
24
22
|
tuesteenth_of_april_2013_test() ->
|
25
23
|
?assertEqual({2013, 4, 16},
|
26
|
-
|
24
|
+
meetup:schedule(2013, 4, tuesday, teenth)).
|
27
25
|
|
28
26
|
tuesteenth_of_august_2013_test() ->
|
29
27
|
?assertEqual({2013, 8, 13},
|
30
|
-
|
28
|
+
meetup:schedule(2013, 8, tuesday, teenth)).
|
31
29
|
|
32
30
|
wednesteenth_of_january_2013_test() ->
|
33
31
|
?assertEqual({2013, 1, 16},
|
34
|
-
|
32
|
+
meetup:schedule(2013, 1, wednesday, teenth)).
|
35
33
|
|
36
34
|
wednesteenth_of_february_2013_test() ->
|
37
35
|
?assertEqual({2013, 2, 13},
|
38
|
-
|
36
|
+
meetup:schedule(2013, 2, wednesday, teenth)).
|
39
37
|
|
40
38
|
wednesteenth_of_june_2013_test() ->
|
41
39
|
?assertEqual({2013, 6, 19},
|
42
|
-
|
40
|
+
meetup:schedule(2013, 6, wednesday, teenth)).
|
43
41
|
|
44
42
|
thursteenth_of_may_2013_test() ->
|
45
43
|
?assertEqual({2013, 5, 16},
|
46
|
-
|
44
|
+
meetup:schedule(2013, 5, thursday, teenth)).
|
47
45
|
|
48
46
|
thursteenth_of_june_2013_test() ->
|
49
47
|
?assertEqual({2013, 6, 13},
|
50
|
-
|
48
|
+
meetup:schedule(2013, 6, thursday, teenth)).
|
51
49
|
|
52
50
|
thursteenth_of_september_2013_test() ->
|
53
51
|
?assertEqual({2013, 9, 19},
|
54
|
-
|
52
|
+
meetup:schedule(2013, 9, thursday, teenth)).
|
55
53
|
|
56
54
|
friteenth_of_april_2013_test() ->
|
57
55
|
?assertEqual({2013, 4, 19},
|
58
|
-
|
56
|
+
meetup:schedule(2013, 4, friday, teenth)).
|
59
57
|
|
60
58
|
friteenth_of_august_2013_test() ->
|
61
59
|
?assertEqual({2013, 8, 16},
|
62
|
-
|
60
|
+
meetup:schedule(2013, 8, friday, teenth)).
|
63
61
|
|
64
62
|
friteenth_of_september_2013_test() ->
|
65
63
|
?assertEqual({2013, 9, 13},
|
66
|
-
|
64
|
+
meetup:schedule(2013, 9, friday, teenth)).
|
67
65
|
|
68
66
|
saturteenth_of_february_2013_test() ->
|
69
67
|
?assertEqual({2013, 2, 16},
|
70
|
-
|
68
|
+
meetup:schedule(2013, 2, saturday, teenth)).
|
71
69
|
|
72
70
|
saturteenth_of_april_2013_test() ->
|
73
71
|
?assertEqual({2013, 4, 13},
|
74
|
-
|
72
|
+
meetup:schedule(2013, 4, saturday, teenth)).
|
75
73
|
|
76
74
|
saturteenth_of_october_2013_test() ->
|
77
75
|
?assertEqual({2013, 10, 19},
|
78
|
-
|
76
|
+
meetup:schedule(2013, 10, saturday, teenth)).
|
79
77
|
|
80
78
|
sunteenth_of_map_2013_test() ->
|
81
79
|
?assertEqual({2013, 5, 19},
|
82
|
-
|
80
|
+
meetup:schedule(2013, 5, sunday, teenth)).
|
83
81
|
|
84
82
|
sunteenth_of_june_2013_test() ->
|
85
83
|
?assertEqual({2013, 6, 16},
|
86
|
-
|
84
|
+
meetup:schedule(2013, 6, sunday, teenth)).
|
87
85
|
|
88
86
|
sunteenth_of_october_2013_test() ->
|
89
87
|
?assertEqual({2013, 10, 13},
|
90
|
-
|
88
|
+
meetup:schedule(2013, 10, sunday, teenth)).
|
91
89
|
|
92
90
|
first_monday_of_march_2013_test() ->
|
93
91
|
?assertEqual({2013, 3, 4},
|
94
|
-
|
92
|
+
meetup:schedule(2013, 3, monday, first)).
|
95
93
|
|
96
94
|
first_monday_of_april_2013_test() ->
|
97
95
|
?assertEqual({2013, 4, 1},
|
98
|
-
|
96
|
+
meetup:schedule(2013, 4, monday, first)).
|
99
97
|
|
100
98
|
first_tuesday_of_may_2013_test() ->
|
101
99
|
?assertEqual({2013, 5, 7},
|
102
|
-
|
100
|
+
meetup:schedule(2013, 5, tuesday, first)).
|
103
101
|
|
104
102
|
first_tuesday_of_june_2013_test() ->
|
105
103
|
?assertEqual({2013, 6, 4},
|
106
|
-
|
104
|
+
meetup:schedule(2013, 6, tuesday, first)).
|
107
105
|
|
108
106
|
first_wednesday_of_july_2013_test() ->
|
109
107
|
?assertEqual({2013, 7, 3},
|
110
|
-
|
108
|
+
meetup:schedule(2013, 7, wednesday, first)).
|
111
109
|
|
112
110
|
first_wednesday_of_august_2013_test() ->
|
113
111
|
?assertEqual({2013, 8, 7},
|
114
|
-
|
112
|
+
meetup:schedule(2013, 8, wednesday, first)).
|
115
113
|
|
116
114
|
first_thursday_of_september_2013_test() ->
|
117
115
|
?assertEqual({2013, 9, 5},
|
118
|
-
|
116
|
+
meetup:schedule(2013, 9, thursday, first)).
|
119
117
|
|
120
118
|
first_thursday_of_october_2013_test() ->
|
121
119
|
?assertEqual({2013, 10, 3},
|
122
|
-
|
120
|
+
meetup:schedule(2013, 10, thursday, first)).
|
123
121
|
|
124
122
|
first_friday_of_november_2013_test() ->
|
125
123
|
?assertEqual({2013, 11, 1},
|
126
|
-
|
124
|
+
meetup:schedule(2013, 11, friday, first)).
|
127
125
|
|
128
126
|
first_friday_of_december_2013_test() ->
|
129
127
|
?assertEqual({2013, 12, 6},
|
130
|
-
|
128
|
+
meetup:schedule(2013, 12, friday, first)).
|
131
129
|
|
132
130
|
first_saturday_of_january_2013_test() ->
|
133
131
|
?assertEqual({2013, 1, 5},
|
134
|
-
|
132
|
+
meetup:schedule(2013, 1, saturday, first)).
|
135
133
|
|
136
134
|
first_saturday_of_february_2013_test() ->
|
137
135
|
?assertEqual({2013, 2, 2},
|
138
|
-
|
136
|
+
meetup:schedule(2013, 2, saturday, first)).
|
139
137
|
|
140
138
|
first_sunday_of_march_2013_test() ->
|
141
139
|
?assertEqual({2013, 3, 3},
|
142
|
-
|
140
|
+
meetup:schedule(2013, 3, sunday, first)).
|
143
141
|
|
144
142
|
first_sunday_of_april_2013_test() ->
|
145
143
|
?assertEqual({2013, 4, 7},
|
146
|
-
|
144
|
+
meetup:schedule(2013, 4, sunday, first)).
|
147
145
|
|
148
146
|
second_monday_of_march_2013_test() ->
|
149
147
|
?assertEqual({2013, 3, 11},
|
150
|
-
|
148
|
+
meetup:schedule(2013, 3, monday, second)).
|
151
149
|
|
152
150
|
second_monday_of_april_2013_test() ->
|
153
151
|
?assertEqual({2013, 4, 8},
|
154
|
-
|
152
|
+
meetup:schedule(2013, 4, monday, second)).
|
155
153
|
|
156
154
|
second_tuesday_of_may_2013_test() ->
|
157
155
|
?assertEqual({2013, 5, 14},
|
158
|
-
|
156
|
+
meetup:schedule(2013, 5, tuesday, second)).
|
159
157
|
|
160
158
|
second_tuesday_of_june_2013_test() ->
|
161
159
|
?assertEqual({2013, 6, 11},
|
162
|
-
|
160
|
+
meetup:schedule(2013, 6, tuesday, second)).
|
163
161
|
|
164
162
|
second_wednesday_of_july_2013_test() ->
|
165
163
|
?assertEqual({2013, 7, 10},
|
166
|
-
|
164
|
+
meetup:schedule(2013, 7, wednesday, second)).
|
167
165
|
|
168
166
|
second_wednesday_of_august_2013_test() ->
|
169
167
|
?assertEqual({2013, 8, 14},
|
170
|
-
|
168
|
+
meetup:schedule(2013, 8, wednesday, second)).
|
171
169
|
|
172
170
|
second_thursday_of_september_2013_test() ->
|
173
171
|
?assertEqual({2013, 9, 12},
|
174
|
-
|
172
|
+
meetup:schedule(2013, 9, thursday, second)).
|
175
173
|
|
176
174
|
second_thursday_of_october_2013_test() ->
|
177
175
|
?assertEqual({2013, 10, 10},
|
178
|
-
|
176
|
+
meetup:schedule(2013, 10, thursday, second)).
|
179
177
|
|
180
178
|
second_friday_of_november_2013_test() ->
|
181
179
|
?assertEqual({2013, 11, 8},
|
182
|
-
|
180
|
+
meetup:schedule(2013, 11, friday, second)).
|
183
181
|
|
184
182
|
second_friday_of_december_2013_test() ->
|
185
183
|
?assertEqual({2013, 12, 13},
|
186
|
-
|
184
|
+
meetup:schedule(2013, 12, friday, second)).
|
187
185
|
|
188
186
|
second_saturday_of_january_2013_test() ->
|
189
187
|
?assertEqual({2013, 1, 12},
|
190
|
-
|
188
|
+
meetup:schedule(2013, 1, saturday, second)).
|
191
189
|
|
192
190
|
second_saturday_of_february_2013_test() ->
|
193
191
|
?assertEqual({2013, 2, 9},
|
194
|
-
|
192
|
+
meetup:schedule(2013, 2, saturday, second)).
|
195
193
|
|
196
194
|
second_sunday_of_march_2013_test() ->
|
197
195
|
?assertEqual({2013, 3, 10},
|
198
|
-
|
196
|
+
meetup:schedule(2013, 3, sunday, second)).
|
199
197
|
|
200
198
|
second_sunday_of_april_2013_test() ->
|
201
199
|
?assertEqual({2013, 4, 14},
|
202
|
-
|
200
|
+
meetup:schedule(2013, 4, sunday, second)).
|
203
201
|
|
204
202
|
third_monday_of_march_2013_test() ->
|
205
203
|
?assertEqual({2013, 3, 18},
|
206
|
-
|
204
|
+
meetup:schedule(2013, 3, monday, third)).
|
207
205
|
|
208
206
|
third_monday_of_april_2013_test() ->
|
209
207
|
?assertEqual({2013, 4, 15},
|
210
|
-
|
208
|
+
meetup:schedule(2013, 4, monday, third)).
|
211
209
|
|
212
210
|
third_tuesday_of_may_2013_test() ->
|
213
211
|
?assertEqual({2013, 5, 21},
|
214
|
-
|
212
|
+
meetup:schedule(2013, 5, tuesday, third)).
|
215
213
|
|
216
214
|
third_tuesday_of_june_2013_test() ->
|
217
215
|
?assertEqual({2013, 6, 18},
|
218
|
-
|
216
|
+
meetup:schedule(2013, 6, tuesday, third)).
|
219
217
|
|
220
218
|
third_wednesday_of_july_2013_test() ->
|
221
219
|
?assertEqual({2013, 7, 17},
|
222
|
-
|
220
|
+
meetup:schedule(2013, 7, wednesday, third)).
|
223
221
|
|
224
222
|
third_wednesday_of_august_2013_test() ->
|
225
223
|
?assertEqual({2013, 8, 21},
|
226
|
-
|
224
|
+
meetup:schedule(2013, 8, wednesday, third)).
|
227
225
|
|
228
226
|
third_thursday_of_september_2013_test() ->
|
229
227
|
?assertEqual({2013, 9, 19},
|
230
|
-
|
228
|
+
meetup:schedule(2013, 9, thursday, third)).
|
231
229
|
|
232
230
|
third_thursday_of_october_2013_test() ->
|
233
231
|
?assertEqual({2013, 10, 17},
|
234
|
-
|
232
|
+
meetup:schedule(2013, 10, thursday, third)).
|
235
233
|
|
236
234
|
third_friday_of_november_2013_test() ->
|
237
235
|
?assertEqual({2013, 11, 15},
|
238
|
-
|
236
|
+
meetup:schedule(2013, 11, friday, third)).
|
239
237
|
|
240
238
|
third_friday_of_december_2013_test() ->
|
241
239
|
?assertEqual({2013, 12, 20},
|
242
|
-
|
240
|
+
meetup:schedule(2013, 12, friday, third)).
|
243
241
|
|
244
242
|
third_saturday_of_january_2013_test() ->
|
245
243
|
?assertEqual({2013, 1, 19},
|
246
|
-
|
244
|
+
meetup:schedule(2013, 1, saturday, third)).
|
247
245
|
|
248
246
|
third_saturday_of_february_2013_test() ->
|
249
247
|
?assertEqual({2013, 2, 16},
|
250
|
-
|
248
|
+
meetup:schedule(2013, 2, saturday, third)).
|
251
249
|
|
252
250
|
third_sunday_of_march_2013_test() ->
|
253
251
|
?assertEqual({2013, 3, 17},
|
254
|
-
|
252
|
+
meetup:schedule(2013, 3, sunday, third)).
|
255
253
|
|
256
254
|
third_sunday_of_april_2013_test() ->
|
257
255
|
?assertEqual({2013, 4, 21},
|
258
|
-
|
256
|
+
meetup:schedule(2013, 4, sunday, third)).
|
259
257
|
|
260
258
|
fourth_monday_of_march_2013_test() ->
|
261
259
|
?assertEqual({2013, 3, 25},
|
262
|
-
|
260
|
+
meetup:schedule(2013, 3, monday, fourth)).
|
263
261
|
|
264
262
|
fourth_monday_of_april_2013_test() ->
|
265
263
|
?assertEqual({2013, 4, 22},
|
266
|
-
|
264
|
+
meetup:schedule(2013, 4, monday, fourth)).
|
267
265
|
|
268
266
|
fourth_tuesday_of_may_2013_test() ->
|
269
267
|
?assertEqual({2013, 5, 28},
|
270
|
-
|
268
|
+
meetup:schedule(2013, 5, tuesday, fourth)).
|
271
269
|
|
272
270
|
fourth_tuesday_of_june_2013_test() ->
|
273
271
|
?assertEqual({2013, 6, 25},
|
274
|
-
|
272
|
+
meetup:schedule(2013, 6, tuesday, fourth)).
|
275
273
|
|
276
274
|
fourth_wednesday_of_july_2013_test() ->
|
277
275
|
?assertEqual({2013, 7, 24},
|
278
|
-
|
276
|
+
meetup:schedule(2013, 7, wednesday, fourth)).
|
279
277
|
|
280
278
|
fourth_wednesday_of_august_2013_test() ->
|
281
279
|
?assertEqual({2013, 8, 28},
|
282
|
-
|
280
|
+
meetup:schedule(2013, 8, wednesday, fourth)).
|
283
281
|
|
284
282
|
fourth_thursday_of_september_2013_test() ->
|
285
283
|
?assertEqual({2013, 9, 26},
|
286
|
-
|
284
|
+
meetup:schedule(2013, 9, thursday, fourth)).
|
287
285
|
|
288
286
|
fourth_thursday_of_october_2013_test() ->
|
289
287
|
?assertEqual({2013, 10, 24},
|
290
|
-
|
288
|
+
meetup:schedule(2013, 10, thursday, fourth)).
|
291
289
|
|
292
290
|
fourth_friday_of_november_2013_test() ->
|
293
291
|
?assertEqual({2013, 11, 22},
|
294
|
-
|
292
|
+
meetup:schedule(2013, 11, friday, fourth)).
|
295
293
|
|
296
294
|
fourth_friday_of_december_2013_test() ->
|
297
295
|
?assertEqual({2013, 12, 27},
|
298
|
-
|
296
|
+
meetup:schedule(2013, 12, friday, fourth)).
|
299
297
|
|
300
298
|
fourth_saturday_of_january_2013_test() ->
|
301
299
|
?assertEqual({2013, 1, 26},
|
302
|
-
|
300
|
+
meetup:schedule(2013, 1, saturday, fourth)).
|
303
301
|
|
304
302
|
fourth_saturday_of_february_2013_test() ->
|
305
303
|
?assertEqual({2013, 2, 23},
|
306
|
-
|
304
|
+
meetup:schedule(2013, 2, saturday, fourth)).
|
307
305
|
|
308
306
|
fourth_sunday_of_march_2013_test() ->
|
309
307
|
?assertEqual({2013, 3, 24},
|
310
|
-
|
308
|
+
meetup:schedule(2013, 3, sunday, fourth)).
|
311
309
|
|
312
310
|
fourth_sunday_of_april_2013_test() ->
|
313
311
|
?assertEqual({2013, 4, 28},
|
314
|
-
|
312
|
+
meetup:schedule(2013, 4, sunday, fourth)).
|
315
313
|
|
316
314
|
last_monday_of_march_2013_test() ->
|
317
315
|
?assertEqual({2013, 3, 25},
|
318
|
-
|
316
|
+
meetup:schedule(2013, 3, monday, last)).
|
319
317
|
|
320
318
|
last_monday_of_april_2013_test() ->
|
321
319
|
?assertEqual({2013, 4, 29},
|
322
|
-
|
320
|
+
meetup:schedule(2013, 4, monday, last)).
|
323
321
|
|
324
322
|
last_tuesday_of_may_2013_test() ->
|
325
323
|
?assertEqual({2013, 5, 28},
|
326
|
-
|
324
|
+
meetup:schedule(2013, 5, tuesday, last)).
|
327
325
|
|
328
326
|
last_tuesday_of_june_2013_test() ->
|
329
327
|
?assertEqual({2013, 6, 25},
|
330
|
-
|
328
|
+
meetup:schedule(2013, 6, tuesday, last)).
|
331
329
|
|
332
330
|
last_wednesday_of_july_2013_test() ->
|
333
331
|
?assertEqual({2013, 7, 31},
|
334
|
-
|
332
|
+
meetup:schedule(2013, 7, wednesday, last)).
|
335
333
|
|
336
334
|
last_wednesday_of_august_2013_test() ->
|
337
335
|
?assertEqual({2013, 8, 28},
|
338
|
-
|
336
|
+
meetup:schedule(2013, 8, wednesday, last)).
|
339
337
|
|
340
338
|
last_thursday_of_september_2013_test() ->
|
341
339
|
?assertEqual({2013, 9, 26},
|
342
|
-
|
340
|
+
meetup:schedule(2013, 9, thursday, last)).
|
343
341
|
|
344
342
|
last_thursday_of_october_2013_test() ->
|
345
343
|
?assertEqual({2013, 10, 31},
|
346
|
-
|
344
|
+
meetup:schedule(2013, 10, thursday, last)).
|
347
345
|
|
348
346
|
last_friday_of_november_2013_test() ->
|
349
347
|
?assertEqual({2013, 11, 29},
|
350
|
-
|
348
|
+
meetup:schedule(2013, 11, friday, last)).
|
351
349
|
|
352
350
|
last_friday_of_december_2013_test() ->
|
353
351
|
?assertEqual({2013, 12, 27},
|
354
|
-
|
352
|
+
meetup:schedule(2013, 12, friday, last)).
|
355
353
|
|
356
354
|
last_saturday_of_january_2013_test() ->
|
357
355
|
?assertEqual({2013, 1, 26},
|
358
|
-
|
356
|
+
meetup:schedule(2013, 1, saturday, last)).
|
359
357
|
|
360
358
|
last_saturday_of_february_2013_test() ->
|
361
359
|
?assertEqual({2013, 2, 23},
|
362
|
-
|
360
|
+
meetup:schedule(2013, 2, saturday, last)).
|
363
361
|
|
364
362
|
last_sunday_of_march_2013_test() ->
|
365
363
|
?assertEqual({2013, 3, 31},
|
366
|
-
|
364
|
+
meetup:schedule(2013, 3, sunday, last)).
|
367
365
|
|
368
366
|
last_sunday_of_april_2013_test() ->
|
369
367
|
?assertEqual({2013, 4, 28},
|
370
|
-
|
368
|
+
meetup:schedule(2013, 4, sunday, last)).
|
369
|
+
|
370
|
+
version_test() ->
|
371
|
+
?assertMatch(1, meetup:test_version()).
|
@@ -1,30 +1,31 @@
|
|
1
1
|
-module(nucleotide_count_tests).
|
2
2
|
|
3
|
-
-
|
4
|
-
-
|
5
|
-
-include("exercism.hrl").
|
6
|
-
|
3
|
+
-include_lib("erl_exercism/include/exercism.hrl").
|
4
|
+
-include_lib("eunit/include/eunit.hrl").
|
7
5
|
|
8
6
|
empty_dna_string_has_no_adenine_test() ->
|
9
|
-
?assertEqual(0,
|
7
|
+
?assertEqual(0, nucleotide_count:count("", "A")).
|
10
8
|
|
11
9
|
repetitive_cytosine_gets_counted_test() ->
|
12
|
-
?assertEqual(5,
|
10
|
+
?assertEqual(5, nucleotide_count:count("CCCCC", "C")).
|
13
11
|
|
14
12
|
counts_only_thymine_test() ->
|
15
|
-
?assertEqual(1,
|
13
|
+
?assertEqual(1, nucleotide_count:count("GGGGGTAACCCGG", "T")).
|
16
14
|
|
17
15
|
validates_nucleotides_test() ->
|
18
|
-
?assertException(error, "Invalid nucleotide",
|
16
|
+
?assertException(error, "Invalid nucleotide", nucleotide_count:count("GACT", "X")).
|
19
17
|
|
20
18
|
empty_dna_string_has_no_nucleotides_test() ->
|
21
|
-
?assertEqual([{"A", 0}, {"T", 0}, {"C", 0}, {"G", 0}],
|
19
|
+
?assertEqual([{"A", 0}, {"T", 0}, {"C", 0}, {"G", 0}], nucleotide_count:nucleotide_counts("")).
|
22
20
|
|
23
21
|
repetitive_sequence_has_only_guanine_test() ->
|
24
|
-
?assertEqual([{"A", 0}, {"T", 0}, {"C", 0}, {"G", 8}],
|
22
|
+
?assertEqual([{"A", 0}, {"T", 0}, {"C", 0}, {"G", 8}], nucleotide_count:nucleotide_counts("GGGGGGGG")).
|
25
23
|
|
26
24
|
counts_all_nucleotides_test() ->
|
27
25
|
?assertEqual(
|
28
26
|
[{"A", 20}, {"T", 21}, {"C", 12}, {"G", 17}],
|
29
|
-
|
27
|
+
nucleotide_count:nucleotide_counts(
|
30
28
|
"AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC")).
|
29
|
+
|
30
|
+
version_test() ->
|
31
|
+
?assertMatch(1, nucleotide_count:test_version()).
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Pangram
|
2
|
+
|
3
|
+
Determine if a sentence is a pangram.
|
4
|
+
A pangram (Greek: παν γράμμα, pan gramma, "every letter") is a sentence using
|
5
|
+
every letter of the alphabet at least once.
|
6
|
+
The best known English pangram is:
|
7
|
+
> The quick brown fox jumps over the lazy dog.
|
8
|
+
|
9
|
+
The alphabet used consists of ASCII letters `a` to `z`, inclusive, and is case
|
10
|
+
insensitive. Input will not contain non-ASCII symbols.
|
11
|
+
|
12
|
+
## Source
|
13
|
+
|
14
|
+
Wikipedia [https://en.wikipedia.org/wiki/Pangram](https://en.wikipedia.org/wiki/Pangram)
|
15
|
+
|
16
|
+
## Running tests
|
17
|
+
|
18
|
+
In order to run the tests, issue the following command from the exercise
|
19
|
+
directory:
|
20
|
+
|
21
|
+
For running the tests provided, `rebar3` is used as it is the official build and
|
22
|
+
dependency management tool for erlang now. Please refer to [the tracks installation
|
23
|
+
instructions](http://exercism.io/languages/erlang/installation) on how to do that.
|
24
|
+
|
25
|
+
In order to run the tests, you can issue the following command from the exercise
|
26
|
+
directory.
|
27
|
+
|
28
|
+
```bash
|
29
|
+
$ rebar3 eunit
|
30
|
+
```
|
31
|
+
|
32
|
+
### Test versioning
|
33
|
+
|
34
|
+
Each problem defines a macro `TEST_VERSION` in the test file and
|
35
|
+
verifies that the solution defines and exports a function `test_version`
|
36
|
+
returning that same value.
|
37
|
+
|
38
|
+
To make tests pass, add the following to your solution:
|
39
|
+
|
40
|
+
```erlang
|
41
|
+
-export([test_version/0]).
|
42
|
+
|
43
|
+
test_version() ->
|
44
|
+
1.
|
45
|
+
```
|
46
|
+
|
47
|
+
The benefit of this is that reviewers can see against which test version
|
48
|
+
an iteration was written if, for example, a previously posted solution
|
49
|
+
does not solve the current problem or passes current tests.
|
50
|
+
|
51
|
+
## Questions?
|
52
|
+
|
53
|
+
For detailed information about the Erlang track, please refer to the
|
54
|
+
[help page](http://exercism.io/languages/erlang) on the Exercism site.
|
55
|
+
This covers the basic information on setting up the development
|
56
|
+
environment expected by the exercises.
|
57
|
+
|
58
|
+
## Submitting Incomplete Solutions
|
59
|
+
|
60
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
File without changes
|
File without changes
|
@@ -0,0 +1,11 @@
|
|
1
|
+
-module(example).
|
2
|
+
|
3
|
+
-export([is_pangram/1, test_version/0]).
|
4
|
+
|
5
|
+
is_pangram(Sentence) ->
|
6
|
+
Alpha = "abcdefghijklmnopqrstuvwxyz",
|
7
|
+
Lower = string:to_lower(Sentence),
|
8
|
+
|
9
|
+
lists:all(fun (A) -> lists:any(fun (L) -> A == L end, Lower) end, Alpha).
|
10
|
+
|
11
|
+
test_version() -> 1.
|
@@ -0,0 +1,38 @@
|
|
1
|
+
-module(pangram_tests).
|
2
|
+
|
3
|
+
-define(TESTED_MODULE, (sut(pangram))).
|
4
|
+
-define(TEST_VERSION, 1).
|
5
|
+
-include("exercism.hrl").
|
6
|
+
|
7
|
+
|
8
|
+
% test cases adapted from `x-common//canonical-data.json` @ version: 1.3.0
|
9
|
+
|
10
|
+
empty_sentence_test() ->
|
11
|
+
?assertNot(?TESTED_MODULE:is_pangram("")).
|
12
|
+
|
13
|
+
perfect_lower_case_pangram_test() ->
|
14
|
+
?assert(?TESTED_MODULE:is_pangram("abcdefghijklmnopqrstuvwxyz")).
|
15
|
+
|
16
|
+
pangram_with_only_lower_case_test() ->
|
17
|
+
?assert(?TESTED_MODULE:is_pangram("the quick brown fox jumps over the lazy dog")).
|
18
|
+
|
19
|
+
missing_character_x_test() ->
|
20
|
+
?assertNot(?TESTED_MODULE:is_pangram("a quick movement of the enemy will jeopardize five gunboats")).
|
21
|
+
|
22
|
+
missing_character_h_test() ->
|
23
|
+
?assertNot(?TESTED_MODULE:is_pangram("five boxing wizards jump quickly at it")).
|
24
|
+
|
25
|
+
pangram_with_underscores_test() ->
|
26
|
+
?assert(?TESTED_MODULE:is_pangram("the_quick_brown_fox_jumps_over_the_lazy_dog")).
|
27
|
+
|
28
|
+
pangram_with_numbers_test() ->
|
29
|
+
?assert(?TESTED_MODULE:is_pangram("the 1 quick brown fox jumps over the 2 lazy dogs")).
|
30
|
+
|
31
|
+
missing_letters_replaced_by_numbers_test() ->
|
32
|
+
?assertNot(?TESTED_MODULE:is_pangram("7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog")).
|
33
|
+
|
34
|
+
pangram_with_mixed_case_and_punctuation_test() ->
|
35
|
+
?assert(?TESTED_MODULE:is_pangram("\"Five quacking Zephyrs jolt my wax bed.\"")).
|
36
|
+
|
37
|
+
upper_and_lower_case_characters_are_not_counted_separately_test() ->
|
38
|
+
?assertNot(?TESTED_MODULE:is_pangram("the quick brown fox jumps over with lazy FX")).
|