test-ccnum.rkt
#lang racket/base
;; For legal info, see file "info.rkt".

(require (planet neil/overeasy:2)
         "ccnum.rkt")

(test-section 'ccnum

  (test (credit-card-number-seems-ok? "4408 0412 3456 7893") #t)
  (test (credit-card-number-seems-ok? "4408041234567893") #t)
  (test (credit-card-number-seems-ok? "   4408041234567893  ") #t)
  (test (credit-card-number-seems-ok? "5368 2358 9683 1135") #t)
  (test (credit-card-number-seems-ok? "4242 4242 4242 4242") #t)

  (test (credit-card-number-seems-ok? "0") #f)

  (test (credit-card-number-seems-ok? "4408 0412 3456 7890") #f)
  (test (credit-card-number-seems-ok? "4408 0412 3456 7891") #f)
  (test (credit-card-number-seems-ok? "4408 0412 3456 7892") #f)
  (test (credit-card-number-seems-ok? "4408 0412 3456 7894") #f)
  (test (credit-card-number-seems-ok? "4408 0412 3456 7895") #f)
  (test (credit-card-number-seems-ok? "4408 0412 3456 7896") #f)
  (test (credit-card-number-seems-ok? "4408 0412 3456 7897") #f)
  (test (credit-card-number-seems-ok? "4408 0412 3456 7898") #f)
  (test (credit-card-number-seems-ok? "4408 0412 3456 7899") #f)

  (test (credit-card-number-seems-ok? "4403 1234 5678 9012") #f)
  (test (credit-card-number-seems-ok? "4000 3456 7890 1234") #f)
  (test (credit-card-number-seems-ok? "4544 1234 5678 9123") #f)
  (test (credit-card-number-seems-ok? "4417 1234 5678 9112") #f)
  (test (credit-card-number-seems-ok? "1234 5678 9012 3456") #f)
  (test (credit-card-number-seems-ok? "4417 1234 5678 9112") #f)
  (test (credit-card-number-seems-ok? "5490 1234 5678 9123") #f)
  (test (credit-card-number-seems-ok? "5410 5678 1234 5678") #f)
  (test (credit-card-number-seems-ok? "4104 1600 1234 5678") #f)

  (test (credit-card-number-seems-ok? "3759 876543 21001") #f)

  (test (credit-card-number-seems-ok? "1") #f)
  (test (credit-card-number-seems-ok? "trump") #f)
  (test (credit-card-number-seems-ok? "") #f))