Merge branch 'emacs' of http://git.hacks-galore.org/jao/factor
[factor/jcg.git] / unmaintained / lisp / parser / parser-tests.factor
blob911a8d34401030fdcbe0b20ad93bdd2cac55a293
1 ! Copyright (C) 2008 James Cash
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: lisp.parser tools.test peg peg.ebnf lists ;
5 IN: lisp.parser.tests
7 { 1234  }  [
8   "1234" "atom" \ lisp-expr rule parse
9 ] unit-test
11 { -42  }  [
12     "-42" "atom" \ lisp-expr rule parse
13 ] unit-test
15 { 37/52 } [
16     "37/52" "atom" \ lisp-expr rule parse
17 ] unit-test
19 { 123.98 } [
20     "123.98" "atom" \ lisp-expr rule parse
21 ] unit-test
23 { "" } [
24     "\"\"" "atom" \ lisp-expr rule parse
25 ] unit-test
27 { "aoeu" } [
28     "\"aoeu\"" "atom" \ lisp-expr rule parse
29 ] unit-test
31 { "aoeu\"de" } [
32     "\"aoeu\\\"de\"" "atom" \ lisp-expr rule parse
33 ] unit-test
35 { T{ lisp-symbol f "foobar" } } [
36     "foobar" "atom" \ lisp-expr rule parse
37 ] unit-test
39 { T{ lisp-symbol f "+" } } [
40     "+" "atom" \ lisp-expr rule parse
41 ] unit-test
43 { +nil+ } [
44     "()" lisp-expr
45 ] unit-test
47 { T{
48     cons
49     f
50     T{ lisp-symbol f "foo" }
51     T{
52         cons
53         f
54         1
55         T{ cons f 2 T{ cons f "aoeu" +nil+ } }
56     } } } [
57     "(foo 1 2 \"aoeu\")" lisp-expr
58 ] unit-test
60 { T{ cons f
61        1
62        T{ cons f
63            T{ cons f 3 T{ cons f 4 +nil+ } }
64            T{ cons f 2 +nil+ } }
65    }
66 } [
67     "(1 (3 4) 2)" lisp-expr
68 ] unit-test
69     
70 { { T{ lisp-symbol { name "quote" } } { 1 2 3 } } } [
71     "'(1 2 3)" lisp-expr cons>seq
72 ] unit-test
73     
74 { { T{ lisp-symbol f "quote" } T{ lisp-symbol f "foo" } } } [
75     "'foo" lisp-expr cons>seq
76 ] unit-test
77     
78 { { 1 2 { T{ lisp-symbol { name "quote" } } { 3 4 } } 5 } } [
79     "(1 2 '(3 4) 5)" lisp-expr cons>seq
80 ] unit-test