blob: ae283abcdfa2260817512beb3fb6c5e185489c2f (
plain)
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
|
(defmacro error-to-sym (expr)
^(catch ,expr
(error (cond) :error)))
(defmacro test (:env env expr expected)
(catch
(let ((expr-expn (macroexpand expr env)))
^(ifa (not (equal (error-to-sym ,expr-expn) ',expected))
(error "test case ~s failed: produced ~s; expected ~s"
',expr it ',expected)))
(error (exc)
(unless (eq expected :error)
(error "test case ~s failed to expand: expected is ~s" expr expected)))))
(test (ifa (> (+ 2 2) 0) (* it 2))
8)
(test (let ((x 7))
(ifa (>= (* x x) 49)
(isqrt it)))
7)
(test (ifa (> x y) (print it)) :error)
(test (let ((x 5))
(ifa (< 0 (+ 3 (* 2 x)) 20) (* 100 it)))
1300)
(test (ifa (not (oddp (length '(a b c d)))) it)
4)
(test (symacrolet ((%x% 42))
(let ((y 41))
(ifa (> %x% y) it)))
42)
(test (let ((x 5))
(conda
((not (integerp x)) (list it))
((oddp (+ 2 x)) (list it))))
(7))
|