;; 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}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