1
0
mirror of synced 2026-02-11 19:04:55 +00:00
Files
Interlisp.medley/internal/test/LANGUAGE/AUTO/NLISTP.TEST

126 lines
3.7 KiB
Plaintext

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