test-test.ss
(module test-test mzscheme
  
  (require "test.ss")
  
  (provide test-tests)

  (define successful-suite
    (make-test-suite
     "Example A"
     (make-test-case
      "Example 1"
      #t)
     (make-test-case
      "Example 2"
      #t)
     (make-test-case
      "Example 3"
      #t)))
  
  (define test-tests
    (make-test-suite
     "Test tests"
     (make-test-case "Empty test" #t)

     (make-test-case 
      "Test teardown action"
      (with-output-to-file "test.dat"
        (lambda () (display "hello!")))
      (run-test
       (make-test-case
        "dummy"
        teardown (delete-file "test.dat")))
      (assert-true (not (file-exists? "test.dat"))))

     (make-test-case
      "Test setup and teardown action"
      (assert-true (file-exists? "test.dat"))
      setup (with-output-to-file "test.dat"
        (lambda () (display "hello")))
      teardown (delete-file "test.dat"))

     (make-test-case
      "Test setup and teardown on test suite"
      (let ((foo 1))
        (assert-equal? foo 1)
        (make-test-suite
         'setup (set! foo 2)
         (make-test-case
          "Test foo"
          (assert-equal? foo 2))
         'teardown (set! foo 3))
        (assert-equal? foo 3)))
     
     (make-test-case
      "Test simple foldts"
      (assert-equal?
       '(S (C C C))
       (foldts
        (lambda (name setup teardown seed)
          seed)
        (lambda (name setup teardown seed kid-seed)
          (list 'S kid-seed))
        (lambda (name action setup teardown seed)
          (cons 'C seed))
        (list)
        successful-suite)))

     (make-test-case
      "Test fold-test-results"
      (fold-test-results
       (lambda (name seed)
         (assert-equal? name "Example A"))
       (lambda (result seed)
         (assert-true (test-success? result)))
       (list)
       successful-suite))

     (make-test-case
      "Test run-test"
      (let ((result (run-test successful-suite)))
        (assert = (length result) 3)
        (assert-true (test-success? (car result)))
        (assert-true (test-success? (cadr result)))
        (assert-true (test-success? (caddr result)))))
        
     ))
  )