;;; @section Tests ;;; The @code{numspell.scm} test suite can be enabled by editing the source ;;; code file and loading @uref{http://www.neilvandyke.org/testeez/, Testeez}. (use testeez numspell utils numbers) (define (%numspell:test) (testeez "numspell.scm" ;; (test/equal "" (number->english 0) "zero") (test/equal "" (number->english 1) "one") (test/equal "" (number->english 2) "two") (test/equal "" (number->english 3) "three") (test/equal "" (number->english 4) "four") (test/equal "" (number->english 5) "five") (test/equal "" (number->english 6) "six") (test/equal "" (number->english 7) "seven") (test/equal "" (number->english 8) "eight") (test/equal "" (number->english 9) "nine") (test/equal "" (number->english 10) "ten") (test/equal "" (number->english 11) "eleven") (test/equal "" (number->english 12) "twelve") (test/equal "" (number->english 13) "thirteen") (test/equal "" (number->english 14) "fourteen") (test/equal "" (number->english 15) "fifteen") (test/equal "" (number->english 16) "sixteen") (test/equal "" (number->english 17) "seventeen") (test/equal "" (number->english 18) "eighteen") (test/equal "" (number->english 19) "nineteen") (test/equal "" (number->english 20) "twenty") (test/equal "" (number->english 21) "twenty-one") (test/equal "" (number->english 30) "thirty") (test/equal "" (number->english 40) "forty") (test/equal "" (number->english 50) "fifty") (test/equal "" (number->english 60) "sixty") (test/equal "" (number->english 70) "seventy") (test/equal "" (number->english 80) "eighty") (test/equal "" (number->english 90) "ninety") (test/equal "" (number->english 100) "one hundred") (test/equal "" (number->english 102) "one hundred two") (test/equal "" (number->english 1002) "one thousand two") (test/equal "" (number->english 10002) "ten thousand two") (test/equal "" (number->english 100002) "one hundred thousand two") (test/equal "" (number->english 1000002) "one million two") (test/equal "" (number->english 10000002) "ten million two") (test/equal "" (number->english 100000002) "one hundred million two") (test/equal "" (number->english 1000000002) "one billion two") (test/equal "" (number->english 1000000000002) "one trillion two") ;; (test/equal "" (number->english 100020003000) "one hundred billion twenty million three thousand") ;; (test/equal "" (number->english 123) "one hundred twenty-three") (test/equal "" (number->english 1234) "one thousand two hundred thirty-four") (test/equal "" (number->english 12345) "twelve thousand three hundred forty-five") (test/equal "" (number->english 123456) "one hundred twenty-three thousand four hundred fifty-six") (test/equal "" (number->english 1234567) "one million two hundred thirty-four thousand five hundred sixty-seven") ;; (test/equal "" (number->english 123456789012345678901234567890) "one hundred twenty-three octillion four hundred fifty-six septillion seven hundred eighty-nine sextillion twelve quintillion three hundred forty-five quadrillion six hundred seventy-eight trillion nine hundred one billion two hundred thirty-four million five hundred sixty-seven thousand eight hundred ninety") ;; (test/equal "" (number->english 1/3) "one over three") ;; (test/equal "" (number->english 123.0123) "one hundred twenty-three point zero one two three") ;; (test-define "" f (lambda (n) (let ((x (expt 10 n))) (list (number->short-scale-english x) (number->long-scale-english x))))) (test/equal "" (f 3) '("one thousand" "one thousand")) (test/equal "" (f 6) '("one million" "one million")) (test/equal "" (f 9) '("one billion" "one thousand million")) (test/equal "" (f 12) '("one trillion" "one billion")) (test/equal "" (f 15) '("one quadrillion" "one thousand billion")) (test/equal "" (f 18) '("one quintillion" "one trillion")) ;; (test/equal "" (number->english -1) "negative one") )) (%numspell:test)