111 lines
2.2 KiB
Rust
111 lines
2.2 KiB
Rust
use luhn::*;
|
|
|
|
#[test]
|
|
fn single_digit_strings_can_not_be_valid() {
|
|
assert!(!is_valid("1"));
|
|
}
|
|
|
|
#[test]
|
|
fn a_single_zero_is_invalid() {
|
|
assert!(!is_valid("0"));
|
|
}
|
|
|
|
#[test]
|
|
fn a_simple_valid_sin_that_remains_valid_if_reversed() {
|
|
assert!(is_valid("059"));
|
|
}
|
|
|
|
#[test]
|
|
fn a_simple_valid_sin_that_becomes_invalid_if_reversed() {
|
|
assert!(is_valid("59"));
|
|
}
|
|
|
|
#[test]
|
|
fn a_valid_canadian_sin() {
|
|
assert!(is_valid("055 444 285"));
|
|
}
|
|
|
|
#[test]
|
|
fn invalid_canadian_sin() {
|
|
assert!(!is_valid("055 444 286"));
|
|
}
|
|
|
|
#[test]
|
|
fn invalid_credit_card() {
|
|
assert!(!is_valid("8273 1232 7352 0569"));
|
|
}
|
|
|
|
#[test]
|
|
fn invalid_long_number_with_an_even_remainder() {
|
|
assert!(!is_valid("1 2345 6789 1234 5678 9012"));
|
|
}
|
|
|
|
#[test]
|
|
fn invalid_long_number_with_a_remainder_divisible_by_5() {
|
|
assert!(!is_valid("1 2345 6789 1234 5678 9013"));
|
|
}
|
|
|
|
#[test]
|
|
fn valid_number_with_an_even_number_of_digits() {
|
|
assert!(is_valid("095 245 88"));
|
|
}
|
|
|
|
#[test]
|
|
fn valid_number_with_an_odd_number_of_spaces() {
|
|
assert!(is_valid("234 567 891 234"));
|
|
}
|
|
|
|
#[test]
|
|
fn valid_strings_with_a_non_digit_added_at_the_end_become_invalid() {
|
|
assert!(!is_valid("059a"));
|
|
}
|
|
|
|
#[test]
|
|
fn valid_strings_with_punctuation_included_become_invalid() {
|
|
assert!(!is_valid("055-444-285"));
|
|
}
|
|
|
|
#[test]
|
|
fn valid_strings_with_symbols_included_become_invalid() {
|
|
assert!(!is_valid("055# 444$ 285"));
|
|
}
|
|
|
|
#[test]
|
|
fn single_zero_with_space_is_invalid() {
|
|
assert!(!is_valid(" 0"));
|
|
}
|
|
|
|
#[test]
|
|
fn more_than_a_single_zero_is_valid() {
|
|
assert!(is_valid("0000 0"));
|
|
}
|
|
|
|
#[test]
|
|
fn input_digit_9_is_correctly_converted_to_output_digit_9() {
|
|
assert!(is_valid("091"));
|
|
}
|
|
|
|
#[test]
|
|
fn very_long_input_is_valid() {
|
|
assert!(is_valid("9999999999 9999999999 9999999999 9999999999"));
|
|
}
|
|
|
|
#[test]
|
|
fn valid_luhn_with_an_odd_number_of_digits_and_non_zero_first_digit() {
|
|
assert!(is_valid("109"));
|
|
}
|
|
|
|
#[test]
|
|
fn using_ascii_value_for_non_doubled_non_digit_isn_t_allowed() {
|
|
assert!(!is_valid("055b 444 285"));
|
|
}
|
|
|
|
#[test]
|
|
fn using_ascii_value_for_doubled_non_digit_isn_t_allowed() {
|
|
assert!(!is_valid(":9"));
|
|
}
|
|
|
|
#[test]
|
|
fn non_numeric_non_space_char_in_the_middle_with_a_sum_that_s_divisible_by_10_isn_t_allowed() {
|
|
assert!(!is_valid("59%59"));
|
|
}
|