clojure: rename qualified-symbol to clojure-symbol and export clojure-symbol and...
[chicken-eggs:sexpressive.git] / tests / clojure.scm
1 (use test sexpressive-clojure)
2
3 (test-group "clojure"
4   (sexpressive syntax:clojure)
5
6   (test-group "symbols"
7     (test* 'foo "foo")
8     (test* '*+!-_? "*+!-_?")
9     (test* 'foo:bar "foo:bar")
10     (test* 'f:o:o:bar "f:o:o:bar")
11     (test-error* "foo::bar")
12     (test-error* "foo:")
13     (test* '/ "/")
14     (test-error* "/foo")
15     (test-error* "foo/"))
16
17   (test-group "qualified symbols"
18     (test* (make-clojure-symbol '(http-client) 'uri-scheme)
19            "http-client/uri-scheme")
20     (test* (make-clojure-symbol '(clojure core) 'println)
21            "clojure.core/println")
22     (test* (make-clojure-symbol '(foo bar) #f)
23            "foo.bar")
24     (test* (make-clojure-symbol '(foo ||) #f)
25            "foo."))
26
27
28   (test-group "quotation"
29     (test* '(quote foo) "'foo")
30     (test* '(quasiquote foo) "`foo")
31     (test* '(unquote foo) "~foo")
32     (test* '(unquote-splicing foo) "~@foo"))
33
34   (test-group "whitespace"
35     (test* "comma is whitespace" 'foo ",,,foo"))
36
37   (test-group "keywords"
38     (test* (make-clojure-keyword 'foo #f) ":foo")
39     (test-error* ":"))
40
41   (test-group "namespaced keywords"
42     (test* (make-clojure-keyword 'foo #t) "::foo"))
43
44   (test-group "string escape sequences"
45     (test* "\n\t\r\b\f" "\"\\n\\t\\r\\b\\f\"")))