(module password-test mzscheme
(require (planet "test.ss" ("schematics" "schemeunit.plt" 1 1)))
(require "password.ss")
(provide password-tests)
(define password-tests
(make-test-suite
"All tests for password"
(make-test-case
"String within min and max length is randomly altered"
(assert-false
(string=?
(string->password
(make-string (add1 min-length) #\e))
(make-string (add1 min-length) #\e))))
(make-test-case
"String less than min length is padded"
(let ((password
(string->password (make-string (sub1 min-length) #\e))))
(assert = (string-length password) min-length)))
(make-test-case
"String greater than max length is truncated"
(let ((password
(string->password (make-string (add1 max-length) #\e))))
(assert = (string-length password) max-length)))
(make-test-case
"make-passwords finds word list file"
(assert-not-exn
(lambda ()
(make-passwords 1))))
(make-test-case
"make-passwords returns the correct number of results"
(assert = (length (make-passwords 100)) 100))
))
)