File: unless.lsp

package info (click to toggle)
cl-ansi-tests 20071218-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 7,000 kB
  • ctags: 22,025
  • sloc: lisp: 134,798; makefile: 144
file content (97 lines) | stat: -rw-r--r-- 1,627 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
;-*- Mode:     Lisp -*-
;;;; Author:   Paul Dietz
;;;; Created:  Fri Oct 18 19:39:34 2002
;;;; Contains: Tests of UNLESS

(in-package :cl-test)

(deftest unless.1
  (unless t)
  nil)

(deftest unless.2
  (unless nil)
  nil)

(deftest unless.3
  (unless 'b 'a)
  nil)

(deftest unless.4
  (unless nil 'a)
  a)

(deftest unless.5 (unless nil (values)))

(deftest unless.6
  (unless nil (values 1 2 3 4))
  1 2 3 4)

(deftest unless.7
  (unless 1 (values))
  nil)

(deftest unless.8
  (unless #() (values 1 2 3 4))
  nil)

(deftest unless.9
  (let ((x 0))
    (values
     (unless nil
       (incf x)
       'a)
     x))
  a 1)

;;; No implicit tagbody
(deftest unless.10
  (block done
    (tagbody
     (unless nil
       (go 10)
       10
       (return-from done 'bad))
     10
     (return-from done 'good)))
  good)

;;; Test that explicit calls to macroexpand in subforms
;;; are done in the correct environment

(deftest unless.11
  (macrolet
   ((%m (z) z))
   (unless (expand-in-current-env (%m nil)) :good))
  :good)

(deftest unless.12
  (macrolet
   ((%m (z) z))
   (unless (expand-in-current-env (%m t)) :bad))
  nil)

(deftest unless.13
  (macrolet
   ((%m (z) z))
   (let ((x 1) (p nil))
     (values
      (unless p (expand-in-current-env (%m (incf x))))
      x)))
  2 2)

(deftest unless.error.1
  (signals-error (funcall (macro-function 'unless)) program-error)
  t)

(deftest unless.error.2
  (signals-error (funcall (macro-function 'unless)
			   '(unless t))
		 program-error)
  t)

(deftest unless.error.3
  (signals-error (funcall (macro-function 'unless)
			   '(unless t) nil nil)
		 program-error)
  t)