53 lines
1.5 KiB
Racket
53 lines
1.5 KiB
Racket
#lang racket
|
||
(require tests/eli-tester)
|
||
|
||
(test ;; known representations of integers:
|
||
;; - as exacts
|
||
(integer? -1) => #t
|
||
(integer? 0) => #t
|
||
(integer? 1) => #t
|
||
(integer? 1234879378539875943875937598379587539875498792424323432432343242423432432) => #t
|
||
(integer? -1234879378539875943875937598379587539875498792424323432432343242423432432) => #t
|
||
(integer? #xff) => #t
|
||
|
||
;; - as inexacts
|
||
(integer? -1.) => #t
|
||
(integer? 0.) => #t
|
||
(integer? 1.) => #t
|
||
(integer? 1234879378539875943875937598379587539875498792424323432432343242423432432.) => #t
|
||
(integer? #xff.0) => #t
|
||
;; - but without a decimal fractional part
|
||
(integer? -1.1) => #f
|
||
|
||
;; - fractional representation
|
||
(integer? -42/3) => #t
|
||
(integer? 0/1) => #t
|
||
(integer? 27/9) => #t
|
||
(integer? #xff/f) => #t
|
||
(integer? #b11111111/1111) => #t
|
||
;; - but obviously not fractions
|
||
(integer? 5/7) => #f
|
||
|
||
; - as scientific
|
||
(integer? 1.23e2) => #t
|
||
(integer? 1.23e120) => #t
|
||
; - but not with a small exponent
|
||
(integer? 1.23e1) => #f
|
||
|
||
; - complex representations with 0 imaginary component
|
||
; ℤ is a subset of the sets of rational and /real/ numbers and
|
||
(integer? 1+0i) => #t
|
||
(integer? (sqr 0+1i)) => #t
|
||
(integer? 0+1i) => #f
|
||
|
||
;; oh, there's so much else that isn't an integer:
|
||
(integer? "woo") => #f
|
||
(integer? "100") => #f
|
||
(integer? (string->number "22/11")) => #t ; just cast it!
|
||
(integer? +inf.0) => #f
|
||
(integer? -inf.0) => #f
|
||
(integer? +nan.0) => #f ; duh! it's not even a number!
|
||
(integer? -NaN.0) => #f
|
||
(integer? pi) => #f
|
||
)
|