1 ! Copyright (C) 2009 Philipp Brüschweiler
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: infix.ast infix.parser infix.tokenizer tools.test ;
6 [ T{ ast-number { value 1 } } ] [ "1" build-infix-ast ] unit-test
7 [ T{ ast-negation f T{ ast-number { value 1 } } } ]
8 [ "-1" build-infix-ast ] unit-test
12 { left T{ ast-number { value 1 } } }
13 { right T{ ast-number { value 2 } } }
17 { right T{ ast-number { value 4 } } }
19 } ] [ "1+2+4" build-infix-ast ] unit-test
22 { left T{ ast-number { value 1 } } }
25 { left T{ ast-number { value 2 } } }
26 { right T{ ast-number { value 3 } } }
31 } ] [ "1+2*3" build-infix-ast ] unit-test
34 { left T{ ast-number { value 1 } } }
35 { right T{ ast-number { value 2 } } }
37 } ] [ "(1+2)" build-infix-ast ] unit-test
39 [ T{ ast-local { name "foo" } } ] [ "foo" build-infix-ast ] unit-test
40 [ "-" build-infix-ast ] must-fail
47 { left T{ ast-number { value 1 } } }
48 { right T{ ast-number { value 2 } } }
52 { left T{ ast-number { value 2 } } }
53 { right T{ ast-number { value 3 } } }
58 } ] [ "foo (1+ 2,2%3) " build-infix-ast ] unit-test
90 T{ ast-number { value 4 } }
100 { right T{ ast-number { value 2 } } }
102 } ] [ "(bar() + baz[2/ 3+4 ] )/2" build-infix-ast ] unit-test
105 { left T{ ast-number { value 1 } } }
108 { left T{ ast-number { value 2 } } }
109 { right T{ ast-number { value 3 } } }
114 } ] [ "1\n+\n2\r/\t3" build-infix-ast ] unit-test
122 T{ ast-number { value 2 } }
124 { term T{ ast-number { value 3 } } }
130 } ] [ "-foo(+2,-3)" build-infix-ast ] unit-test
166 { right T{ ast-number { value 3 } } }
170 } ] [ "+arr[-(foo(2)+-1)/3]" build-infix-ast ] unit-test
172 [ "foo bar baz" build-infix-ast ] must-fail
173 [ "1+2/4+" build-infix-ast ] must-fail
174 [ "quaz(2/3,)" build-infix-ast ] must-fail