example.ss
;; The tests below are intended as examples of how to use the test
;; package.  They test PLT Scheme's arithmetic operations and some
;; simple file reading

(require  (lib "test.ss"    "schemeunit"))
(require  (lib "text-ui.ss" "schemeunit"))

(test/text-ui
 (make-test-suite
  "Example tests"
  (make-test-suite
   "Arithmetic tests"
   (make-test-case "Multiply by zero" 
		   (assert = (* 1234 0) 0))
   (make-test-case "Add zero" 
		   (assert = (+ 1234 0) 1234))
   (make-test-case "Multiply by one"
		   (assert = (* 123.0 1) 123))
   (make-test-case "Add one"
		   (assert = (+ 123.0 1) 124))
   (make-test-case "Expt 0 0"
		   (assert = 1 (expt 0 0)))
   (make-test-case "Expt 0 1"
		   (assert = 0 (expt 0 1)))
   (make-test-case "Expt 0.0 0.0"
		   (assert = 1.0 (expt 0.0 0.0)))
   (make-test-case "Expt 0.0 1.0"
		   (assert = 0.0 (expt 0.0 1.0)))
   )
  
  (make-test-suite
   "File tests"
   ;; An example with a teardown action
   (let ((port (open-input-string "this is a test string")))
     (make-test-case
      "String port read"
      (assert-equal? "this is a test string" (read-line port))
      teardown
      (close-input-port port)))
   ;; An example with a setup and a teardown action
   (make-test-case
    "File port read"
    (with-input-from-file "test.dat"
      (lambda ()
        (assert-equal? "foo" (read))))
    setup
    (with-output-to-file "test.dat"
      (lambda ()
        (write "foo")))
    teardown
    (delete-file "test.dat"))
   )
  ))