#lang racket/base (require racket/port (planet neil/testeez:1:0) "numformat.rkt") (testeez "test-numformat.rkt" (test-define "" f (lambda (proc arg) (with-output-to-string (lambda () (proc arg))))) (test/equal "" (f display-number/us-style -987654321.69696969) "-987,654,321.6969697") (test/equal "" (f display-number/european-style -987654321.69696969) "-987'654'321,6969697") (test-define "" display-number-with-plus-minus-and-min-1-frac (make-number-displayer '((sign plus-minus) (pad-fractional-length 1)))) (test/equal "" (f display-number-with-plus-minus-and-min-1-frac -1) "-1.0") (test/equal "" (f display-number-with-plus-minus-and-min-1-frac 0) "0.0") (test/equal "" (f display-number-with-plus-minus-and-min-1-frac 1) "+1.0") (test/equal "" (f display-number-with-plus-minus-and-min-1-frac -1.0) "-1.0") (test/equal "" (f display-number-with-plus-minus-and-min-1-frac 0.0) "0.0") (test/equal "" (f display-number-with-plus-minus-and-min-1-frac 1.0) "+1.0") (test-define "" display-number-with-plus-minus-and-min-0-frac (make-number-displayer '((sign plus-minus) (pad-fractional-length #f)))) (test/equal "" (f display-number-with-plus-minus-and-min-0-frac -1) "-1") (test/equal "" (f display-number-with-plus-minus-and-min-0-frac 0) "0") (test/equal "" (f display-number-with-plus-minus-and-min-0-frac 1) "+1") (test/equal "" (f display-number-with-plus-minus-and-min-0-frac -1.0) "-1") (test/equal "" (f display-number-with-plus-minus-and-min-0-frac 0.0) "0") (test/equal "" (f display-number-with-plus-minus-and-min-0-frac 1.0) "+1") (test-define "" display-dollars-and-cents (make-number-displayer '((sign parens) (prefix "$") (pad-whole-char #f) (pad-whole-length #f) (whole-spacers-char #\,) (whole-spacers-interval 3) (decimal-point #\.) (max-fractional-length 2) (pad-fractional-char #\0) (pad-fractional-length 2) (suffix #f)))) (test/equal "" (f display-dollars-and-cents -987654321.69696969) "($987,654,321.69)") (test/equal "" (f display-dollars-and-cents -69.01) "($69.01)") (test/equal "" (f display-dollars-and-cents -69.1) "($69.10)") (test/equal "" (f display-dollars-and-cents 69) "$69.00"))