Download from: http://web.mit.edu/~axch/www/test_manager.html

API documentation: http://web.mit.edu/~axch/www/testing-1.2.html


Example:
Exercise 1.3. Define a procedure that takes three numbers as arguments and returns the sum of the squares of the two larger numbers.

(load "test-manager/load.scm")


(in-test-group
 ex13-test

 (define-test (order-trap)
   ;; a>b>c, b>c>a, c>a>b
   ;; a<b<c, b<c<a, c<a<b
   (assert= 13 (ex13 3 2 1))
   (assert= 13 (ex13 1 3 2))
   (assert= 13 (ex13 2 1 3))
   (assert= 13 (ex13 1 2 3))
   (assert= 13 (ex13 3 1 2))
   (assert= 13 (ex13 2 3 1)))
 (define-test (equal-trap)
   ;; a=b=c
   ;; a=b>c, b=c>a, c=a>b
   ;; a=b<c, b=c<a, c=a<b
   (assert= 0 (ex13 0 0 0))
   (assert= 2 (ex13 0 1 1))
   (assert= 2 (ex13 1 0 1))
   (assert= 2 (ex13 1 1 0))
   (assert= 1 (ex13 1 0 0))
   (assert= 1 (ex13 0 1 0))
   (assert= 1 (ex13 0 0 1))))


Wrong version

(define (ex13 a b c)

  (cond ((and (> a b) (> c b)) (sum-of-squares a c))
    ((and (> a c) (> b c)) (sum-of-squares a b))
    (else (sum-of-squares b c))))


(run-test '(ex13-test))

.F
  1) Failure (#[continuation 16]):
(ex13-test equal-trap):

<1> expected to be = to
<0>.

2 tests, 1 failures, 0 errors.
;Value: 1


Correct version

(define (ex13 a b c)

  (cond ((and (>= a b) (>= c b)) (sum-of-squares a c))
    ((and (>= a c) (>= b c)) (sum-of-squares a b))
    (else (sum-of-squares b c))))


(run-test '(ex13-test))

..

2 tests, 0 failures, 0 errors.

;Value: 0


kimotsi