Skip to content

Instantly share code, notes, and snippets.

@chhhris
Created June 28, 2013 00:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chhhris/5881487 to your computer and use it in GitHub Desktop.
Save chhhris/5881487 to your computer and use it in GitHub Desktop.
require 'fis/test'
class Phone
def initialize(number)
@number = number.gsub(/\D/, '')
if @number.length == 11 && @number[0] == "1"
@number = @number[1..10]
end
end
def number
@number.length == 10 ? @number : "0000000000"
end
def area_code
@number[0..2]
end
def to_s
@number = "(#{number[0..2]}) #{number[3..5]}-#{number[6..10]}"
end
end
class Problems
extend Fis::Test
test 'cleans_number' do
number = Phone.new("(123) 456-7890").number
assert_equal "1234567890", number
end
test 'cleans_number_with_dots' do
number = Phone.new("123.456.7890").number
assert_equal "1234567890", number
end
test 'valid_when_11_digits_and_first_is_1' do
number = Phone.new("11234567890").number
assert_equal "1234567890", number
end
test 'invalid_when_11_digits' do
number = Phone.new("21234567890").number
assert_equal "0000000000", number
end
test 'invalid_when_9_digits' do
number = Phone.new("123456789").number
assert_equal "0000000000", number
end
test 'area_code' do
number = Phone.new("1234567890")
assert_equal "123", number.area_code
end
test 'pretty_print' do
number = Phone.new("1234567890")
assert_equal "(123) 456-7890", number.to_s
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment