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,92 +1,93 @@
|
|
1
1
|
-module(bank_account_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
|
create_test() ->
|
9
|
-
BankAccount =
|
10
|
-
?assert(
|
7
|
+
BankAccount = bank_account:create(),
|
8
|
+
?assert(bank_account:balance(BankAccount) =:= 0).
|
11
9
|
|
12
10
|
close_account_test() ->
|
13
|
-
BankAccount =
|
14
|
-
|
15
|
-
Amount =
|
11
|
+
BankAccount = bank_account:create(),
|
12
|
+
bank_account:deposit(BankAccount, 1),
|
13
|
+
Amount = bank_account:close(BankAccount),
|
16
14
|
?assert(Amount =:= 1),
|
17
|
-
?assertEqual({error, account_closed},
|
15
|
+
?assertEqual({error, account_closed}, bank_account:balance( BankAccount )).
|
18
16
|
|
19
17
|
deposit_test() ->
|
20
|
-
BankAccount =
|
21
|
-
|
22
|
-
?assert(
|
18
|
+
BankAccount = bank_account:create(),
|
19
|
+
bank_account:deposit(BankAccount, 1),
|
20
|
+
?assert(bank_account:balance(BankAccount) =:= 1).
|
23
21
|
|
24
22
|
deposit_fail_test() ->
|
25
|
-
BankAccount =
|
26
|
-
|
27
|
-
?assert(
|
23
|
+
BankAccount = bank_account:create(),
|
24
|
+
bank_account:deposit(BankAccount, -1),
|
25
|
+
?assert(bank_account:balance(BankAccount) =:= 0).
|
28
26
|
|
29
27
|
deposit_many_test() ->
|
30
|
-
BankAccount =
|
31
|
-
[erlang:spawn( fun () ->
|
28
|
+
BankAccount = bank_account:create(),
|
29
|
+
[erlang:spawn( fun () -> bank_account:deposit(BankAccount, X) end ) || X <- lists:seq(1, 10)],
|
32
30
|
timer:sleep(100),
|
33
|
-
Last =
|
31
|
+
Last = bank_account:balance(BankAccount),
|
34
32
|
?assert(Last =:= 55).
|
35
33
|
|
36
34
|
withdraw_test() ->
|
37
|
-
BankAccount =
|
38
|
-
|
39
|
-
Amount =
|
35
|
+
BankAccount = bank_account:create(),
|
36
|
+
bank_account:deposit(BankAccount, 10 ),
|
37
|
+
Amount = bank_account:withdraw(BankAccount, 1),
|
40
38
|
?assert(Amount =:= 1),
|
41
|
-
?assert(
|
39
|
+
?assert(bank_account:balance(BankAccount) =:= 9).
|
42
40
|
|
43
41
|
withdraw_fail_test() ->
|
44
|
-
BankAccount =
|
45
|
-
|
46
|
-
Amount =
|
42
|
+
BankAccount = bank_account:create(),
|
43
|
+
bank_account:deposit(BankAccount, 10),
|
44
|
+
Amount = bank_account:withdraw(BankAccount, -1),
|
47
45
|
?assert(Amount =:= 0),
|
48
|
-
?assert(
|
46
|
+
?assert(bank_account:balance(BankAccount) =:= 10).
|
49
47
|
|
50
48
|
withdraw_excessive_test() ->
|
51
|
-
BankAccount =
|
52
|
-
|
53
|
-
Amount =
|
49
|
+
BankAccount = bank_account:create(),
|
50
|
+
bank_account:deposit(BankAccount, 10 ),
|
51
|
+
Amount = bank_account:withdraw(BankAccount, 20),
|
54
52
|
?assert(Amount =:= 10),
|
55
|
-
?assert(
|
53
|
+
?assert(bank_account:balance(BankAccount) =:= 0).
|
56
54
|
|
57
55
|
withdraw_many_test() ->
|
58
|
-
BankAccount =
|
59
|
-
|
60
|
-
[erlang:spawn( fun () ->
|
56
|
+
BankAccount = bank_account:create(),
|
57
|
+
bank_account:deposit(BankAccount, 55 ),
|
58
|
+
[erlang:spawn( fun () -> bank_account:withdraw(BankAccount, X) end ) || X <- lists:seq(1, 10)],
|
61
59
|
timer:sleep(100),
|
62
|
-
Last =
|
60
|
+
Last = bank_account:balance(BankAccount),
|
63
61
|
?assert(Last =:= 0).
|
64
62
|
|
65
63
|
charge_test() ->
|
66
|
-
BankAccount =
|
67
|
-
|
68
|
-
Amount =
|
64
|
+
BankAccount = bank_account:create(),
|
65
|
+
bank_account:deposit(BankAccount, 10),
|
66
|
+
Amount = bank_account:charge(BankAccount, 2),
|
69
67
|
?assert(Amount =:= 2),
|
70
|
-
?assert(
|
68
|
+
?assert(bank_account:balance(BankAccount) =:= 8).
|
71
69
|
|
72
70
|
charge_fail_test() ->
|
73
|
-
BankAccount =
|
74
|
-
|
75
|
-
Amount =
|
71
|
+
BankAccount = bank_account:create(),
|
72
|
+
bank_account:deposit(BankAccount, 10),
|
73
|
+
Amount = bank_account:charge(BankAccount, -2),
|
76
74
|
?assert(Amount =:= 0),
|
77
|
-
?assert(
|
75
|
+
?assert(bank_account:balance(BankAccount) =:= 10).
|
78
76
|
|
79
77
|
charge_excessive_test() ->
|
80
|
-
BankAccount =
|
81
|
-
|
82
|
-
Amount =
|
78
|
+
BankAccount = bank_account:create(),
|
79
|
+
bank_account:deposit(BankAccount, 10),
|
80
|
+
Amount = bank_account:charge(BankAccount, 20),
|
83
81
|
?assert(Amount =:= 0),
|
84
|
-
?assert(
|
82
|
+
?assert(bank_account:balance(BankAccount) =:= 10).
|
85
83
|
|
86
84
|
charge_many_test() ->
|
87
|
-
BankAccount =
|
88
|
-
|
89
|
-
[erlang:spawn( fun () ->
|
85
|
+
BankAccount = bank_account:create(),
|
86
|
+
bank_account:deposit(BankAccount, 55 ),
|
87
|
+
[erlang:spawn( fun () -> bank_account:charge(BankAccount, 10) end ) || _X <- lists:seq(1, 10)],
|
90
88
|
timer:sleep(100),
|
91
|
-
Last =
|
89
|
+
Last = bank_account:balance(BankAccount),
|
92
90
|
?assert(Last =:= 5).
|
91
|
+
|
92
|
+
version_test() ->
|
93
|
+
?assertMatch(1, bank_account:test_version()).
|
@@ -0,0 +1,30 @@
|
|
1
|
+
%% Erlang compiler options
|
2
|
+
{erl_opts, [debug_info]}.
|
3
|
+
|
4
|
+
{deps, [{erl_exercism, "0.1.1"}]}.
|
5
|
+
|
6
|
+
{dialyzer, [
|
7
|
+
{warnings, [underspecs, no_return]},
|
8
|
+
{get_warnings, true},
|
9
|
+
{plt_apps, top_level_deps}, % top_level_deps | all_deps
|
10
|
+
{plt_extra_apps, []},
|
11
|
+
{plt_location, local}, % local | "/my/file/name"
|
12
|
+
{plt_prefix, "rebar3"},
|
13
|
+
{base_plt_apps, [stdlib, kernel, crypto]},
|
14
|
+
{base_plt_location, global}, % global | "/my/file/name"
|
15
|
+
{base_plt_prefix, "rebar3"}
|
16
|
+
]}.
|
17
|
+
|
18
|
+
%% eunit:test(Tests)
|
19
|
+
{eunit_tests, []}.
|
20
|
+
%% Options for eunit:test(Tests, Opts)
|
21
|
+
{eunit_opts, [verbose]}.
|
22
|
+
|
23
|
+
%% == xref ==
|
24
|
+
|
25
|
+
{xref_warnings, true}.
|
26
|
+
|
27
|
+
%% xref checks to run
|
28
|
+
{xref_checks, [undefined_function_calls, undefined_functions,
|
29
|
+
locals_not_used, exports_not_used,
|
30
|
+
deprecated_function_calls, deprecated_functions]}.
|
@@ -1,32 +1,30 @@
|
|
1
1
|
-module(beer_song_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
|
verse_test() ->
|
9
|
-
compare_nested_lists(
|
7
|
+
compare_nested_lists(beer_song:verse(8),
|
10
8
|
"8 bottles of beer on the wall, 8 bottles of beer.\n"
|
11
9
|
"Take one down and pass it around, 7 bottles of beer on the wall.\n").
|
12
10
|
|
13
11
|
verse_0_test() ->
|
14
|
-
compare_nested_lists(
|
12
|
+
compare_nested_lists(beer_song:verse(0),
|
15
13
|
"No more bottles of beer on the wall, no more bottles of beer.\n"
|
16
14
|
"Go to the store and buy some more, 99 bottles of beer on the wall.\n").
|
17
15
|
|
18
16
|
verse_1_test() ->
|
19
|
-
compare_nested_lists(
|
17
|
+
compare_nested_lists(beer_song:verse(1),
|
20
18
|
"1 bottle of beer on the wall, 1 bottle of beer.\n"
|
21
19
|
"Take it down and pass it around, no more bottles of beer on the wall.\n").
|
22
20
|
|
23
21
|
verse_2_test() ->
|
24
|
-
compare_nested_lists(
|
22
|
+
compare_nested_lists(beer_song:verse(2),
|
25
23
|
"2 bottles of beer on the wall, 2 bottles of beer.\n"
|
26
24
|
"Take one down and pass it around, 1 bottle of beer on the wall.\n").
|
27
25
|
|
28
26
|
singing_several_verses_test() ->
|
29
|
-
compare_nested_lists(
|
27
|
+
compare_nested_lists(beer_song:sing(8, 6),
|
30
28
|
"8 bottles of beer on the wall, 8 bottles of beer.\n"
|
31
29
|
"Take one down and pass it around, 7 bottles of beer on the wall.\n\n"
|
32
30
|
|
@@ -37,7 +35,7 @@ singing_several_verses_test() ->
|
|
37
35
|
"Take one down and pass it around, 5 bottles of beer on the wall.\n\n").
|
38
36
|
|
39
37
|
sing_all_the_rest_of_the_verses_test() ->
|
40
|
-
compare_nested_lists(
|
38
|
+
compare_nested_lists(beer_song:sing(3),
|
41
39
|
"3 bottles of beer on the wall, 3 bottles of beer.\n"
|
42
40
|
"Take one down and pass it around, 2 bottles of beer on the wall.\n\n"
|
43
41
|
|
@@ -52,3 +50,6 @@ sing_all_the_rest_of_the_verses_test() ->
|
|
52
50
|
|
53
51
|
compare_nested_lists(Response, Expected) ->
|
54
52
|
?assertEqual(lists:flatten(Expected), lists:flatten(Response)).
|
53
|
+
|
54
|
+
version_test() ->
|
55
|
+
?assertMatch(1, beer_song:test_version()).
|
@@ -2,109 +2,107 @@
|
|
2
2
|
|
3
3
|
% This file is automatically generated from the exercises canonical data.
|
4
4
|
|
5
|
-
-
|
6
|
-
-
|
7
|
-
-include("exercism.hrl").
|
5
|
+
-include_lib("erl_exercism/include/exercism.hrl").
|
6
|
+
-include_lib("eunit/include/eunit.hrl").
|
8
7
|
|
9
8
|
|
10
9
|
stating_something_test() ->
|
11
10
|
?assertMatch("Whatever.",
|
12
|
-
|
11
|
+
bob:response("Tom-ay-to, tom-aaaah-to.")).
|
13
12
|
|
14
13
|
shouting_test() ->
|
15
14
|
?assertMatch("Whoa, chill out!",
|
16
|
-
|
15
|
+
bob:response("WATCH OUT!")).
|
17
16
|
|
18
17
|
shouting_gibberish_test() ->
|
19
18
|
?assertMatch("Whoa, chill out!",
|
20
|
-
|
19
|
+
bob:response("FCECDFCAAB")).
|
21
20
|
|
22
21
|
asking_a_question_test() ->
|
23
22
|
?assertMatch("Sure.",
|
24
|
-
|
25
|
-
|
23
|
+
bob:response("Does this cryogenic chamber make me "
|
24
|
+
"look fat?")).
|
26
25
|
|
27
26
|
asking_a_numeric_question_test() ->
|
28
27
|
?assertMatch("Sure.",
|
29
|
-
|
28
|
+
bob:response("You are, what, like 15?")).
|
30
29
|
|
31
30
|
asking_gibberish_test() ->
|
32
|
-
?assertMatch("Sure.",
|
33
|
-
?TESTED_MODULE:response("fffbbcbeab?")).
|
31
|
+
?assertMatch("Sure.", bob:response("fffbbcbeab?")).
|
34
32
|
|
35
33
|
talking_forcefully_test() ->
|
36
34
|
?assertMatch("Whatever.",
|
37
|
-
|
35
|
+
bob:response("Let's go make out behind the gym!")).
|
38
36
|
|
39
37
|
using_acronyms_in_regular_speech_test() ->
|
40
38
|
?assertMatch("Whatever.",
|
41
|
-
|
42
|
-
|
39
|
+
bob:response("It's OK if you don't want to go to the "
|
40
|
+
"DMV.")).
|
43
41
|
|
44
42
|
forceful_question_test() ->
|
45
43
|
?assertMatch("Whoa, chill out!",
|
46
|
-
|
44
|
+
bob:response("WHAT THE HELL WERE YOU THINKING?")).
|
47
45
|
|
48
46
|
shouting_numbers_test() ->
|
49
47
|
?assertMatch("Whoa, chill out!",
|
50
|
-
|
48
|
+
bob:response("1, 2, 3 GO!")).
|
51
49
|
|
52
50
|
only_numbers_test() ->
|
53
|
-
?assertMatch("Whatever.",
|
54
|
-
?TESTED_MODULE:response("1, 2, 3")).
|
51
|
+
?assertMatch("Whatever.", bob:response("1, 2, 3")).
|
55
52
|
|
56
53
|
question_with_only_numbers_test() ->
|
57
|
-
?assertMatch("Sure.",
|
54
|
+
?assertMatch("Sure.", bob:response("4?")).
|
58
55
|
|
59
56
|
shouting_with_special_characters_test() ->
|
60
57
|
?assertMatch("Whoa, chill out!",
|
61
|
-
|
58
|
+
bob:response("ZOMG THE %^*@#$(*^ ZOMBIES ARE COMING!!11!!1!")).
|
62
59
|
|
63
60
|
shouting_with_no_exclamation_mark_test() ->
|
64
61
|
?assertMatch("Whoa, chill out!",
|
65
|
-
|
62
|
+
bob:response("I HATE YOU")).
|
66
63
|
|
67
64
|
statement_containing_question_mark_test() ->
|
68
65
|
?assertMatch("Whatever.",
|
69
|
-
|
66
|
+
bob:response("Ending with ? means a question.")).
|
70
67
|
|
71
68
|
non_letters_with_question_test() ->
|
72
|
-
?assertMatch("Sure.",
|
69
|
+
?assertMatch("Sure.", bob:response(":) ?")).
|
73
70
|
|
74
71
|
prattling_on_test() ->
|
75
72
|
?assertMatch("Sure.",
|
76
|
-
|
73
|
+
bob:response("Wait! Hang on. Are you going to be OK?")).
|
77
74
|
|
78
75
|
silence_test() ->
|
79
|
-
?assertMatch("Fine. Be that way!",
|
80
|
-
?TESTED_MODULE:response([])).
|
76
|
+
?assertMatch("Fine. Be that way!", bob:response([])).
|
81
77
|
|
82
78
|
prolonged_silence_test() ->
|
83
79
|
?assertMatch("Fine. Be that way!",
|
84
|
-
|
80
|
+
bob:response(" ")).
|
85
81
|
|
86
82
|
alternate_silence_test() ->
|
87
83
|
?assertMatch("Fine. Be that way!",
|
88
|
-
|
84
|
+
bob:response("\t\t\t\t\t\t\t\t\t\t")).
|
89
85
|
|
90
86
|
multiple_line_question_test() ->
|
91
87
|
?assertMatch("Whatever.",
|
92
|
-
|
93
|
-
|
88
|
+
bob:response("\nDoes this cryogenic chamber make me "
|
89
|
+
"look fat?\nno")).
|
94
90
|
|
95
91
|
starting_with_whitespace_test() ->
|
96
92
|
?assertMatch("Whatever.",
|
97
|
-
|
93
|
+
bob:response(" hmmmmmmm...")).
|
98
94
|
|
99
95
|
ending_with_whitespace_test() ->
|
100
96
|
?assertMatch("Sure.",
|
101
|
-
|
97
|
+
bob:response("Okay if like my spacebar quite a bit? ")).
|
102
98
|
|
103
99
|
other_whitespace_test() ->
|
104
100
|
?assertMatch("Fine. Be that way!",
|
105
|
-
|
101
|
+
bob:response("\n\r \t")).
|
106
102
|
|
107
103
|
non_question_ending_with_whitespace_test() ->
|
108
104
|
?assertMatch("Whatever.",
|
109
|
-
|
110
|
-
|
105
|
+
bob:response("This is a statement ending with whitespace "
|
106
|
+
" ")).
|
107
|
+
|
108
|
+
version_test() -> ?assertMatch(2, bob:test_version()).
|
@@ -1,58 +1,59 @@
|
|
1
1
|
-module( circular_buffer_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
|
create_test() ->
|
9
|
-
Pid =
|
10
|
-
?assert( {ok, 5} =:=
|
7
|
+
Pid = circular_buffer:create( 5 ),
|
8
|
+
?assert( {ok, 5} =:= circular_buffer:size(Pid) ).
|
11
9
|
|
12
10
|
write_read_test() ->
|
13
|
-
Pid =
|
14
|
-
?assert( {error, empty} =:=
|
15
|
-
|
16
|
-
?assert( {ok, 1} =:=
|
11
|
+
Pid = circular_buffer:create( 4 ),
|
12
|
+
?assert( {error, empty} =:= circular_buffer:read(Pid) ),
|
13
|
+
circular_buffer:write( Pid, 1 ),
|
14
|
+
?assert( {ok, 1} =:= circular_buffer:read(Pid) ).
|
17
15
|
|
18
16
|
write_read_many_test() ->
|
19
|
-
Pid =
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
?assert( {ok, 1} =:=
|
24
|
-
?assert( {ok, 2} =:=
|
25
|
-
?assert( {ok, 3} =:=
|
17
|
+
Pid = circular_buffer:create( 3 ),
|
18
|
+
circular_buffer:write( Pid, 1 ),
|
19
|
+
circular_buffer:write( Pid, 2 ),
|
20
|
+
circular_buffer:write( Pid, 3 ),
|
21
|
+
?assert( {ok, 1} =:= circular_buffer:read(Pid) ),
|
22
|
+
?assert( {ok, 2} =:= circular_buffer:read(Pid) ),
|
23
|
+
?assert( {ok, 3} =:= circular_buffer:read(Pid) ).
|
26
24
|
|
27
25
|
over_write_read_test() ->
|
28
|
-
Pid =
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
?assert( {ok, 3} =:=
|
34
|
-
?assert( {ok, 4} =:=
|
35
|
-
?assert( {error, empty} =:=
|
26
|
+
Pid = circular_buffer:create( 2 ),
|
27
|
+
circular_buffer:write( Pid, 1 ),
|
28
|
+
circular_buffer:write( Pid, 2 ),
|
29
|
+
circular_buffer:write( Pid, 3 ),
|
30
|
+
circular_buffer:write( Pid, 4 ),
|
31
|
+
?assert( {ok, 3} =:= circular_buffer:read(Pid) ),
|
32
|
+
?assert( {ok, 4} =:= circular_buffer:read(Pid) ),
|
33
|
+
?assert( {error, empty} =:= circular_buffer:read(Pid) ).
|
36
34
|
|
37
35
|
write_attempt_test() ->
|
38
|
-
Pid =
|
39
|
-
Attempt1 =
|
36
|
+
Pid = circular_buffer:create( 1 ),
|
37
|
+
Attempt1 = circular_buffer:write_attempt( Pid, 1 ),
|
40
38
|
?assert( ok =:= Attempt1 ),
|
41
|
-
Attempt2 =
|
39
|
+
Attempt2 = circular_buffer:write_attempt( Pid, 2 ),
|
42
40
|
?assert( {error, full} =:= Attempt2 ),
|
43
|
-
?assert( {ok, 1} =:=
|
41
|
+
?assert( {ok, 1} =:= circular_buffer:read(Pid) ).
|
44
42
|
|
45
43
|
producer_consumer_test() ->
|
46
|
-
Pid =
|
44
|
+
Pid = circular_buffer:create( 3 ),
|
47
45
|
erlang:spawn( fun() ->
|
48
|
-
[
|
46
|
+
[circular_buffer:write(Pid, X) || X <- [1,2,3]]
|
49
47
|
end ),
|
50
48
|
My_pid = erlang:self(),
|
51
49
|
Ref = erlang:make_ref(),
|
52
50
|
erlang:spawn( fun() ->
|
53
|
-
My_pid ! {Ref, [
|
51
|
+
My_pid ! {Ref, [circular_buffer:read(Pid) || _X <- [1,2,3]]}
|
54
52
|
end ),
|
55
53
|
Reads = receive
|
56
54
|
{Ref, R} -> R
|
57
55
|
end,
|
58
56
|
?assert( Reads =:= [{ok, 1}, {ok, 2}, {ok, 3}] ).
|
57
|
+
|
58
|
+
version_test() ->
|
59
|
+
?assertMatch(1, circular_buffer:test_version()).
|
@@ -1,13 +1,17 @@
|
|
1
1
|
-module('clock_tests').
|
2
2
|
|
3
|
-
-
|
4
|
-
-
|
5
|
-
-include("exercism.hrl").
|
3
|
+
-include_lib("erl_exercism/include/exercism.hrl").
|
4
|
+
-include_lib("eunit/include/eunit.hrl").
|
6
5
|
|
6
|
+
-define(assertClockString(String, Hour, Minute), ?assertEqual(String, clock:to_string(create(Hour, Minute)))).
|
7
7
|
|
8
|
-
-define(
|
8
|
+
-define(assertClockAdd(String, Hour, Minute, Add), ?assertEqual(String, clock:to_string(minutes_add(create(Hour, Minute), Add)))).
|
9
9
|
|
10
|
-
|
10
|
+
create(Hour, Minute) ->
|
11
|
+
clock:create(Hour, Minute).
|
12
|
+
|
13
|
+
minutes_add(Clock, Minutes) ->
|
14
|
+
clock:minutes_add(Clock, Minutes).
|
11
15
|
|
12
16
|
create_on_the_hour_test() ->
|
13
17
|
?assertClockString("08:00", 8, 0).
|
@@ -119,77 +123,80 @@ subtract_more_than_two_days_test() ->
|
|
119
123
|
|
120
124
|
|
121
125
|
equal_clocks_with_same_time_test() ->
|
122
|
-
Clock1 =
|
123
|
-
Clock2 =
|
124
|
-
?assert(
|
126
|
+
Clock1 = clock:create(15, 37),
|
127
|
+
Clock2 = clock:create(15, 37),
|
128
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
125
129
|
|
126
130
|
equal_clocks_a_minute_apart_test() ->
|
127
|
-
Clock1 =
|
128
|
-
Clock2 =
|
129
|
-
?assertNot(
|
131
|
+
Clock1 = clock:create(15, 36),
|
132
|
+
Clock2 = clock:create(15, 37),
|
133
|
+
?assertNot(clock:is_equal(Clock1, Clock2)).
|
130
134
|
|
131
135
|
equal_clocks_an_hour_apart_test() ->
|
132
|
-
Clock1 =
|
133
|
-
Clock2 =
|
134
|
-
?assertNot(
|
136
|
+
Clock1 = clock:create(14, 37),
|
137
|
+
Clock2 = clock:create(15, 37),
|
138
|
+
?assertNot(clock:is_equal(Clock1, Clock2)).
|
135
139
|
|
136
140
|
|
137
141
|
equal_clocks_with_hour_overflow_test() ->
|
138
|
-
Clock1 =
|
139
|
-
Clock2 =
|
140
|
-
?assert(
|
142
|
+
Clock1 = clock:create(10, 37),
|
143
|
+
Clock2 = clock:create(34, 37),
|
144
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
141
145
|
|
142
146
|
equal_clocks_with_hour_overflow_by_several_days_test() ->
|
143
|
-
Clock1 =
|
144
|
-
Clock2 =
|
145
|
-
?assert(
|
147
|
+
Clock1 = clock:create(3, 11),
|
148
|
+
Clock2 = clock:create(99, 11),
|
149
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
146
150
|
|
147
151
|
equal_clocks_with_negative_hour_test() ->
|
148
|
-
Clock1 =
|
149
|
-
Clock2 =
|
150
|
-
?assert(
|
152
|
+
Clock1 = clock:create(22, 40),
|
153
|
+
Clock2 = clock:create(-2, 40),
|
154
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
151
155
|
|
152
156
|
equal_clocks_with_negative_hour_that_wraps_test() ->
|
153
|
-
Clock1 =
|
154
|
-
Clock2 =
|
155
|
-
?assert(
|
157
|
+
Clock1 = clock:create(17, 3),
|
158
|
+
Clock2 = clock:create(-31, 3),
|
159
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
156
160
|
|
157
161
|
equal_clocks_with_negative_hour_that_wraps_multiple_times_test() ->
|
158
|
-
Clock1 =
|
159
|
-
Clock2 =
|
160
|
-
?assert(
|
162
|
+
Clock1 = clock:create(13, 49),
|
163
|
+
Clock2 = clock:create(-83, 49),
|
164
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
161
165
|
|
162
166
|
equal_clocks_with_minute_overflow_test() ->
|
163
|
-
Clock1 =
|
164
|
-
Clock2 =
|
165
|
-
?assert(
|
167
|
+
Clock1 = clock:create(0, 1),
|
168
|
+
Clock2 = clock:create(0, 1441),
|
169
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
166
170
|
|
167
171
|
equal_clocks_with_minute_overflow_by_several_days_test() ->
|
168
|
-
Clock1 =
|
169
|
-
Clock2 =
|
170
|
-
?assert(
|
172
|
+
Clock1 = clock:create(2, 2),
|
173
|
+
Clock2 = clock:create(2, 4322),
|
174
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
171
175
|
|
172
176
|
equal_clocks_with_negative_minute_test() ->
|
173
|
-
Clock1 =
|
174
|
-
Clock2 =
|
175
|
-
?assert(
|
177
|
+
Clock1 = clock:create(2, 40),
|
178
|
+
Clock2 = clock:create(3, -20),
|
179
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
176
180
|
|
177
181
|
equal_clocks_with_negative_minute_that_wraps_test() ->
|
178
|
-
Clock1 =
|
179
|
-
Clock2 =
|
180
|
-
?assert(
|
182
|
+
Clock1 = clock:create(4, 10),
|
183
|
+
Clock2 = clock:create(5, -1490),
|
184
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
181
185
|
|
182
186
|
equal_clocks_with_negative_minute_that_wraps_multiple_times_test() ->
|
183
|
-
Clock1 =
|
184
|
-
Clock2 =
|
185
|
-
?assert(
|
187
|
+
Clock1 = clock:create(6, 15),
|
188
|
+
Clock2 = clock:create(6, -4305),
|
189
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
186
190
|
|
187
191
|
equal_clocks_with_negative_hours_and_minutes_test() ->
|
188
|
-
Clock1 =
|
189
|
-
Clock2 =
|
190
|
-
?assert(
|
192
|
+
Clock1 = clock:create(7, 32),
|
193
|
+
Clock2 = clock:create(-12, -268),
|
194
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
191
195
|
|
192
196
|
equal_clocks_with_negative_hours_and_minutes_that_wrap_test() ->
|
193
|
-
Clock1 =
|
194
|
-
Clock2 =
|
195
|
-
?assert(
|
197
|
+
Clock1 = clock:create(18, 7),
|
198
|
+
Clock2 = clock:create(-54, -11513),
|
199
|
+
?assert(clock:is_equal(Clock1, Clock2)).
|
200
|
+
|
201
|
+
version_test() ->
|
202
|
+
?assertMatch(1, clock:test_version()).
|