home *** CD-ROM | disk | FTP | other *** search
- ;; Q&A.L - quality assurance tests
- ;; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;; A set of calls and correct results to make sure that PC-LISP is
- ;; behaving itself. These are run after every change to the source to
- ;; make sure things are kosher. If a new function is added a set of
- ;; tests should be added also. Test results are printed on file whose
- ;; open port is 'where'.
-
- (defun Q&A(ListOfTests where tracing)
- (prog (input result wwanted)
- (patom (ascii 10) where)
- (patom '|=============== NEXT TEST SUIT ================| where)
- (patom (ascii 10) where)
- LAB: (cond ((null ListOfTests) (return t)))
- (setq input (caar ListOfTests) wanted (cadar ListOfTests))
- (cond (tracing (patom input)(patom "\n")))
- (setq wanted (eval wanted))
- (setq result (eval input))
- (setq wwanted (eval wanted))
- (cond ((and (null (equal wwanted result))
- (null (NearlyEqual wwanted result)))
- (patom "FAIL: Input, Expected and Actual :\n" where)
- (patom input)
- (patom "\n" where)
- (patom wwanted)
- (patom "\n" where)
- (patom result)
- (patom "\n" where)))
- (setq ListOfTests (cdr ListOfTests))
- (go LAB:)
- )
- )
-
- ;; TEST OF MATH FUNCTIONS
- ;; ~~~~~~~~~~~~~~~~~~~~~~
- ;; Test the math functions to make sure they are producing sensible results.
- ;; No precision tests, these were done before math library was added to PC-LISP
-
- (setq List#1_Math_Functions
- '( ( (abs 5000) 5000 )
- ( (abs -5000) 5000 )
- ( (acos (cos 1.0)) 1.0 )
- ( (asin (sin 1.0)) 1.0 )
- ( (acos (cos .45)) .45 )
- ( (asin (sin .45)) .45 )
- ( (sum (times (cos .45) (cos .45) )
- (times (sin .45) (sin .45) )) 1.0 )
- ( (atan 1.0 1.0 ) .785398163 )
- ( (atan .22 1.0 ) .216550305 )
- ( (log 2.718281828) 1.0 )
- ( (log (exp 10)) 10 )
- ( (expt 2 8) 256 )
- ( (expt 3 6) (* 3 3 3 3 3 3 ))
- ( (expt 2.2 3.3) (exp (times 3.3 (log 2.2))) )
- ( (fact 0) 1 )
- ( (fact 10) (* 10 (fact 9)) )
- ( (fact 5) (* 5 4 3 2 1) )
- ( (log10 (* 10 10 10 10 10 10 10 10)) 8 )
- ( (log10 1) 0 )
- ( (max) 0 )
- ( (min) 0 )
- ( (max 14) 14 )
- ( (min 14) 14 )
- ( (max 0 1 2 -3 10 -14 50 100 0 -10 -19) 100 )
- ( (min 0 1 2 -3 10 -14 50 100 0 -10 -13) -14 )
- ( (mod 8 2) 0 )
- ( (mod 16 3) 1 )
- ( (mod -16 -3) -1 )
- ( (mod -16 3) -1 )
- ( (mod 16 -3) 1 )
- ( (> 15 (random 15)) t )
- ( (> 1 (random 1)) t )
- ( (not (= (random) (random))) t )
- ( (sqrt (* 2345 2345)) 2345 )
- ( (sqrt 49) 7 )
- ( (sqrt 1) 1 )
- ( (*) 1 )
- ( (/) 1 )
- ( (+) 0 )
- ( (-) 0 )
- ( (* 5 4 3 2 1) (fact 5) )
- ( (/ 1000 10 10 10) 1 )
- ( (+ 1 2 3 4 5) 15 )
- ( (- 10 1 2 3 1 2 1) 0 )
- ( (add1 8) 9 )
- ( (add1 8.0) 9.0 )
- ( (sub1 8) 7 )
- ( (sub1 8.0) 7.0 )
- ( (times) 1 )
- ( (add) 0 )
- ( (diff) 0 )
- ( (quotient) 1 )
- ( (times 2.0) 2.0 )
- ( (add 2.0) 2.0 )
- ( (diff 2.0) 2.0 )
- ( (quotient 2.0) 2.0 )
- ( (add 2.2 2.2 2.2 2.2 2.2) 11 )
- ( (diff 11 2.2 2.2 2.2 2.2 2.2) 0 )
- ( (times 1.0 2.0 3.0 4.0 5.0) (fact 5) )
- ( (quotient 8.0 2.0 2.0 2.0) 1 )
- ( (oddp 10) nil )
- ( (oddp 0) nil )
- ( (oddp -10) nil )
- ( (oddp 11) t )
- ( (evenp -11) nil )
- ( (evenp 10) t )
- ( (evenp 0) t )
- ( (evenp -10) t )
- ( (evenp 11) nil )
- ( (evenp -11) nil )
- ( (and (zerop 0) (zerop 0.0)) t )
- ( (zerop 8) nil )
- ( (zerop -8.0) nil )
- ( (minusp 0) nil )
- ( (minusp 8.0) nil )
- ( (minusp 8) nil )
- ( (minusp -1.0) t )
- ( (plusp 0) nil )
- ( (plusp -8.0) nil )
- ( (plusp -8) nil )
- ( (plusp 1.0) t )
- ( (< 0 0) nil )
- ( (> 0 0) nil )
- ( (= 0 0) t )
- ( (< -10 10) t )
- ( (> 10 -10) t )
- ( (= -10 -10) t )
- ( (< 10 -10) nil )
- ( (> -10 10) nil )
- ( (1+ 0) 1 )
- ( (1- 0) -1 )
- ( (1+ 100) 101 )
- ( (1- -100) -101 )
- ( (greaterp 1.0) t )
- ( (lessp 1.0) t )
- ( (greaterp 10.0 9.9 9.8 9 8.9) t )
- ( (lessp 1.0 2.0 3.0 3.9 4 5 6 7) t )
- ( (greaterp 10.0 9.9 9.8 9 9.0) nil )
- ( (lessp 1.0 2.0 3.0 4.0 4 5 6 7) nil )
- ( (fixp 10) t )
- ( (fixp -10.0) nil )
- ( (fixp 'a) nil )
- ( (fixp '(a)) nil )
- ( (fixp poport) nil )
- ( (fixp "no") nil )
- ( (numberp 0) t )
- ( (numberp 0.0) t )
- ( (numberp 'a) nil )
- ( (numberp '(a)) nil )
- ( (numberp poport) nil )
- ( (numberp "no") nil )
- ( (lsh 1 8) 256 )
- ( (lsh 256 -8) 1 )
- )
- )
-
- ;; TEST OF SIMPLE PREDICATE FUNCTIONS
- ;; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;; T and Nil quality assurance tests. Make sure that they behave as they should
- ;; do. Note particularly that imploding and exploding of nil should produce the
- ;; nil atom/list.
-
- (setq List#2_Predicates
- '( ( (eq nil nil) t )
- ( (eq 10 10) t )
- ( (eq 11 10) nil )
- ( (eq nil t) nil )
- ( (eq 'nil nil) t )
- ( (eq "hi" "hi") nil )
- ( (atom nil) t )
- ( (atom "hi") t )
- ( (atom Hunk_126) nil )
- ( (equal ''nil ''()) t )
- ( (equal '("hi") '("hi")) t )
- ( (equal '(a . (b . (c . (d)))) '(a b c d)) t )
- ( (equal Hunk_126 Hunk_126) t )
- ( (eq Hunk_126 Hunk_126) t )
- ( (equal Hunk_50 Hunk_126) nil )
- ( (eq Hunk_50 Hunk_126) nil )
- ( (atom t) t )
- ( (equal (explode nil) '(n i l)) t )
- ( (eq (implode '(n i l)) nil) t )
- ( (eq (implode '("n" "i" "l")) nil) t )
- ( (eq nil t) nil )
- ( (eq 'a 'a) t )
- ( (eq 2.8 2.8) nil )
- ( (eq '(a b) '(a b)) nil )
- ( (equal '(a b) '(a b)) t )
- ( (equal '((a)((b))) '((a)((b))) ) t )
- ( (equal '((a)((d))) '((a)((b))) ) nil )
- ( (eq Data_1 Data_1) t )
- ( (equal Data_1 Data_1) t )
- ( (equal (getd 'Data_Array) (getd 'Data_Array2)) t )
- ( (null nil) t )
- ( (not nil) t )
- ( (null 'a) nil )
- ( (not 'a) nil )
- ( (not "a") nil )
- ( (alphalessp 'abc 'abd) t )
- ( (alphalessp 'abd 'abc) nil )
- ( (alphalessp 'abc 'abc) nil )
- ( (alphalessp "abc" "abd") t )
- ( (alphalessp 'abd "abc") nil )
- ( (alphalessp "abc" 'abc) nil )
- ( (arrayp (getd 'Data_Array)) t )
- ( (arrayp 8) nil )
- ( (arrayp 8.8) nil )
- ( (arrayp poport) nil )
- ( (atom 'a) t )
- ( (atom 8) t )
- ( (atom Data_1) nil )
- ( (atom poport) t )
- ( (null (boundp 'poport)) nil )
- ( (boundp (gensym)) nil )
- ( (floatp 'a) nil )
- ( (floatp 8.0) t )
- ( (floatp 8 ) nil )
- ( (floatp '|800|) nil )
- ( (floatp Data_1) nil )
- ( (floatp poport) nil )
- ( (floatp "hi") nil )
- ( (floatp Hunk_1) nil )
- ( (hunkp 'a) nil )
- ( (hunkp 8) nil )
- ( (hunkp '|800|) nil )
- ( (hunkp Data_1) nil )
- ( (hunkp poport) nil )
- ( (hunkp "hi") nil )
- ( (hunkp Hunk_1) t )
- ( (listp 'a) nil )
- ( (listp 8) nil )
- ( (listp '|800|) nil )
- ( (listp Data_1) t )
- ( (listp poport) nil )
- ( (listp "hi") nil )
- ( (listp Hunk_1) nil )
- ( (portp 'a) nil )
- ( (portp 8) nil )
- ( (portp '|800|) nil )
- ( (portp Data_1) nil )
- ( (portp poport) t )
- ( (portp "hi") nil )
- ( (portp Hunk_1) nil )
- ( (stringp 'a) nil )
- ( (stringp 8) nil )
- ( (stringp '|800|) nil )
- ( (stringp Data_1) nil )
- ( (stringp poport) nil )
- ( (stringp "hi") t )
- ( (stringp Hunk_1) nil )
- ( (and) t )
- ( (or) t )
- ( (and t) t )
- ( (or t) t )
- ( (and t t) t )
- ( (and t nil) nil )
- ( (or t nil) t )
- ( (or nil nil nil nil t nil nil nil) t )
- ( (or nil nil nil nil nil nil nil nil) nil )
- ( (setq x 1) 1 )
- ( (and (atom '(a)) (setq x 2)) nil )
- ( (= x 2) nil )
- ( (or (+ 2 2) (setq x 3)) 4 )
- ( (= x 3) nil )
- ( (or nil (+ 3 4) nil) 7 )
- ( (and (+ 2 2) (+ 2 3) t (+ 2 4)) 6 )
- )
- )
-
- ;; TEST OF SELECTORS AND CREATORS
- ;; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;; Check all functions that have no side effects that select part of a list
- ;; or atom, or that create a new list or atom for quality.
-
- (setq List#3_Selectors_Creators
- '( ( (append) nil )
- ( (append nil) nil )
- ( (append nil nil nil) nil )
- ( (append '(a) nil '(b)) ''(a b) )
- ( (append '(a b (g)) nil '(h(i)) '(j(k))) ''(a b (g) h (i) j (k)) )
- ( (nconc ) nil )
- ( (nconc nil) nil )
- ( (nconc nil nil nil) nil )
- ( (nconc '(a) nil '(b)) ''(a b) )
- ( (nconc '(a b (g)) nil '(h(i)) '(j(k))) ''(a b (g) h (i) j (k)) )
- ( (ascii 97) ''a )
- ( (ascii 126) ''|~| )
- ( (assoc 'a nil) nil )
- ( (assoc nil nil) nil )
- ( (assoc 'a '((a . b) (c . d) (e . f))) ''(a . b) )
- ( (assoc 'x '((a . b) (c . d) (e . f))) nil )
- ( (assoc '(e) '((a . b) (c . d) ((e) . f))) ''((e) . f) )
- ( (car nil) nil )
- ( (cdr nil) nil )
- ( (cdr '(a)) nil )
- ( (cdr '(a . b)) ''b )
- ( (cdr '(a b c)) ''(b c) )
- ( (car '(a)) ''a )
- ( (car '(a . b)) ''a )
- ( (car '((a))) ''(a) )
- ( (caaar '(( (a) xx ) xx ) ) ''a )
- ( (cdddr '(a b c d e) ) ''(d e) )
- ( (cadddr '(a b c d e xx xx )) ''d )
- ( (cons 'a nil) ''(a) )
- ( (cons 'a 'nil) ''(a) )
- ( (cons 'a 'b) ''(a . b))
- ( (cons 'a '(b c)) ''(a b c))
- ( (cons '(a) 'b) ''((a) . b) )
- ( (cons nil nil) ''(nil) )
- ( (explode nil) ''(n i l) )
- ( (explode 'a) ''(a) )
- ( (explode 'abcdefg) ''(a b c d e f g))
- ( (explode "abcdefg") ''(a b c d e f g))
- ( (explode 987) ''(|9| |8| |7|) )
- ( (exploden nil) ''(110 105 108) )
- ( (exploden 'abc) ''(97 98 99) )
- ( (exploden "abc") ''(97 98 99) )
- ( (eq 'a (implode (explode 'a))) t )
- ( (eq 'abcd (implode (explode 'abcd))) t )
- ( (eq nil (implode (explode nil))) t )
- ( (length nil) 0 )
- ( (length '(a)) 1 )
- ( (length '((a))) 1 )
- ( (length '(a b c d)) 4 )
- ( (ldiff nil nil) nil )
- ( (ldiff '(a b c) nil) ''(a b c) )
- ( (ldiff '(a b c) '(a)) ''(b c) )
- ( (ldiff '(a b c 1 2) '(a b c 1 2)) nil )
- ( (ldiff '("a" "b" "c") '("a" "b" "c")) ''("a" "b" "c") )
- ( (list) nil )
- ( (list 'a) ''(a) )
- ( (list 'a 'b 'c) ''(a b c) )
- ( (list 'a '(b) 'c) ''(a(b)c) )
- ( (list nil nil nil nil nil) ''(nil nil nil nil nil) )
- ( (member 'a '(x y z a b c)) ''(a b c) )
- ( (memq 'a '(x y z a b c)) ''(a b c) )
- ( (member 'k '(x y z a b c)) nil )
- ( (memq 'k '(x y z a b c)) nil )
- ( (member '(a b) '(x y z (a b) c)) ''((a b) c) )
- ( (memq '(a b) '(x y z (a b) c)) nil )
- ( (listp (setq z '((a b) (c d) e))) t )
- ( (memq (cadr z) z) ''((c d) e) )
- ( (nth 0 nil) nil )
- ( (nth 10 nil) nil )
- ( (nth -10 nil) nil )
- ( (nth 0 '((a)b c d)) ''(a) )
- ( (nth 3 '(a b c d)) ''d )
- ( (nthchar nil 0) nil )
- ( (nthchar nil 1) ''n )
- ( (nthchar nil 3) ''l )
- ( (nthchar 'abcde 3) ''c )
- ( (nthchar "abcde" 1) ''a )
- ( (nthchar 'abcde 5) ''e )
- ( (nthchar 'abcde 6) nil )
- ( (nthchar "abcde" -1) nil )
- ( (pairlis '(a) '(b) nil) ''((a . b)) )
- ( (pairlis '((a)) '((b)) nil) ''(((a) b)) )
- ( (pairlis '(a c) '(d f) '(g h)) ''((a . d)(c . f) g h) )
- ( (quote nil) nil )
- ( (quote a) ''a )
- ( (quote (a b c)) ''(a b c) )
- ( (remove 'a '(a b c)) ''(b c) )
- ( (remove 'a '(a a b c) 1) ''(a b c) )
- ( (remove 'a nil 4) nil )
- ( (remq 1 '(a a 1 c) 1) ''(a a c) )
- ( (remq 'a '(a a 1 c) 1) ''(a 1 c) )
- ( (reverse nil) nil )
- ( (reverse '(a)) ''(a) )
- ( (reverse '(a b)) ''(b a) )
- ( (reverse '(a b c d e)) ''(e d c b a) )
- ( (reverse (reverse '(a b c d e))) ''(a b c d e) )
- ( (reverse '((a b) nil c d)) ''(d c nil (a b)) )
- ( (> 50 (sizeof 'symbol)) t )
- ( (> 50 (sizeof 'flonum)) t )
- ( (> 50 (sizeof 'port)) t )
- ( (> 50 (sizeof "fixnum")) t )
- ( (> 50 (sizeof 'string)) t )
- ( (> 50 (sizeof "list")) t )
- ( (> 50 (sizeof "array")) t )
- ( (subst 'a 'b nil) nil )
- ( (subst 'a 'b '(a . b)) ''(a . a) )
- ( (subst 'a 'b '(a b a b)) ''(a a a a) )
- ( (subst 'a '(1 2) '((1 2) (1 2) ((1 2)))) ''(a a (a)) )
- ( (listp (setq L '(a b c))) t )
- ( (dsubst 'a 'b L) ''(a a c) )
- ( (equal L '(a a c)) t )
- ( (memusage nil) 0 )
- ( (memusage 'a) (+ 2 (sizeof 'symbol)) )
- ( (memusage "a") (+ 2 (sizeof "string")) )
- ( (fixp (memusage (oblist))) t )
- ( (type nil) ''list )
- ( (type t) ''symbol )
- ( (type 8) ''fixnum )
- ( (type '|8|) ''symbol )
- ( (type poport) ''port )
- ( (type "hi") ''string )
- ( (type '(a b c)) ''list )
- ( (type (getd 'Data_Array)) ''array )
- ( (last nil) nil )
- ( (last '(a)) ''a )
- ( (last '(a . b)) ''b )
- ( (last '(a b c (d e))) ''(d e) )
- ( (nthcdr 10 nil) nil )
- ( (nthcdr 0 '(a)) ''(a) )
- ( (nthcdr 1 '(a . b)) ''b )
- ( (nthcdr 3 '(a b c (d e))) ''((d e)) )
- ( (nthcdr 2 '(a b c (d e))) ''(c(d e)) )
- ( (nthcdr -1.0 '(a b)) ''(nil a b) )
- ( (character-index 'abcde 'a) 1 )
- ( (character-index 'abcde 'b) 2 )
- ( (character-index 'abcde 'e) 5 )
- ( (character-index 'abcde 'x) nil )
- ( (character-index "abcde" "cde") 3 )
- ( (character-index "" "") nil )
- ( (get_pname 'junk) "junk" )
- ( (get_pname "junk") "junk" )
- ( (substring "abcdefghijklm" 0) nil )
- ( (substring "abcdefghijklm" 1) "abcdefghijklm" )
- ( (substring "abcdefghijklm" 1 1) "a" )
- ( (substring "abcdefghijklm" 3 3) "cde" )
- ( (substring "abcdefghijklm" 13 1) "m" )
- ( (substring "abcdefghijklm" 13 2) nil )
- ( (substring "abcdefghijklm" 12 2) "lm" )
- ( (substring 'abcdefghijklm -1 1) "m" )
- ( (substring "abcdefghijklm" -2) "lm" )
- ( (substring 'abcdefghijklm -30) nil )
- ( (substring "abcdefghijklm" 10 40) nil )
- ( (concat) nil )
- ( (concat nil) nil )
- ( (concat 'a 'b nil) ''abnil )
- ( (concat "a" "b" nil) ''abnil )
- ( (concat "a" "bcd" nil "ef" nil) ''abcdnilefnil )
- ( (concat "a" nil "b" ) ''anilb )
- ( (concat "a") ''a )
- ( (concat 'a) ''a )
- ( (concat 15 "hello" 15) ''15hello15 )
- ( (not(null(member '15hello15 (oblist)))) t )
- ( (uconcat) nil )
- ( (uconcat nil) nil )
- ( (uconcat 'a 'b nil) ''abnil )
- ( (uconcat "a" "b" nil) ''abnil )
- ( (uconcat "a" "bcd" nil "ef" nil) ''abcdnilefnil )
- ( (uconcat "a" nil "b" ) ''anilb )
- ( (uconcat "a") ''a )
- ( (uconcat 'a) ''a )
- ( (atom (setq z (uconcat 16 "hello" 16))) t )
- ( (not (member z (oblist))) t )
- ( (atom (setq z (gensym 'hi))) t )
- ( (not (member z (oblist))) t )
- ( (atom (intern z)) t )
- ( (not(not(member z (oblist)))) t )
- ( (atom (remob z)) t )
- ( (not(member z (oblist))) t )
- ( (atom (remob 'xyz)) t )
- ( (atom (setq z (maknam '(x y z)))) t )
- ( (eq z 'xyz) nil )
- ( (atom (remob 'xyz)) t )
- ( (atom (intern z)) t )
- ( (eq z (concat 'x 'y 'z)) t )
- ( (sort '(e d c b a) nil) ''(a b c d e) )
- ( (sort '(a b c d e) '(lambda(x y)(not(alphalessp x y)))) ''(e d c b a))
- ( (sort '(1 2 3 4 5) '<) ''(1 2 3 4 5) )
- ( (sort '(1 2 3 4 5) '>) ''(5 4 3 2 1) )
- ( (sortcar '((1 x)(2 y)) '>) ''((2 y)(1 x)) )
- )
- )
-
- (setq List#4_File_IO_Functions
- '( ( (portp (setq pp (fileopen 'junk 'w))) t )
- ( (print Data_1 pp) 'Data_1 )
- ( (print Data_1 pp) 'Data_1 )
- ( (patom Data_1 pp) 'Data_1 )
- ( (close pp) t )
- ( (portp (setq pp (fileopen 'junk 'r))) t )
- ( (read pp) 'Data_1 )
- ( (read pp) 'Data_1 )
- ( (read pp) 'Data_1 )
- ( (read pp 'at-end) ''at-end )
- ( (read pp) nil )
- ( (close pp) t )
- ( (portp (setq pp (fileopen 'junk 'r))) t )
- ( (readc pp) ''|(| )
- ( (readc pp) ''|a| )
- ( (readc pp) ''| | )
- ( (readc pp) ''|(| )
- ( (readc pp) ''|b| )
- ( (car (read pp)) ''c )
- ( (close pp) t )
- ( (portp (setq pp (fileopen 'junk 'w))) t )
- ( (patom '|8| pp) ''|8| )
- ( (princ '|8| pp) t )
- ( (close pp) t )
- ( (portp (setq pp (fileopen 'junk 'r))) t )
- ( (read pp) 88 )
- ( (readstr "a") ''a )
- ( (readstr "(a)") ''(a) )
- ( (readstr "(a b)") ''(a b) )
- ( (readstr "'(a b)") '''(a b) )
- ( (readstr "(a b" "c d)") ''(a b c d) )
- ( (readstr "(a b" "1 d)") ''(a b 1 d) )
- ( (readstr "(a b" "1.0 d)") ''(a b 1.0 d) )
- ( (readstr) nil )
- ( (readstr "" ) nil )
- ( (readstr " " " ") nil )
- ( (readstr "1.2e10") 1.2e10 )
- ( (readlist) nil )
- ( (readlist '(a)) ''a )
- ( (readlist '("(a b c" "d e f)")) ''(a b cd e f) )
- ( (close pp) t )
- ( (flatc nil) 3 )
- ( (flatsize nil) 3 )
- ( (flatc '|a b|) 3 )
- ( (flatsize '|a b|) 5 )
- ( (flatsize Data_2) 73 )
- ( (flatsize Data_2 10) 13 )
- ( (flatc Data_2) 71 )
- ( (flatc Data_2 10) 13 )
- ( (null (setq Old_pp (getd 'pp))) nil )
- ( (pp (F junk) pp) t )
- ( (cdr (boundp '$ldprint)) t )
- ( (setq $ldprint nil) nil )
- ( (load 'junk) t )
- ( (setq $ldprint t) t )
- ( (equal (getd 'pp) Old_pp) t )
- ( (sys:unlink 'junk) 0 )
- ;
- ; NOTE FILEPOS tests are missing.
- ;
- )
- )
-
- ;;
-
- (setq List#5_Side_Effects
- '(
- ( (eval '(car '(a b c))) ''a )
- ( (apply 'car '((a b c))) ''a )
- ( (funcall 'cons 'a '(b c)) ''(a b c) )
- ( (mapcar 'atom '(a (b) (c))) ''(t nil nil) )
- ( (mapc 'atom '(a (b) (c))) ''(a(b)(c)) )
- ( (maplist 'cons '(a b) '(x y)) ''(((a b) x y)((b)y)) )
- ( (map 'cons '(a b) '(x y)) ''(a b) )
- ( (def first (lambda(x)(car x))) ''first )
- ( (apply 'first '((a b c))) ''a )
- ( (funcall 'first '(a b c)) ''a )
- ( (def second(lambda(x)(first(cdr x)))) ''second )
- ( (def pluss(nlambda(l)(eval(cons '+ l)))) ''pluss )
- ( (apply 'pluss '(1 2 3)) ''6 )
- ( (funcall 'pluss 1 2 3) ''6 )
- ( (def firstm (macro(l)(cons 'car (cdr l)))) ''firstm )
- ( (def ttest(lexpr(n)(cons(arg 1)(cons n (listify 1))))) ''ttest )
- ( (def tj(lambda(a &optional b (c 3) &rest d &aux e (f 4))
- (list a b c d e f))) ''tj )
- ( (car (setq a (getd 'first))) ''lambda )
- ( (car (setq b (getd 'second))) ''lambda )
- ( (car (setq c (getd 'pluss))) ''nlambda )
- ( (car (setq d (getd 'firstm))) ''macro )
- ( (car (setq e (getd 'ttest))) ''lexpr )
- ( (car (setq f (getd 'tj ))) ''lexpr )
- ( (defun first(x)(car x)) ''first )
- ( (defun second(x)(first(cdr x))) ''second )
- ( (defun pluss fexpr(l)(eval(cons '+ l))) ''pluss )
- ( (defun firstm macro(l)(cons 'car (cdr l))) ''firstm )
- ( (defun ttest n (cons (arg 1) (cons n (listify 1)))) ''ttest )
- ( (defun ttj(a &optional b (c 3) &rest d &aux e (f 4))
- (list a b c d e f)) ''ttj )
- ( (equal (getd 'first) a) t )
- ( (equal (getd 'second) b) t )
- ( (equal (getd 'pluss) c) t )
- ( (equal (getd 'firstm) d) t )
- ( (equal (getd 'ttest) e) t )
- ( (equal (getd 'ttj) f) t )
- ( (ttj 'a) ''(a nil 3 nil nil 4) )
- ( (ttj 'a 'b) ''(a b 3 nil nil 4) )
- ( (ttj 'a 'b 'c) ''(a b c nil nil 4) )
- ( (ttj 'a 'b 'c 'd) ''(a b c (d) nil 4) )
- ( (first '(a b c)) ''a )
- ( (second '(a b c)) ''b )
- ( (pluss (+ 1 1) 3 3) 8 )
- ( (setq displace-macros nil) nil )
- ( (listp (setq x '(firstm '(a b c)))) t )
- ( (eval x) ''a )
- ( (equal x '(firstm '(a b c))) t )
- ( (macroexpand '(firstm '(a b c))) ''(car '(a b c)) )
- ( (setq displace-macros t) t )
- ( (eval x) ''a )
- ( (equal x '(car '(a b c))) t )
- ( (ttest 'a 'b 'c) ''(a 3 a b c) )
- ( (ttest 1 2 3 4 5) ''(1 5 1 2 3 4 5) )
- ( (fixp (setq free%cons (car (memstat)))) t )
- ( (fixp (setq oldcount $gccount$)) t )
- ( (gc) t )
- ( (= (+ oldcount 1) $gccount$) t )
- ( (< (car (memstat)) free%cons) t )
- ( (listp (setq oldlist (oblist))) t )
- ( (atom (setq temp (intern(gensym)))) t )
- ( (AtomInList? temp oldlist) nil )
- ( (AtomInList? temp (oblist)) t )
- ( (car (explode (gensym))) ''g )
- ( (car (explode (gensym "X"))) ''X )
- ( (car (explode (gensym 'Y))) ''Y )
- )
- )
-
- (setq List#6_Destructives
- '( ( (listp (setq L '(x y 1))) t )
- ( (attach 'a L) ''(a x y 1) )
- ( (attach nil L) ''(nil a x y 1) )
- ( (equal L '(nil a x y 1)) t )
- ( (delq 1 L) ''(nil a x y) )
- ( (equal L '(nil a x y)) t )
- ( (listp (setq L '("a" "a" "b" "a" "c" "a" "d"))) t )
- ( (delete "a" L 2) ''("b" "a" "c" "a" "d") )
- ( (listp (setq L '("a" "a" "b" "a" "c" "a" "d"))) t )
- ( (delq "a" L 2) ''("a" "a" "b" "a" "c" "a" "d") )
- ( (listp (setq L '(x a b c))) t )
- ( (delete 'a L) ''(x b c) )
- ( (delete 'b L) ''(x c) )
- ( (delete 'c L) ''(x) )
- ( (delete 'x L) nil )
- ( (hunksize (hunk 'a)) 1 )
- ( (hunksize (hunk "a" "b" "c" "d" "e")) 5 )
- ( (hunksize (makhunk 120)) 120 )
- ( (hunksize (makhunk '(1 2 3 4 5))) 5 )
- ( (hunkp (setq H (hunk 1 2 3 4 5 6 7 8 9 10))) t )
- ( (hunkp (setq I (hunk 1))) t )
- ( (hunk-to-list H) ''(1 2 3 4 5 6 7 8 9 10) )
- ( (hunk-to-list I) ''(1) )
- ( (cxr 0 I) 1 )
- ( (cxr 0 H) 1 )
- ( (cxr 9 H) 10 )
- ( (hunkp (rplacx 9 H "end")) t )
- ( (hunkp (rplacx 0 H "start")) t )
- ( (equal H (hunk "start" 2 3 4 5 6 7 8 9 "end")) t )
- ( (listp (setq X (copy '(a b c d)) Y X)) t )
- ( (eq X Y) t )
- ( (rplaca X 1) ''(1 b c d) )
- ( (eq X Y) t )
- ( (setq Z (copy X)) 'X )
- ( (rplacd X '(2 3)) ''(1 2 3) )
- ( (eq X Y) t )
- ( (eq X Z) nil )
- )
- )
-
- (setq List#7_ControlFlow
- '( ( (setq a 'A b 'B c 'C d 'D) ''D )
- ( (catch (throw 'x)) ''x )
- ( (catch (car (cdr (car (car (throw 'x)))))) ''x )
- ( (catch (car (throw 'x 'tag))) ''x )
- ( (catch (car (throw 'x 'tag)) 'tag) ''x )
- ( (catch (car (throw 'x 'tag)) '(tag1 tag2 tag3 tag)) ''x )
- ( (catch ((lambda(a b)(throw 'x)) nil nil)) ''x )
- ( (list a b) ''(A B) )
- ( (catch (prog (a b) c (throw 'x) d)) ''x )
- ( (list a b) ''(A B) )
- ( (catch ((nlambda(a)(throw 'x)) nil)) ''x )
- ( (list a b) ''(A B) )
- ( (catch ((macro(a)(throw 'x)) nil)) ''x )
- ( (list a b) ''(A B) )
- ( (catch ((lexpr(a)(throw 'x)) 1 2)) ''x )
- ( (list a b) ''(A B) )
- ( (errset (err 'x) nil) ''x )
- ( (sstatus chainatom t) t )
- ( (errset (car (cdr (car 8))) nil) ''(nil) )
- ( (sstatus chainatom nil) t )
- ( (errset (car (cdr (car 8))) nil) nil )
- ( (errset (car '(a b c))) ''(a) )
- )
- )
-
- (setq List#8_Sets
- '( ( (null (set-create '(nil nil nil))) t )
- ( (null (set-create nil)) t )
- ( (hunkp (setq s1 (set-create '(a (a) a ((a)))))) t )
- ( (hunkp (setq s2 (set-create '(a (a))))) t )
- ( (set-list s1) ''((a) a ((a))) )
- ( (set-list s2) ''((a) a) )
- ( (set-list (set-and s1)) ''((a) a ((a))) )
- ( (set-list (set-or s1)) ''((a) a ((a))) )
- ( (set-list (set-diff s1)) ''((a) a ((a))) )
- ( (set-list (set-and s1 s1)) ''((a) a ((a))) )
- ( (set-list (set-or s1 s1)) ''((a) a ((a))) )
- ( (set-list (set-diff s1 s1)) nil )
- ( (set-list (set-and s1 '(a))) ''(a) )
- ( (set-list (set-and s1 s2)) ''((a) a) )
- ( (set-list (set-or s1 '(b))) ''((a) b a ((a))) )
- ( (set-list (set-or s1 s2)) ''((a) a ((a))) )
- ( (set-list (set-diff s1 s2)) ''(((a))) )
- ( (set-list (set-or '(a) '(b) '(c) nil)) ''(c b a) )
- ( (set-list (set-or '(a b) '(b a) '(c b a))) ''(c b a) )
- ( (set-list (set-and '(a) '(b) '(c))) nil )
- ( (set-list (set-and '(a) '(a) '(a))) ''(a) )
- ( (set-list (set-and '(a b) '(b a) '(c b a))) ''(b a) )
- ( (set-list (set-and '(a b) nil '(c b a))) nil )
- ( (set-list (set-diff '(a b) '(b a) '(c b a))) nil )
- ( (set-list (set-diff '(a b) '(b))) ''(a) )
- ( (set-list (set-diff nil '(b))) nil )
- ( (set-member (set-create (oblist)) 'set-create) t )
- )
- )
-
- ;; Some data lists that are used by some of the test routines.
- ;; Do not change them as their contents are important to test results.
-
- (setq Data_1 '(a(b(c(d(e(f(g)))(h)(((((i)(((j)((k))(l]
- (setq Data_2 '(a(b(c(d(e(f('|g xx|)))(h . hi)(((((22)(((j)((k))(l]
- (array Data_Array t 5 20)
- (array Data_Array2 t 5 20)
- (setq Hunk_126 (makhunk 126))
- (setq Hunk_50 (makhunk 50))
- (setq Hunk_1 (makhunk 1))
-
- ;; Function AtomInList?(a l)
- ;; ~~~~~~~~~~~~~~~~~~~~~~~~~
- ;; Look through list l for atom a. If found return true else return nil.
-
- (defun AtomInList?(a l)
- (prog ()
- LOOP: (and (null l) (return nil))
- (and (eq (car l) a) (return t))
- (setq l (cdr l))
- (go LOOP:)
- )
- )
-
-
- ;; Function Nearly Equal(a b)
- ;; ~~~~~~~~~~~~~~~~~~~~~~~~~~
- ;; Returns t if a and b are both numbers that are pretty close to each
- ;; other. The tolerance is .00001 just to give an idea that things are ok.
-
- (defun NearlyEqual(a b)
- (cond ((or (not (numbp a)) (not (numbp b))) nil)
- ((greaterp 0.00001 (abs (difference a b))) t)
- (t nil)
- )
- )
-
- ;; Function run(tracing)
- ;; ~~~~~~~~~~~~~~~~~~~~~~
- ;; Initiate one q&a test - trace if 'tracing' is non nil. This test can
- ;; only be run once because of the expected side effects.
- ;;
-
- (defun run(tracing)
- (prog (where)
- (setq where poport)
- (Q&A List#1_Math_Functions where tracing)
- (Q&A List#2_Predicates where tracing)
- (Q&A List#3_Selectors_Creators where tracing)
- (Q&A List#4_File_IO_Functions where tracing)
- (Q&A List#5_Side_Effects where tracing)
- (Q&A List#6_Destructives where tracing)
- (Q&A List#7_ControlFlow where tracing)
- (Q&A List#8_Sets where tracing)
- (return t)
- )
- )
-