diff --git a/ansi-tests/gclload2.lsp b/ansi-tests/gclload2.lsp index f06695b15ba36798a29d08e55ece93b07009e342..7f66edca313a7fd1e1941e70b3c54c20667d5840 100644 --- a/ansi-tests/gclload2.lsp +++ b/ansi-tests/gclload2.lsp @@ -76,6 +76,8 @@ (load "loop.lsp") (load "loop1.lsp") (load "loop2.lsp") +(load "loop3.lsp") +(load "loop4.lsp") ;;; Tests of conses diff --git a/ansi-tests/loop1.lsp b/ansi-tests/loop1.lsp index 7f01c5f0f37209314c5e3d56b3b2affc373a9743..37f9c75b2572e02013f3488745a37d97976099e3 100644 --- a/ansi-tests/loop1.lsp +++ b/ansi-tests/loop1.lsp @@ -177,10 +177,6 @@ (loop for x from 1 upto 5 collect x) (1 2 3 4 5)) -(deftest loop.1.33 - (loop for x from 1 upto 5 collect x) - (1 2 3 4 5)) - (deftest loop.1.34 (loop for x from 1 to 4.0 collect x) (1 2 3 4)) diff --git a/ansi-tests/loop2.lsp b/ansi-tests/loop2.lsp index 8f634414d79c9041c7f2bba1b9061593b1bda93d..336679fe58769ce079f28a4cd04230fc9aaf5363 100644 --- a/ansi-tests/loop2.lsp +++ b/ansi-tests/loop2.lsp @@ -87,7 +87,53 @@ (loop for nil in nil do (return t)) nil) +(deftest loop.2.17 + (let ((x '(a b c))) + (values + x + (loop for x in '(d e f) collect (list x)) + x)) + (a b c) + ((d) (e) (f)) + (a b c)) + +(deftest loop.2.18 + (loop for x of-type (integer 0 10) in '(2 4 6 7) sum x) + 19) + +;;; Tests of the 'AS' form + +(deftest loop.2.19 + (loop as x in '(1 2 3) sum x) + 6) +(deftest loop.2.20 + (loop as x in '(a b c) + as y in '(1 2 3) + collect (list x y)) + ((a 1) (b 2) (c 3))) +(deftest loop.2.21 + (loop as x in '(a b c) + for y in '(1 2 3) + collect (list x y)) + ((a 1) (b 2) (c 3))) + +(deftest loop.2.22 + (loop for x in '(a b c) + as y in '(1 2 3) + collect (list x y)) + ((a 1) (b 2) (c 3))) + +(deftest loop.2.23 + (let (a b (i 0)) + (values + (loop for e in (progn (setf a (incf i)) + '(a b c d e f g)) + by (progn (setf b (incf i)) #'cddr) + collect e) + a b i)) + (a c e g) + 1 2 2) diff --git a/ansi-tests/loop3.lsp b/ansi-tests/loop3.lsp new file mode 100644 index 0000000000000000000000000000000000000000..9fe3051a4241cd6e8b7c2f8d410aad0c8a4a1fa6 --- /dev/null +++ b/ansi-tests/loop3.lsp @@ -0,0 +1,136 @@ +;-*- Mode: Lisp -*- +;;;; Author: Paul Dietz +;;;; Created: Sun Oct 27 08:36:36 2002 +;;;; Contains: Tests of FOR-ON-AS-LIST iteration control in LOOP + +(in-package :cl-test) + +(deftest loop.3.1 + (loop for x on '(1 2 3) sum (car x)) + 6) + +(deftest loop.3.2 + (loop for x on '(1 2 3 4) + do (when (evenp (car x)) (return x))) + (2 3 4)) + + +(deftest loop.3.3 + (loop for x on '(a b c . d) collect (car x)) + (a b c)) + +(deftest loop.3.4 + (let ((x nil)) + (loop for e on '(a b c d) do (push (car e) x)) + x) + (d c b a)) + +(deftest loop.3.5 + (loop for e on '(a b c d e f) by #'cddr + collect (car e)) + (a c e)) + +(deftest loop.3.6 + (loop for e on '(a b c d e f g) by #'cddr + collect (car e)) + (a c e g)) + +(deftest loop.3.7 + (loop for e on '(a b c d e f) + by #'(lambda (l) (and (cdr l) (cons (car l) (cddr l)))) + collect (car e)) + (a a a a a a)) + +(deftest loop.3.8 + (loop for ((x . y)) on '((a . b) (c . d) (e . f)) + collect (list x y)) + ((a b) (c d) (e f))) + +(deftest loop.3.9 + (loop for ((x nil y)) on '((a b c) (d e f) (g h i)) + collect (list x y)) + ((a c) (d f) (g i))) + +(deftest loop.3.10 + (loop for ((x y)) of-type (fixnum) on '((1 2) (3 4) (5 6)) + collect (+ x y)) + (3 7 11)) + +(deftest loop.3.11 + (loop for ((x y)) of-type (fixnum) on '((1 2) (3 4) (5 6)) + collect (+ x y)) + (3 7 11)) + +(deftest loop.3.12 + (loop for ((x y)) of-type ((fixnum fixnum)) on '((1 2) (3 4) (5 6)) + collect (+ x y)) + (3 7 11)) + +(deftest loop.3.13 + (loop for ((x . y)) of-type ((fixnum . fixnum)) on '((1 . 2) (3 . 4) (5 . 6)) + collect (+ x y)) + (3 7 11)) + +(deftest loop.3.14 + (classify-error + (loop for x on '(a b c) + for x on '(d e f) collect x)) + programm-error) + +(deftest loop.3.15 + (classify-error + (loop for (x . x) on '((a b) (c d)) collect x)) + programm-error) + +(deftest loop.3.16 + (loop for nil on nil do (return t)) + nil) + +(deftest loop.3.17 + (let ((x '(a b c))) + (values + x + (loop for x on '(d e f) collect x) + x)) + (a b c) + ((d e f) (e f) (f)) + (a b c)) + +(deftest loop.3.18 + (loop for (x) of-type ((integer 0 10)) on '(2 4 6 7) sum x) + 19) + +;;; Tests of the 'AS' form + +(deftest loop.3.19 + (loop as x on '(1 2 3) sum (car x)) + 6) + +(deftest loop.3.20 + (loop as x on '(a b c) + as y on '(1 2 3) + collect (list (car x) (car y))) + ((a 1) (b 2) (c 3))) + +(deftest loop.3.21 + (loop as x on '(a b c) + for y on '(1 2 3) + collect (list (car x) (car y))) + ((a 1) (b 2) (c 3))) + +(deftest loop.3.22 + (loop for x on '(a b c) + as y on '(1 2 3) + collect (list (car x) (car y))) + ((a 1) (b 2) (c 3))) + +(deftest loop.3.23 + (let (a b (i 0)) + (values + (loop for e on (progn (setf a (incf i)) + '(a b c d e f g)) + by (progn (setf b (incf i)) #'cddr) + collect (car e)) + a b i)) + (a c e g) + 1 2 2) diff --git a/ansi-tests/loop4.lsp b/ansi-tests/loop4.lsp new file mode 100644 index 0000000000000000000000000000000000000000..e29da999fd5b23b2094814f3a669421d237d33ea --- /dev/null +++ b/ansi-tests/loop4.lsp @@ -0,0 +1,21 @@ +;-*- Mode: Lisp -*- +;;;; Author: Paul Dietz +;;;; Created: Sun Oct 27 22:46:39 2002 +;;;; Contains: Tests for LOOP FOR-AS-EQUAL-THEN + +(in-package :cl-test) + +(deftest loop.4.1 + (loop + for x = 1 then (1+ x) + until (> x 5) + collect x) + (1 2 3 4 5)) + +(deftest loop.4.2 + (loop + for i from 1 to 10 + for j = (1+ i) collect j) + (2 3 4 5 6 7 8 9 10 11)) + +