Add tests for integer?.
authorTaylor R Campbell <campbell@mumble.net>
Fri, 16 Nov 2018 16:57:59 +0000 (16:57 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Fri, 16 Nov 2018 16:58:55 +0000 (16:58 +0000)
It incorrectly reports infinities as integers, so xfail.

tests/runtime/test-arith.scm

index 8f60ea75fb943cd4ec65c6e1a31a68bed5b09ec0..f4177ec9d490eb1a9af7c6979ed6e3cf5d0e5163 100644 (file)
@@ -32,6 +32,15 @@ USA.
   (assert-true (flo:flonum? object))
   (assert-true (flo:nan? object)))
 
+(define (not-integer? x)
+  (not (integer? x)))
+
+(define assert-integer
+  (predicate-assertion integer? "integer"))
+
+(define assert-not-integer
+  (predicate-assertion not-integer? "not integer"))
+
 (define (define-enumerated-test prefix elements procedure)
   (let ((n (vector-length elements)))
     (do ((i 0 (+ i 1))) ((>= i n))
@@ -375,4 +384,29 @@ USA.
     (let ((x (vector-ref v 0))
           (y (vector-ref v 1)))
       (assert-eqv (- x) y)
-      (assert-eqv (- 0 (flo:copysign 1. x)) (flo:copysign 1. y)))))
\ No newline at end of file
+      (assert-eqv (- 0 (flo:copysign 1. x)) (flo:copysign 1. y)))))
+
+(define-enumerated-test 'integer?
+  (vector
+   0
+   1
+   (* 1/2 (identity-procedure 2))
+   0.
+   1.
+   1.+0.i)
+  assert-integer)
+
+(define-enumerated-test 'not-integer?
+  (vector
+   1/2
+   0.1
+   1+2i
+   (flo:nan.0))
+  assert-not-integer)
+
+(define-enumerated-test 'not-integer?/broken
+  (vector
+   (flo:+inf.0)
+   (flo:-inf.0))
+  (lambda (x)
+    (expect-failure (lambda () (assert-not-integer x)))))
\ No newline at end of file