add divide-by-zero tests for div, mod, etc.
svn: r11014
This commit is contained in:
parent
e548107acd
commit
ea0a7cdfb5
|
@ -220,6 +220,13 @@
|
||||||
|
|
||||||
(test/values (fxdiv0-and-mod0 -123 10) -12 -3)
|
(test/values (fxdiv0-and-mod0 -123 10) -12 -3)
|
||||||
|
|
||||||
|
(test/exn (fxdiv 1 0) &assertion)
|
||||||
|
(test/exn (fxmod 1 0) &assertion)
|
||||||
|
(test/exn (fxdiv-and-mod 1 0) &assertion)
|
||||||
|
(test/exn (fxdiv0 1 0) &assertion)
|
||||||
|
(test/exn (fxmod0 1 0) &assertion)
|
||||||
|
(test/exn (fxdiv0-and-mod0 1 0) &assertion)
|
||||||
|
|
||||||
(test (fxnot 0) -1)
|
(test (fxnot 0) -1)
|
||||||
(test (fxnot -2) 1)
|
(test (fxnot -2) 1)
|
||||||
(test (fxnot 1) -2)
|
(test (fxnot 1) -2)
|
||||||
|
|
|
@ -13,6 +13,19 @@
|
||||||
(proc -inf.0)
|
(proc -inf.0)
|
||||||
(proc +nan.0))
|
(proc +nan.0))
|
||||||
|
|
||||||
|
(define-syntax try-bad-divs
|
||||||
|
(syntax-rules ()
|
||||||
|
[(_ op)
|
||||||
|
'nothing
|
||||||
|
;; The spec is unclear whether the following
|
||||||
|
;; are allowed to raise exceptions.
|
||||||
|
#;
|
||||||
|
(begin
|
||||||
|
(test/unspec (op 1.0 0.0))
|
||||||
|
(test/unspec (op +inf.0 1.0))
|
||||||
|
(test/unspec (op -inf.0 1.0))
|
||||||
|
(test/unspec (op +nan.0 1.0)))]))
|
||||||
|
|
||||||
(define (run-arithmetic-flonums-tests)
|
(define (run-arithmetic-flonums-tests)
|
||||||
|
|
||||||
(test (fl=? +inf.0 +inf.0) #t)
|
(test (fl=? +inf.0 +inf.0) #t)
|
||||||
|
@ -209,6 +222,10 @@
|
||||||
|
|
||||||
(test/values (fldiv-and-mod -123.0 10.0) -13.0 7.0)
|
(test/values (fldiv-and-mod -123.0 10.0) -13.0 7.0)
|
||||||
|
|
||||||
|
(try-bad-divs fldiv)
|
||||||
|
(try-bad-divs flmod)
|
||||||
|
(try-bad-divs fldiv-and-mod)
|
||||||
|
|
||||||
(test (fldiv0 123.0 10.0) 12.0)
|
(test (fldiv0 123.0 10.0) 12.0)
|
||||||
(test (flmod0 123.0 10.0) 3.0)
|
(test (flmod0 123.0 10.0) 3.0)
|
||||||
(test (fldiv0 123.0 -10.0) -12.0)
|
(test (fldiv0 123.0 -10.0) -12.0)
|
||||||
|
@ -220,6 +237,10 @@
|
||||||
|
|
||||||
(test/values (fldiv0-and-mod0 -123.0 10.0) -12.0 -3.0)
|
(test/values (fldiv0-and-mod0 -123.0 10.0) -12.0 -3.0)
|
||||||
|
|
||||||
|
(try-bad-divs fldiv0)
|
||||||
|
(try-bad-divs flmod0)
|
||||||
|
(try-bad-divs fldiv0-and-mod0)
|
||||||
|
|
||||||
(test (flfloor 3.1) 3.0)
|
(test (flfloor 3.1) 3.0)
|
||||||
(test (flfloor -3.1) -4.0)
|
(test (flfloor -3.1) -4.0)
|
||||||
(test (flceiling 3.1) 4.0)
|
(test (flceiling 3.1) 4.0)
|
||||||
|
|
|
@ -58,6 +58,16 @@
|
||||||
(test (< (mod0 x1 x2) (abs (/ x2 2))) #t)
|
(test (< (mod0 x1 x2) (abs (/ x2 2))) #t)
|
||||||
(test (+ (* (div0 x1 x2) x2) (mod0 x1 x2)) x1))]))
|
(test (+ (* (div0 x1 x2) x2) (mod0 x1 x2)) x1))]))
|
||||||
|
|
||||||
|
(define-syntax try-bad-divs
|
||||||
|
(syntax-rules ()
|
||||||
|
[(_ op)
|
||||||
|
(begin
|
||||||
|
(test/exn (op 1 0) &assertion)
|
||||||
|
(test/exn (op 1 0.0) &assertion)
|
||||||
|
(test/exn (op +inf.0 1) &assertion)
|
||||||
|
(test/exn (op -inf.0 1) &assertion)
|
||||||
|
(test/exn (op +nan.0 1) &assertion))]))
|
||||||
|
|
||||||
(define-syntax test-string-to-number
|
(define-syntax test-string-to-number
|
||||||
(syntax-rules ()
|
(syntax-rules ()
|
||||||
[(_ [str num] ...) (begin (test (string->number str) num) ...)]))
|
[(_ [str num] ...) (begin (test (string->number str) num) ...)]))
|
||||||
|
@ -783,6 +793,13 @@
|
||||||
(divmod-test/? -17.0 +inf.0)
|
(divmod-test/? -17.0 +inf.0)
|
||||||
(divmod-test/? -17.0 -inf.0)
|
(divmod-test/? -17.0 -inf.0)
|
||||||
|
|
||||||
|
(try-bad-divs div)
|
||||||
|
(try-bad-divs mod)
|
||||||
|
(try-bad-divs div-and-mod)
|
||||||
|
(try-bad-divs div0)
|
||||||
|
(try-bad-divs mod0)
|
||||||
|
(try-bad-divs div0-and-mod0)
|
||||||
|
|
||||||
(test (gcd 32 -36) 4)
|
(test (gcd 32 -36) 4)
|
||||||
(test (gcd) 0)
|
(test (gcd) 0)
|
||||||
(test (lcm 32 -36) 288)
|
(test (lcm 32 -36) 288)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user