(begin-tests!) ; The basic tests (test! (classify-triangle 1 1 1) "equilateral") (test! (classify-triangle 2 2 3) "isoceles") (test! (classify-triangle 3 4 5) "scalene") ; Triangle validation (test-error! (classify-triangle 1 1 3)) (test-error! (classify-triangle 1 1 2)) ; Valid side validation (test-error! (classify-triangle 0 1 1)) (test-error! (classify-triangle 1 0 1)) (test-error! (classify-triangle 1 1 0)) (test-error! (classify-triangle -1 1 1)) (test-error! (classify-triangle 1 -1 1)) (test-error! (classify-triangle 1 1 -1)) ; Isoceles tests (test! (classify-triangle 2 2 3) "isoceles") (test! (classify-triangle 2 3 2) "isoceles") (test! (classify-triangle 3 2 2) "isoceles") ; More triangle validation (test-error! (classify-triangle 1 1 3)) (test-error! (classify-triangle 1 3 1)) (test-error! (classify-triangle 3 1 1)) ; Large values (test! (classify-triangle 10000000000 10000000000 10000000000) "equilateral") ; Small rational numbers (test! (classify-triangle 1/2 1/2 1/2) "equilateral") (test! (classify-triangle 2/5 2/5 3/5) "isoceles") (test! (classify-triangle 3/7 4/7 5/7) "scalene") test-error! (classify-triangle 1/6 1/6 1/2)) ; More extreme values (test! (classify-triangle 1 1 1/9999999999999999) "isoceles") (test! (classify-triangle 1.0 1.0 1/9999999999999999) "isoceles") (end-tests!)