131 lines
3.9 KiB
Plaintext
131 lines
3.9 KiB
Plaintext
;; Function To Be Tested: NUMBERP
|
|
;;
|
|
;; Source: IRM, p 9.1
|
|
;;
|
|
;; Chapter 9: Conditionals And Iterative Statements
|
|
;; Section 1: Data Type Predicates
|
|
;;
|
|
;; Created By: Henry Cate III
|
|
;;
|
|
;; Creation Date: March 11, 1987
|
|
;;
|
|
;; Last Update:
|
|
;;
|
|
;; Filed As: {eris}<lispcore>test>DataTypes>NumberP.test
|
|
;;
|
|
;;
|
|
|
|
|
|
(do-test "test simple cases"
|
|
(and
|
|
(eq 5 (il:numberp 5))
|
|
(equal 10.13 (il:numberp 10.13))
|
|
(eq nil (il:numberp 'a-numberp))
|
|
(eq nil (il:numberp "a string"))
|
|
))
|
|
|
|
|
|
(do-test "Test numbers are numberps"
|
|
(and
|
|
(eq 123 (il:numberp 123))
|
|
(equal 45.67 (il:numberp 45.67))
|
|
(equal 8/9 (il:numberp 8/9))
|
|
(equal most-positive-fixnum (il:numberp most-positive-fixnum))
|
|
(equal 37e5 (il:numberp 37e5))
|
|
(equal .001 (il:numberp .001))
|
|
))
|
|
|
|
|
|
(do-test "Test go on own function"
|
|
(flet ((temp-small nil 2)
|
|
(temp-large nil 100000)
|
|
(temp-floating nil 12.2))
|
|
(test-defun temp-fun nil 32e5)
|
|
(and
|
|
(eq 2 (il:numberp (temp-small)))
|
|
(equal 100000 (il:numberp (temp-large)))
|
|
(equal 12.2 (il:numberp (temp-floating)))
|
|
(equal 32e5 (il:numberp (temp-fun)))
|
|
)))
|
|
|
|
|
|
(do-test "Test work against system functions"
|
|
(and
|
|
(eq 3 (il:numberp (third '(1 2 3 4 5))))
|
|
(equal 3.3 (il:numberp (car '(3.3 2.2 1.1))))
|
|
(equal 2.3 (il:numberp (second '(1 2.3 4.5 6))))
|
|
))
|
|
|
|
|
|
(do-test "Try various types of Litatoms"
|
|
(and
|
|
(eq nil (il:numberp 'ABCDEFGHIJKLMNOPQRSTUVWXYZ))
|
|
(eq nil (il:numberp 'A-couple-dashs))
|
|
(eq nil (il:numberp 'Numbers-1234567890))
|
|
|
|
(eq nil (il:numberp 'il:other-packags))
|
|
(eq nil (il:numberp 'il:other-packagsNumbers-1234567890))
|
|
(eq nil (il:numberp 'il:other-packagsA-couple-dashs))
|
|
|
|
(eq nil (il:numberp T))
|
|
(eq nil (il:numberp nil))
|
|
(eq nil (il:numberp ()))
|
|
(eq nil (il:numberp '()))
|
|
(eq nil (il:numberp (list)))
|
|
(eq nil (il:numberp (eq 1 2)))
|
|
))
|
|
|
|
|
|
(do-test "Test stop on own function"
|
|
(flet ((tee nil t) (nill nil nil) (temp-litatom nil 'litatom)
|
|
(temp-string nil "string"))
|
|
(test-defun temp-fun nil 'litatom)
|
|
(test-setq temp-litatom 'il:temp-pointed)
|
|
(and
|
|
(eq nil (il:numberp (tee)))
|
|
(eq nil (il:numberp (nill)))
|
|
(eq nil (il:numberp (temp-litatom)))
|
|
(eq nil (il:numberp (temp-string)))
|
|
(eq nil (il:numberp (temp-fun)))
|
|
(eq nil (il:numberp temp-litatom))
|
|
)))
|
|
|
|
|
|
(do-test "Stop on numberps from system functions"
|
|
(and
|
|
(eq nil (il:numberp (car '(#*1001 '#( 5 4 3 2 1)))))
|
|
(eq nil (il:numberp (second '(#\. #\k))))
|
|
))
|
|
|
|
|
|
(do-test "Test arrays aren't numberps"
|
|
(and
|
|
(eq nil (il:numberp (make-array '(2 2))))
|
|
(eq nil (il:numberp (make-array '(6 6 6) :element-type '(or integer string))))
|
|
(eq nil (il:numberp (make-array 5 :element-type 'bit :initial-contents '(0 0 1 1 0))))
|
|
(eq nil (il:numberp (make-array '(5 5) :displaced-to (make-array '(6 6 6) :element-type '(or integer string)))))
|
|
(eq nil (il:numberp (make-array 50 :initial-element 0)))
|
|
(eq nil (il:numberp (make-array 20 :element-type 'string-char :initial-element #\0)))
|
|
))
|
|
|
|
|
|
(do-test "Test other datatypes aren't numberps"
|
|
(and
|
|
(eq nil (il:numberp #\backspace)) ; character
|
|
(eq nil (il:numberp #\*)) ; character
|
|
(eq nil (il:numberp #\.)) ; character
|
|
(eq nil (il:numberp (make-hash-table))) ; hash table
|
|
(eq nil (il:numberp (car (list-all-packages)))) ; packages
|
|
(eq nil (il:numberp (pathname nil))) ; pathname
|
|
(eq nil (il:numberp *random-state*)) ; ramdom state
|
|
(eq nil (il:numberp #'cons)) ; compiled function
|
|
(eq nil (il:numberp (copy-readtable))) ; readtable
|
|
(eq nil (il:numberp #*1001)) ; simple-bit-vector
|
|
(eq nil (il:numberp "twine")) ; simple-string
|
|
(eq nil (il:numberp (make-synonym-stream nil))) ; stream
|
|
(eq nil (il:numberp '#( 5 4 3 2 1))) ; vector
|
|
))
|
|
|
|
STOP
|
|
|