/
ssyntax-suite.lisp
53 lines (49 loc) · 1.71 KB
/
ssyntax-suite.lisp
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
(in-package :experimental-tests)
(use-syntax :clamp)
(deftest notf (clamp-experimental)
(w/ssyntax
(assert-true (~idfn nil))
(assert-false (~idfn t))
(assert-false (~not nil))
(assert-true (~not t))
(assert-true (~is 5 4))
(assert-false (~is 5 5))
(assert-equal '(t nil t nil t) (map ~even (range 1 5)))
(assert-equal '(nil t nil t nil) (map ~odd (range 1 5)))
(assert-true (~or nil nil nil))
(assert-false (~or nil nil t))))
(deftest andf (clamp-experimental)
(w/ssyntax
(assert-false (integerp&plusp -5.5))
(assert-false (integerp&plusp 5.5))
(assert-false (integerp&plusp -5))
(assert-true (integerp&plusp 4))
(assert-equal '(nil nil nil t) (map integerp&even '(-5.5 5.5 -5 4)))
(assert-true (integerp&plusp&even 6))
(assert-false (integerp&plusp&even 5.5))
(assert-false (integerp&plusp&even -4))))
(deftest compose (clamp-experimental)
(w/ssyntax
(assert-equal '((5 . 10)) (list+cons 5 10))
(assert-equal '(6) (list+inc 5))
(assert-equal '(((1))) (list+list+list 1))))
(deftest access (clamp-experimental)
(w/ssyntax
(let xs '((1 2 3) (4 5 6) (7 8 9))
(assert-equal '(1 2 3) xs.0)
(assert-equal '(4 5 6) xs.1)
(let x 2
(assert-equal '(7 8 9) xs.x))
(assert-eql 5 xs.1.1)
(assert-eql 7 xs.2.0))
(let tab (obj a (obj c 1 d 2) b (obj e 3 f 4))
(assert-equalp (obj c 1 d 2) tab!a)
(assert-equalp (obj e 3 f 4) tab!b)
(let x 'a
(assert-equalp (obj c 1 d 2) tab.x))
(assert-eql 2 tab!a!d)
(assert-eql 3 tab!b!e))
(let array #2a ((1 2) (3 4))
(assert-equalp #(1 2) array.0)
(assert-equalp #(3 4) array.1)
(assert-equalp 3 array.1.0))))