From e71b21149d1066506de451b62cef2a1f5cb79c34 Mon Sep 17 00:00:00 2001 From: pfdietz <pfdietz@localhost> Date: Sat, 19 Oct 2002 04:45:13 +0000 Subject: [PATCH] Added tests for MULTIPLE-VALUE-BIND/CALL/LIST. --- ansi-tests/gclload2.lsp | 2 ++ ansi-tests/multiple-value-bind.lsp | 53 ++++++++++++++++++++++++++++++ ansi-tests/multiple-value-call.lsp | 42 +++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 ansi-tests/multiple-value-bind.lsp create mode 100644 ansi-tests/multiple-value-call.lsp diff --git a/ansi-tests/gclload2.lsp b/ansi-tests/gclload2.lsp index 0ef05333..c257addf 100644 --- a/ansi-tests/gclload2.lsp +++ b/ansi-tests/gclload2.lsp @@ -44,6 +44,8 @@ (load "lambda-parameters-limit.lsp") (load "let.lsp") (load "macrolet.lsp") +(load "multiple-value-bind.lsp") +(load "multiple-value-call.lsp") ;; include multiple-value-list (load "nil.lsp") (load "not-and-null.lsp") (load "notany.lsp") diff --git a/ansi-tests/multiple-value-bind.lsp b/ansi-tests/multiple-value-bind.lsp new file mode 100644 index 00000000..7943908c --- /dev/null +++ b/ansi-tests/multiple-value-bind.lsp @@ -0,0 +1,53 @@ +;-*- Mode: Lisp -*- +;;;; Author: Paul Dietz +;;;; Created: Fri Oct 18 23:16:23 2002 +;;;; Contains: Tests for MULTIPLE-VALUE-BIND + +(in-package :cl-test) + +(deftest multiple-value-bind.1 + (multiple-value-bind (x y z) (values 1 2 3) + (declare (type integer x)) + (declare (type integer y)) + (declare (type integer z)) + (list z y x)) + (3 2 1)) + +(deftest multiple-value-bind.2 + (multiple-value-bind (x y z) (values 1 2 3) + (let ((x 4)) + (list x y z))) + (4 2 3)) + +(deftest multiple-value-bind.3 + (multiple-value-bind (x y z) (values 1 2 3 4 5 6) + (list x y z)) + (1 2 3)) + +(deftest multiple-value-bind.4 + (multiple-value-bind (x y z) (values 1 2) + (list x y z)) + (1 2 nil)) + +(deftest multiple-value-bind.5 + (multiple-value-bind () (values 1 2) (values 'a 'b 'c)) + a b c) + +(deftest multiple-value-bind.6 + (multiple-value-bind (x y z) (values) + (list x y z)) + (nil nil nil)) + +(deftest multiple-value-bind.7 + (let ((z 0) x y) + (declare (special z)) + (values + (flet ((%x () (symbol-value 'x)) + (%y () (symbol-value 'y)) + (%z () (symbol-value 'z))) + (multiple-value-bind (x y z) (values 1 2 3) + (declare (special x y)) + (list (%x) (%y) (%z)))) + x y z)) + (1 2 0) nil nil 0) + diff --git a/ansi-tests/multiple-value-call.lsp b/ansi-tests/multiple-value-call.lsp new file mode 100644 index 00000000..012d942f --- /dev/null +++ b/ansi-tests/multiple-value-call.lsp @@ -0,0 +1,42 @@ +;-*- Mode: Lisp -*- +;;;; Author: Paul Dietz +;;;; Created: Fri Oct 18 23:35:07 2002 +;;;; Contains: Tests of MULTIPLE-VALUE-CALL, MULTIPLE-VALUE-LIST + +(in-package :cl-test) + +(deftest multiple-value-call.1 + (multiple-value-call #'+ (values 1 2) (values) 3 (values 4 5 6)) + 21) + +(deftest multiple-value-call.2 + (multiple-value-call 'list) + nil) + +(deftest multiple-value-call.3 + (multiple-value-call 'list (floor 13 4)) + (3 1)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftest multiple-value-list.1 + (multiple-value-list (values)) + nil) + +(deftest multiple-value-list.2 + (multiple-value-list (values 'a)) + (a)) + +(deftest multiple-value-list.3 + (multiple-value-list (values 'a 'b)) + (a b)) + +(deftest multiple-value-list.4 + (not + (loop + for i from 0 below (min multiple-values-limit 100) + for x = (make-list i :initial-element 'a) + always (equal x (multiple-value-list (values-list x))))) + nil) + + -- GitLab