trackler 2.1.0.7 → 2.1.0.8
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/tracks/java/exercises/difference-of-squares/src/test/java/DifferenceOfSquaresCalculatorTest.java +9 -9
- data/tracks/java/exercises/gigasecond/src/test/java/GigasecondTest.java +4 -4
- data/tracks/java/exercises/pangram/src/test/java/PangramCheckerTest.java +10 -10
- data/tracks/java/exercises/perfect-numbers/src/test/java/NaturalNumberTest.java +12 -12
- data/tracks/java/exercises/saddle-points/src/test/java/MatrixTest.java +4 -4
- data/tracks/java/exercises/secret-handshake/src/test/java/HandshakeCalculatorTest.java +11 -11
- data/tracks/java/exercises/space-age/src/test/java/SpaceAgeTest.java +8 -8
- data/tracks/java/exercises/triangle/src/test/java/TriangleTest.java +1 -1
- data/tracks/perl6/.travis.yml +1 -1
- data/tracks/perl6/exercises/bob/example.yaml +19 -0
- data/tracks/perl6/exercises/clock/clock.t +17 -10
- data/tracks/perl6/exercises/clock/example.yaml +7 -5
- data/tracks/perl6/exercises/grade-school/example.yaml +23 -0
- data/tracks/perl6/exercises/leap/example.yaml +6 -0
- data/tracks/perl6/exercises/phone-number/Example.pm +2 -2
- data/tracks/perl6/exercises/phone-number/PhoneNumber.pm6 +1 -1
- data/tracks/perl6/exercises/phone-number/example.yaml +12 -0
- data/tracks/perl6/exercises/phone-number/phone-number.t +100 -85
- data/tracks/perl6/exercises/space-age/Example.pm +13 -15
- data/tracks/ruby/README.md +22 -10
- data/tracks/ruby/{HINTS.md → exercises/accumulate/HINTS.md} +0 -0
- data/tracks/ruby/exercises/accumulate/accumulate_test.rb +0 -1
- data/tracks/ruby/exercises/acronym/.meta/generator/acronym_cases.rb +1 -1
- data/tracks/ruby/exercises/acronym/acronym_test.rb +1 -2
- data/tracks/ruby/exercises/all-your-base/.meta/generator/all_your_base_cases.rb +1 -1
- data/tracks/ruby/exercises/all-your-base/all_your_base_test.rb +1 -2
- data/tracks/ruby/exercises/allergies/allergies_test.rb +0 -1
- data/tracks/ruby/exercises/alphametics/.meta/generator/alphametics_cases.rb +1 -1
- data/tracks/ruby/exercises/alphametics/.meta/generator/test_template.erb +1 -2
- data/tracks/ruby/exercises/alphametics/alphametics_test.rb +1 -2
- data/tracks/ruby/exercises/anagram/.meta/generator/anagram_cases.rb +1 -1
- data/tracks/ruby/exercises/anagram/anagram_test.rb +1 -2
- data/tracks/ruby/exercises/atbash-cipher/atbash_cipher_test.rb +0 -1
- data/tracks/ruby/exercises/beer-song/.meta/generator/beer_song_cases.rb +1 -1
- data/tracks/ruby/exercises/beer-song/beer_song_test.rb +1 -2
- data/tracks/ruby/exercises/binary-search-tree/binary_search_tree_test.rb +0 -1
- data/tracks/ruby/exercises/binary-search/binary_search_test.rb +0 -1
- data/tracks/ruby/exercises/binary/.meta/generator/binary_cases.rb +1 -1
- data/tracks/ruby/exercises/binary/binary_test.rb +1 -2
- data/tracks/ruby/exercises/bob/bob_test.rb +0 -1
- data/tracks/ruby/exercises/bowling/.meta/generator/bowling_cases.rb +1 -1
- data/tracks/ruby/exercises/bowling/.meta/generator/test_template.erb +1 -2
- data/tracks/ruby/exercises/bowling/bowling_test.rb +1 -2
- data/tracks/ruby/exercises/bracket-push/.meta/generator/bracket_push_cases.rb +1 -1
- data/tracks/ruby/exercises/bracket-push/bracket_push_test.rb +1 -2
- data/tracks/ruby/exercises/circular-buffer/circular_buffer_test.rb +0 -1
- data/tracks/ruby/exercises/clock/.meta/generator/clock_cases.rb +1 -1
- data/tracks/ruby/exercises/clock/clock_test.rb +1 -2
- data/tracks/ruby/exercises/connect/.meta/generator/connect_cases.rb +1 -1
- data/tracks/ruby/exercises/connect/.meta/generator/test_template.erb +1 -2
- data/tracks/ruby/exercises/connect/connect_test.rb +1 -2
- data/tracks/ruby/exercises/crypto-square/crypto_square_test.rb +0 -1
- data/tracks/ruby/exercises/custom-set/.meta/generator/custom_set_cases.rb +1 -1
- data/tracks/ruby/exercises/custom-set/custom_set_test.rb +1 -2
- data/tracks/ruby/exercises/diamond/diamond_test.rb +0 -1
- data/tracks/ruby/exercises/difference-of-squares/.meta/generator/difference_of_squares_cases.rb +1 -1
- data/tracks/ruby/exercises/difference-of-squares/difference_of_squares_test.rb +1 -2
- data/tracks/ruby/exercises/dominoes/.meta/generator/dominoes_cases.rb +1 -1
- data/tracks/ruby/exercises/dominoes/.meta/generator/test_template.erb +1 -2
- data/tracks/ruby/exercises/dominoes/dominoes_test.rb +1 -2
- data/tracks/ruby/exercises/etl/.meta/generator/etl_cases.rb +1 -1
- data/tracks/ruby/exercises/etl/etl_test.rb +1 -2
- data/tracks/ruby/exercises/flatten-array/flatten_array_test.rb +0 -1
- data/tracks/ruby/exercises/food-chain/food_chain_test.rb +0 -1
- data/tracks/ruby/exercises/gigasecond/.meta/generator/gigasecond_cases.rb +1 -1
- data/tracks/ruby/exercises/gigasecond/gigasecond_test.rb +1 -2
- data/tracks/ruby/exercises/grade-school/grade_school_test.rb +0 -1
- data/tracks/ruby/exercises/grains/.meta/generator/grains_cases.rb +1 -1
- data/tracks/ruby/exercises/grains/grains_test.rb +1 -2
- data/tracks/ruby/exercises/hamming/.meta/generator/hamming_cases.rb +1 -1
- data/tracks/ruby/exercises/hamming/hamming_test.rb +1 -2
- data/tracks/ruby/exercises/hello-world/.meta/generator/hello_world_cases.rb +1 -1
- data/tracks/ruby/exercises/hello-world/.meta/generator/test_template.erb +1 -1
- data/tracks/ruby/exercises/hello-world/hello_world_test.rb +1 -1
- data/tracks/ruby/exercises/hexadecimal/hexadecimal_test.rb +0 -1
- data/tracks/ruby/exercises/house/house_test.rb +0 -1
- data/tracks/ruby/exercises/isogram/.meta/generator/isogram_cases.rb +1 -1
- data/tracks/ruby/exercises/isogram/isogram_test.rb +1 -2
- data/tracks/ruby/exercises/kindergarten-garden/kindergarten_garden_test.rb +0 -1
- data/tracks/ruby/exercises/largest-series-product/.meta/generator/largest_series_product_cases.rb +1 -1
- data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +1 -2
- data/tracks/ruby/exercises/leap/.meta/generator/leap_cases.rb +1 -1
- data/tracks/ruby/exercises/leap/.meta/generator/test_template.erb +1 -2
- data/tracks/ruby/exercises/leap/leap_test.rb +1 -2
- data/tracks/ruby/exercises/linked-list/linked_list_test.rb +0 -1
- data/tracks/ruby/exercises/list-ops/list_ops_test.rb +0 -1
- data/tracks/ruby/exercises/luhn/.meta/generator/luhn_cases.rb +1 -1
- data/tracks/ruby/exercises/luhn/luhn_test.rb +1 -2
- data/tracks/ruby/exercises/matrix/matrix_test.rb +0 -1
- data/tracks/ruby/exercises/meetup/meetup_test.rb +0 -1
- data/tracks/ruby/exercises/minesweeper/minesweeper_test.rb +0 -1
- data/tracks/ruby/exercises/nth-prime/.meta/generator/nth_prime_cases.rb +1 -1
- data/tracks/ruby/exercises/nth-prime/nth_prime_test.rb +1 -2
- data/tracks/ruby/exercises/nucleotide-count/nucleotide_count_test.rb +0 -1
- data/tracks/ruby/exercises/ocr-numbers/.meta/generator/ocr_numbers_cases.rb +1 -1
- data/tracks/ruby/exercises/ocr-numbers/ocr_numbers_test.rb +1 -2
- data/tracks/ruby/exercises/octal/octal_test.rb +0 -1
- data/tracks/ruby/exercises/palindrome-products/palindrome_products_test.rb +0 -1
- data/tracks/ruby/exercises/pangram/.meta/generator/pangram_cases.rb +1 -1
- data/tracks/ruby/exercises/pangram/pangram_test.rb +1 -2
- data/tracks/ruby/exercises/pascals-triangle/pascals_triangle_test.rb +0 -1
- data/tracks/ruby/exercises/perfect-numbers/perfect_numbers_test.rb +0 -1
- data/tracks/ruby/exercises/phone-number/.meta/.version +1 -0
- data/tracks/ruby/exercises/phone-number/.meta/generator/phone_number_cases.rb +7 -0
- data/tracks/ruby/exercises/phone-number/example.rb +21 -37
- data/tracks/ruby/exercises/phone-number/phone_number_test.rb +47 -43
- data/tracks/ruby/exercises/pig-latin/.meta/generator/pig_latin_cases.rb +1 -1
- data/tracks/ruby/exercises/pig-latin/pig_latin_test.rb +1 -2
- data/tracks/ruby/exercises/point-mutations/point_mutations_test.rb +0 -1
- data/tracks/ruby/exercises/poker/poker_test.rb +0 -1
- data/tracks/ruby/exercises/prime-factors/prime_factors_test.rb +0 -1
- data/tracks/ruby/exercises/protein-translation/protein_translation_test.rb +0 -1
- data/tracks/ruby/exercises/proverb/proverb_test.rb +0 -1
- data/tracks/ruby/exercises/pythagorean-triplet/pythagorean_triplet_test.rb +0 -1
- data/tracks/ruby/exercises/queen-attack/.meta/generator/queen_attack_cases.rb +1 -1
- data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +1 -2
- data/tracks/ruby/exercises/rail-fence-cipher/rail_fence_cipher_test.rb +0 -1
- data/tracks/ruby/exercises/raindrops/.meta/generator/raindrops_cases.rb +1 -1
- data/tracks/ruby/exercises/raindrops/raindrops_test.rb +1 -2
- data/tracks/ruby/exercises/rna-transcription/.meta/generator/rna_transcription_cases.rb +1 -1
- data/tracks/ruby/exercises/rna-transcription/rna_transcription_test.rb +1 -2
- data/tracks/ruby/exercises/robot-name/robot_name_test.rb +0 -1
- data/tracks/ruby/exercises/robot-simulator/robot_simulator_test.rb +0 -1
- data/tracks/ruby/exercises/roman-numerals/.meta/generator/roman_numerals_cases.rb +1 -1
- data/tracks/ruby/exercises/roman-numerals/roman_numerals_test.rb +1 -2
- data/tracks/ruby/exercises/run-length-encoding/.meta/generator/run_length_encoding_cases.rb +5 -1
- data/tracks/ruby/exercises/run-length-encoding/run_length_encoding_test.rb +14 -15
- data/tracks/ruby/exercises/saddle-points/saddle_points_test.rb +0 -1
- data/tracks/ruby/exercises/say/.meta/generator/say_cases.rb +1 -1
- data/tracks/ruby/exercises/say/say_test.rb +1 -2
- data/tracks/ruby/exercises/scale-generator/scale_generator_test.rb +0 -1
- data/tracks/ruby/exercises/scrabble-score/scrabble_score_test.rb +0 -1
- data/tracks/ruby/exercises/secret-handshake/secret_handshake_test.rb +0 -1
- data/tracks/ruby/exercises/series/series_test.rb +0 -1
- data/tracks/ruby/exercises/sieve/.meta/generator/sieve_cases.rb +1 -1
- data/tracks/ruby/exercises/sieve/sieve_test.rb +1 -2
- data/tracks/ruby/exercises/simple-cipher/simple_cipher_test.rb +0 -1
- data/tracks/ruby/exercises/space-age/space_age_test.rb +0 -1
- data/tracks/ruby/exercises/strain/strain_test.rb +0 -1
- data/tracks/ruby/exercises/sum-of-multiples/sum_of_multiples_test.rb +0 -1
- data/tracks/ruby/exercises/tournament/.meta/.version +1 -1
- data/tracks/ruby/exercises/tournament/.meta/generator/tournament_cases.rb +1 -1
- data/tracks/ruby/exercises/tournament/example.rb +4 -2
- data/tracks/ruby/exercises/tournament/tournament_test.rb +20 -3
- data/tracks/ruby/exercises/transpose/.meta/generator/transpose_cases.rb +1 -1
- data/tracks/ruby/exercises/transpose/transpose_test.rb +1 -2
- data/tracks/ruby/exercises/triangle/.meta/generator/triangle_cases.rb +1 -1
- data/tracks/ruby/exercises/triangle/triangle_test.rb +1 -2
- data/tracks/ruby/exercises/trinary/trinary_test.rb +0 -1
- data/tracks/ruby/exercises/twelve-days/twelve_days_test.rb +0 -1
- data/tracks/ruby/exercises/two-bucket/.meta/.version +1 -1
- data/tracks/ruby/exercises/two-bucket/.meta/generator/two_bucket_cases.rb +1 -1
- data/tracks/ruby/exercises/two-bucket/example.rb +1 -1
- data/tracks/ruby/exercises/two-bucket/two_bucket_test.rb +18 -3
- data/tracks/ruby/exercises/word-count/.meta/generator/word_count_cases.rb +1 -1
- data/tracks/ruby/exercises/word-count/word_count_test.rb +1 -2
- data/tracks/ruby/exercises/wordy/.meta/generator/wordy_cases.rb +1 -1
- data/tracks/ruby/exercises/wordy/wordy_test.rb +1 -2
- data/tracks/ruby/lib/generator/{exercise_cases.rb → exercise_case.rb} +0 -0
- data/tracks/ruby/lib/generator/exercise_case/assertion.rb +2 -1
- data/tracks/ruby/lib/generator/files/track_files.rb +15 -10
- data/tracks/ruby/lib/generator/template_values.rb +4 -2
- data/tracks/ruby/lib/generator/test_template.erb +1 -2
- data/tracks/ruby/lib/tasks/exercise.rb +9 -1
- data/tracks/ruby/test/fixtures/xruby/exercises/alpha/.meta/generator/test_template.erb +0 -1
- data/tracks/ruby/test/fixtures/xruby/exercises/alpha/{example.rb → .meta/solutions/alpha.rb} +0 -0
- data/tracks/ruby/test/fixtures/xruby/exercises/beta/.meta/generator/beta_cases.rb +1 -1
- data/tracks/ruby/test/fixtures/xruby/exercises/beta/example.tt +0 -1
- data/tracks/ruby/test/fixtures/xruby/lib/generator/test_template.erb +0 -1
- data/tracks/ruby/test/generator/exercise_case/assertion_test.rb +6 -0
- data/tracks/ruby/test/generator/{exercise_cases_test.rb → exercise_case_test.rb} +0 -0
- data/tracks/ruby/test/generator/files/track_files_test.rb +14 -18
- data/tracks/ruby/test/generator/template_values_test.rb +2 -0
- data/tracks/ruby/test/tasks/exercise_test.rb +6 -0
- data/tracks/ruby/test/tasks/exercise_tests_runner_legacy_test.rb +64 -0
- data/tracks/ruby/test/tasks/exercise_tests_runner_test.rb +2 -2
- metadata +13 -6
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'gigasecond'
|
5
4
|
|
6
|
-
# Common test data version: 61e7d70
|
5
|
+
# Common test data version: 1.0.0 61e7d70
|
7
6
|
class GigasecondTest < Minitest::Test
|
8
7
|
def test_date_only_specification_of_time
|
9
8
|
# skip
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'hamming'
|
5
4
|
|
6
|
-
# Common test data version: bb56dc7
|
5
|
+
# Common test data version: 1.0.0 bb56dc7
|
7
6
|
class HammingTest < Minitest::Test
|
8
7
|
def test_identical_strands
|
9
8
|
# skip
|
@@ -12,7 +12,7 @@ rescue LoadError => e
|
|
12
12
|
exit 1
|
13
13
|
end
|
14
14
|
|
15
|
-
# Common test data version: <%= abbreviated_commit_hash %>
|
15
|
+
# Common test data version: <%= canonical_data_version %> <%= abbreviated_commit_hash %>
|
16
16
|
class HelloWorldTest < Minitest::Test
|
17
17
|
<% test_cases.each do |test_case| %>
|
18
18
|
def <%= test_case.name %>
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'largest_series_product'
|
5
4
|
|
6
|
-
# Common test data version: e79b832
|
5
|
+
# Common test data version: 1.0.0 e79b832
|
7
6
|
class LargestSeriesProductTest < Minitest::Test
|
8
7
|
def test_finds_the_largest_product_if_span_equals_length
|
9
8
|
# skip
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'leap'
|
5
4
|
|
6
|
-
# Common test data version: <%= abbreviated_commit_hash %>
|
5
|
+
# Common test data version: <%= canonical_data_version %> <%= abbreviated_commit_hash %>
|
7
6
|
class Date
|
8
7
|
def leap?
|
9
8
|
raise RuntimeError, "Implement this yourself instead of using Ruby's implementation."
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'leap'
|
5
4
|
|
6
|
-
# Common test data version: cc65ebe
|
5
|
+
# Common test data version: 1.0.0 cc65ebe
|
7
6
|
class Date
|
8
7
|
def leap?
|
9
8
|
raise RuntimeError, "Implement this yourself instead of using Ruby's implementation."
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'luhn'
|
5
4
|
|
6
|
-
# Common test data version: c826372
|
5
|
+
# Common test data version: 1.0.0 c826372
|
7
6
|
class LuhnTest < Minitest::Test
|
8
7
|
def test_single_digit_strings_can_not_be_valid
|
9
8
|
# skip
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'nth_prime'
|
5
4
|
|
6
|
-
# Common test data version: 016d65b
|
5
|
+
# Common test data version: 1.0.0 016d65b
|
7
6
|
class NthPrimeTest < Minitest::Test
|
8
7
|
def test_first_prime
|
9
8
|
# skip
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'ocr_numbers'
|
5
4
|
|
6
|
-
# Common test data version: 80782b6
|
5
|
+
# Common test data version: 1.0.0 80782b6
|
7
6
|
class OcrNumbersTest < Minitest::Test
|
8
7
|
def test_recognizes_0
|
9
8
|
# skip
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'pangram'
|
5
4
|
|
6
|
-
# Common test data version: f375051
|
5
|
+
# Common test data version: 1.0.0 f375051
|
7
6
|
class PangramTest < Minitest::Test
|
8
7
|
def test_sentence_empty
|
9
8
|
# skip
|
@@ -0,0 +1 @@
|
|
1
|
+
1
|
@@ -1,45 +1,29 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
# technically, the central office (exchange) code
|
12
|
-
def exchange_code
|
13
|
-
number[3..5]
|
14
|
-
end
|
1
|
+
module PhoneNumber
|
2
|
+
NANP_PROTOCOL = %r{
|
3
|
+
\A
|
4
|
+
(?<international_code>1?)
|
5
|
+
(?<area_code>[2-9]{1}[0-9]{2})
|
6
|
+
(?<exchange_code>[2-9]{1}[0-9]{2})
|
7
|
+
(?<subscriber>[0-9]{4})
|
8
|
+
\z
|
9
|
+
}x
|
15
10
|
|
16
|
-
def
|
17
|
-
number
|
11
|
+
def self.clean(number)
|
12
|
+
sanitized = digits_only(number)
|
13
|
+
sections = nanp_parse(sanitized)
|
14
|
+
format '%<area_code>s%<exchange_code>s%<subscriber>s', sections if sections
|
18
15
|
end
|
19
16
|
|
20
|
-
def
|
21
|
-
|
17
|
+
def self.digits_only(number)
|
18
|
+
number.gsub(/\D/, '')
|
22
19
|
end
|
23
20
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
return '0' * 10 if number.match(/[a-zA-Z]/)
|
28
|
-
number = number.gsub(/[^0-9]/, '')
|
29
|
-
normalize(number)
|
30
|
-
end
|
31
|
-
|
32
|
-
def normalize(number)
|
33
|
-
if valid?(number)
|
34
|
-
number[/(\d{10})\z/, 1]
|
35
|
-
else
|
36
|
-
'0' * 10
|
37
|
-
end
|
21
|
+
def self.nanp_parse(number)
|
22
|
+
matches = number.match(NANP_PROTOCOL)
|
23
|
+
matches.names.map(&:to_sym).zip(matches.captures).to_h if matches
|
38
24
|
end
|
25
|
+
end
|
39
26
|
|
40
|
-
|
41
|
-
|
42
|
-
return true if number.length == 11 && number.start_with?('1')
|
43
|
-
false
|
44
|
-
end
|
27
|
+
module BookKeeping
|
28
|
+
VERSION = 1
|
45
29
|
end
|
@@ -1,89 +1,93 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
gem 'minitest', '>= 5.0.0'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
require_relative 'phone_number'
|
5
4
|
|
5
|
+
# Common test data version: 51d2475
|
6
6
|
class PhoneNumberTest < Minitest::Test
|
7
|
-
def
|
8
|
-
|
9
|
-
assert_equal
|
7
|
+
def test_cleans_the_number
|
8
|
+
# skip
|
9
|
+
assert_equal "2234567890", PhoneNumber.clean("(223) 456-7890")
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
12
|
+
def test_cleans_numbers_with_dots
|
13
13
|
skip
|
14
|
-
|
15
|
-
assert_equal '9876543210', number
|
14
|
+
assert_equal "2234567890", PhoneNumber.clean("223.456.7890")
|
16
15
|
end
|
17
16
|
|
18
|
-
def
|
17
|
+
def test_cleans_numbers_with_multiple_spaces
|
19
18
|
skip
|
20
|
-
|
21
|
-
assert_equal '4561237890', number
|
19
|
+
assert_equal "2234567890", PhoneNumber.clean("223 456 7890 ")
|
22
20
|
end
|
23
21
|
|
24
|
-
def
|
22
|
+
def test_invalid_when_9_digits
|
25
23
|
skip
|
26
|
-
|
27
|
-
assert_equal '0000000000', number
|
24
|
+
assert_nil PhoneNumber.clean("123456789")
|
28
25
|
end
|
29
26
|
|
30
|
-
def
|
27
|
+
def test_invalid_when_11_digits_does_not_start_with_a_1
|
31
28
|
skip
|
32
|
-
|
33
|
-
assert_equal '0000000000', number
|
29
|
+
assert_nil PhoneNumber.clean("22234567890")
|
34
30
|
end
|
35
31
|
|
36
|
-
def
|
32
|
+
def test_valid_when_11_digits_and_starting_with_1
|
37
33
|
skip
|
38
|
-
|
39
|
-
assert_equal '9876543210', number
|
34
|
+
assert_equal "2234567890", PhoneNumber.clean("12234567890")
|
40
35
|
end
|
41
36
|
|
42
|
-
def
|
37
|
+
def test_valid_when_11_digits_and_starting_with_1_even_with_punctuation
|
43
38
|
skip
|
44
|
-
|
45
|
-
assert_equal '1234567890', number
|
39
|
+
assert_equal "2234567890", PhoneNumber.clean("+1 (223) 456-7890")
|
46
40
|
end
|
47
41
|
|
48
|
-
def
|
42
|
+
def test_invalid_when_more_than_11_digits
|
49
43
|
skip
|
50
|
-
|
51
|
-
assert_equal '0000000000', number
|
44
|
+
assert_nil PhoneNumber.clean("321234567890")
|
52
45
|
end
|
53
46
|
|
54
|
-
def
|
47
|
+
def test_invalid_with_letters
|
55
48
|
skip
|
56
|
-
|
57
|
-
assert_equal '0000000000', number
|
49
|
+
assert_nil PhoneNumber.clean("123-abc-7890")
|
58
50
|
end
|
59
51
|
|
60
|
-
def
|
52
|
+
def test_invalid_with_punctuations
|
61
53
|
skip
|
62
|
-
|
63
|
-
assert_equal '0000000000', number
|
54
|
+
assert_nil PhoneNumber.clean("123-@:!-7890")
|
64
55
|
end
|
65
56
|
|
66
|
-
def
|
57
|
+
def test_invalid_with_right_number_of_digits_but_letters_mixed_in
|
67
58
|
skip
|
68
|
-
|
69
|
-
assert_equal '123', number.area_code
|
59
|
+
assert_nil PhoneNumber.clean("1a2b3c4d5e6f7g8h9i0j")
|
70
60
|
end
|
71
61
|
|
72
|
-
def
|
62
|
+
def test_invalid_if_area_code_does_not_start_with_2_9
|
73
63
|
skip
|
74
|
-
|
75
|
-
assert_equal '987', number.area_code
|
64
|
+
assert_nil PhoneNumber.clean("(123) 456-7890")
|
76
65
|
end
|
77
66
|
|
78
|
-
def
|
67
|
+
def test_invalid_if_exchange_code_does_not_start_with_2_9
|
79
68
|
skip
|
80
|
-
|
81
|
-
assert_equal '(555) 123-4567', number.to_s
|
69
|
+
assert_nil PhoneNumber.clean("(223) 056-7890")
|
82
70
|
end
|
83
71
|
|
84
|
-
|
72
|
+
# Problems in exercism evolve over time, as we find better ways to ask
|
73
|
+
# questions.
|
74
|
+
# The version number refers to the version of the problem you solved,
|
75
|
+
# not your solution.
|
76
|
+
#
|
77
|
+
# Define a constant named VERSION inside of the top level BookKeeping
|
78
|
+
# module, which may be placed near the end of your file.
|
79
|
+
#
|
80
|
+
# In your file, it will look like this:
|
81
|
+
#
|
82
|
+
# module BookKeeping
|
83
|
+
# VERSION = 1 # Where the version number matches the one in the test.
|
84
|
+
# end
|
85
|
+
#
|
86
|
+
# If you are curious, read more about constants on RubyDoc:
|
87
|
+
# http://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/constants.html
|
88
|
+
|
89
|
+
def test_bookkeeping
|
85
90
|
skip
|
86
|
-
|
87
|
-
assert_equal '(123) 456-7890', number.to_s
|
91
|
+
assert_equal 1, BookKeeping::VERSION
|
88
92
|
end
|
89
93
|
end
|