(module io mzscheme (require (lib "test.ss" "schemeunit")) (require (lib "text-ui.ss" "schemeunit")) (require "../../io.ss") (define test:with-output-to-string (make-test-suite "with-output-to-string" (make-test-case "" (assert string=? (with-output-to-string (display "hello") (display ", ") (display "world") (display "!") (newline)) "hello, world!\n")))) (define test:bit-set? (make-test-suite "bit-set?" (make-test-case "" (assert-true (bit-set? 0 #b1))) (make-test-case "" (assert-true (bit-set? 1 #b10))) (make-test-case "" (assert-true (bit-set? 2 #b100))) (make-test-case "" (assert-true (bit-set? 9 #b1000000000))) (make-test-case "" (assert-false (bit-set? 0 #b11111111110))) (make-test-case "" (assert-false (bit-set? 1 #b11111111101))) (make-test-case "" (assert-false (bit-set? 2 #b11111111011))) (make-test-case "" (assert-false (bit-set? 9 #b10111111111))) )) (define test:stretch-bytes (make-test-suite "stretch-bytes" (make-test-case "stretch big-endian" (assert bytes=? (stretch-bytes #"dave" 8 #t (char->integer #\X)) #"XXXXdave")) (make-test-case "stretch small-endian" (assert bytes=? (stretch-bytes #"dave" 8 #f (char->integer #\X)) #"daveXXXX")) (make-test-case "stretch big-endian with default fill" (assert bytes=? (stretch-bytes #"dave" 8 #t) #"\0\0\0\0dave")) (make-test-case "stretch small-endian with default fill" (assert bytes=? (stretch-bytes #"dave" 8 #f) #"dave\0\0\0\0")) (make-test-case "stretch none big-endian" (assert bytes=? (stretch-bytes #"dave" 4 #t) #"dave")) (make-test-case "stretch none small-endian" (assert bytes=? (stretch-bytes #"dave" 4 #f) #"dave")) ;; TODO: why isn't this an exn:fail:contract? (make-test-case "stretch not enough big-endian" (assert-exn exn:fail? (lambda () (stretch-bytes #"dave" 2 #t)))) (make-test-case "stretch not enough small-endian" (assert-exn exn:fail? (lambda () (stretch-bytes #"dave" 3 #f)))) )) (define (integer->bytes->integer n big-endian?) (bytes->integer (integer->integer-bytes n 4 #f big-endian?) #t big-endian?)) (define test:bytes->unsigned (make-test-suite "bytes->integer (unsigned)" (make-test-case "No bytes - big-endian" (assert = (bytes->integer (bytes) #f #t) 0)) (make-test-case "No bytes - small-endian" (assert = (bytes->integer (bytes) #f #f) 0)) (make-test-case "Simple test 1 - big-endian" (assert = (bytes->integer (bytes 2 1) #f #t) 513)) (make-test-case "Simple test 1 - small-endian" (assert = (bytes->integer (bytes 2 1) #f #f) 258)) (make-test-case "Reverse endianness" (assert = (bytes->integer (bytes 24 28 200 12) #f #t) (bytes->integer (bytes 12 200 28 24) #f #f))) (make-test-case "" (assert = (integer->bytes->integer 2461357 #t) 2461357)) )) (define io-tests (make-test-suite "All io.ss tests" test:with-output-to-string test:bit-set? test:stretch-bytes test:bytes->unsigned )) (test/text-ui io-tests) (provide io-tests))