;; Function To Be Tested: NListP ;; ;; Source: IRM, p 9.2 ;; ;; Chapter 9: Conditionals And Iterative Statements ;; Section 1: Data Type Predicates ;; ;; Created By: Henry Cate III ;; ;; Creation Date: March 17, 1987 ;; ;; Last Update: ;; ;; Filed As: {eris}test>DataTypes>NListP.test ;; ;; (do-test "test simple cases" (and (equal nil (il:nlistp '(a))) (equal nil (il:nlistp '(1 2 3 (a b) (c (d e))))) (eq T (il:nlistp -5)) (eq T (il:nlistp 1000000)) (eq T (il:nlistp 'a-floatp)) (eq T (il:nlistp "a string")) )) (do-test "Test lists of various things" (and (equal nil nil(il:nlistp '("a" "list" "of" "strings" "23 #$%"))) (equal nil (il:nlistp '(a list of litatoms qw-32))) (equal nil (il:nlistp '(1 3/4 5.5 32e5))) )) (do-test "Test stop on own function" (flet ((temp-small nil '(12 BV "hi")) ) (test-defun temp-fun nil '(34 QW "bye")) (and (equal nil (il:nlistp (temp-small))) (equal nil (il:nlistp (temp-fun))) ))) (do-test "Test stop against system functions" (and (equal nil (il:nlistp (append '(a) '(b)))) (equal nil (il:nlistp (il:append '(a) '(b)))) (equal nil (il:nlistp (il:cons 'a 'b))) )) (do-test "Try various types of Litatoms" (and (eq T (il:nlistp 'ABCDEFGHIJKLMNOPQRSTUVWXYZ)) (eq T (il:nlistp 'A-couple-dashs)) (eq T (il:nlistp 'Numbers-1234567890)) (eq T (il:nlistp 'il:other-packags)) (eq T (il:nlistp 'il:other-packagsNumbers-1234567890)) (eq T (il:nlistp 'il:other-packagsA-couple-dashs)) (eq T (il:nlistp T)) (eq T (il:nlistp nil)) (eq T (il:nlistp ())) (eq T (il:nlistp '())) (eq T (il:nlistp (list))) (eq T (il:nlistp (eq 1 2))) )) (do-test "Test go 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 T (il:nlistp (tee))) (eq T (il:nlistp (nill))) (eq T (il:nlistp (temp-litatom))) (eq T (il:nlistp (temp-string))) (eq T (il:nlistp (temp-fun))) (eq T (il:nlistp temp-litatom)) ))) (do-test "Stop go from system functions" (and (eq T (il:nlistp (car '(#*1001 '#( 5 4 3 2 1))))) (eq T (il:nlistp (second '(#\. #\k)))) )) (do-test "Test arrays aren't lists" (and (eq T (il:nlistp (make-array '(2 2)))) (eq T (il:nlistp (make-array '(6 6 6) :element-type '(or integer string)))) (eq T (il:nlistp (make-array 5 :element-type 'bit :initial-contents '(0 0 1 1 0)))) (eq T (il:nlistp (make-array '(5 5) :displaced-to (make-array '(6 6 6) :element-type '(or integer string))))) (eq T (il:nlistp (make-array 50 :initial-element 0))) (eq T (il:nlistp (make-array 20 :element-type 'string-char :initial-element #\0))) )) (do-test "Test other datatypes aren't lists" (and (eq T (il:nlistp #\backspace)) ; character (eq T (il:nlistp #\*)) ; character (eq T (il:nlistp #\.)) ; character (eq T (il:nlistp (make-hash-table))) ; hash table (eq T (il:nlistp (car (list-all-packages)))) ; packages (eq T (il:nlistp (pathname nil))) ; pathname (eq T (il:nlistp *random-state*)) ; ramdom state (eq T (il:nlistp #'cons)) ; compiled function (eq T (il:nlistp (copy-readtable))) ; readtable (eq T (il:nlistp #*1001)) ; simple-bit-vector (eq T (il:nlistp "twine")) ; simple-string (eq T (il:nlistp (make-synonym-stream nil))) ; stream (eq T (il:nlistp '#( 5 4 3 2 1))) ; vector )) STOP