|
require 'minitest/autorun' |
|
require 'minitest/pride' |
|
require './credit_check' |
|
|
|
class CreditCheckTest < MiniTest::Test |
|
def test_empty_string_is_invalid |
|
checker = CreditCheck.new |
|
result = checker.validate('') |
|
assert_equal false, result |
|
end |
|
|
|
def test_single_zero_char_is_valid |
|
checker = CreditCheck.new |
|
result = checker.validate('0') |
|
assert_equal true, result |
|
end |
|
|
|
def test_single_nonzero_char_is_invalid |
|
checker = CreditCheck.new |
|
result = checker.validate('1') |
|
assert_equal false, result |
|
end |
|
|
|
def test_small_strings |
|
checker = CreditCheck.new |
|
result = checker.validate('42') |
|
assert_equal true, result |
|
result = checker.validate('50') |
|
assert_equal false, result |
|
end |
|
|
|
def test_medium_strings |
|
checker = CreditCheck.new |
|
result = checker.validate('42424242') |
|
assert_equal true, result |
|
result = checker.validate('50505050') |
|
assert_equal false, result |
|
end |
|
|
|
def test_actual_card_numbers |
|
checker = CreditCheck.new |
|
result = checker.validate('5541808923795240') |
|
assert_equal true, result |
|
result = checker.validate('4024007136512380') |
|
assert_equal true, result |
|
result = checker.validate('5541801923795240') |
|
assert_equal false, result |
|
result = checker.validate('4024007106512380') |
|
assert_equal false, result |
|
end |
|
|
|
def test_american_express |
|
checker = CreditCheck.new |
|
result = checker.validate('342804633855673') |
|
assert_equal true, result |
|
result = checker.validate('342801633855673') |
|
assert_equal false, result |
|
end |
|
end |