blob: cdfc6c6afe4b2800af8d06fe66b7d30ed15c4c67 (
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
|
(defmacro error-to-sym (expr)
^(catch ,expr
(error (cond) :error)))
(defmacro vtest (:env env expr expected)
(catch
(let ((expr-expn (expand expr env))
(expval (gensym)))
^(let ((,expval ,expected))
(ifa (not (equal (error-to-sym ,expr-expn) ,expval))
(error "test case ~s failed: produced ~s; expected ~s"
',expr it ,expval))))
(error (exc)
(unless (eq (eval expected) :error)
(error "test case ~s failed to expand: expected is ~s" expr expected)))))
(defmacro test (expr expected)
^(vtest ,expr ',expected))
(defmacro stest (expr expected)
^(vtest ,^(tostring ,expr) ,expected))
(defmacro mtest (. pairs)
^(progn ,*(mapcar (op cons 'test) (tuples 2 pairs))))
(defun os-symbol ()
(if (ignerr (dlsym (dlopen "libandroid.so") "AAsset_close"))
:android
(let ((u (uname)))
[(orf (iff (f^ #/Linux/) (ret :linux))
(iff (f^ #/SunOS/) (ret :solaris))
(iff (f^ #/CYGWIN/) (ret :cygwin))
(iff (f^ #/CYGNAL/) (ret :cygnal))
(iff (f^ #/Darwin/) (ret :macos))
(ret :unknown))
u.sysname])))
(defun libc ()
(caseql (os-symbol)
((:linux :solaris :macos :android) (dlopen nil))
((:cygwin) (dlopen "cygwin1.dll"))))
|