svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.lib / org.gvsig.expressionevaluator.lib.impl / src / test / java / org / gvsig / expresionevaluator / impl / TestCompiler.java @ 43532
History | View | Annotate | Download (6.21 KB)
1 | 43512 | jjdelcerro | package org.gvsig.expresionevaluator.impl; |
---|---|---|---|
2 | |||
3 | import org.gvsig.expressionevaluator.impl.SQLLexicalAnalyzer; |
||
4 | import org.gvsig.expressionevaluator.impl.DefaultCompiler; |
||
5 | import junit.framework.TestCase; |
||
6 | import org.gvsig.expressionevaluator.LexicalAnalyzer; |
||
7 | import org.gvsig.expressionevaluator.Compiler; |
||
8 | import org.gvsig.expressionevaluator.Code; |
||
9 | |||
10 | |||
11 | public class TestCompiler extends TestCase { |
||
12 | |||
13 | public TestCompiler(String testName) { |
||
14 | super(testName);
|
||
15 | } |
||
16 | |||
17 | @Override
|
||
18 | protected void setUp() throws Exception { |
||
19 | super.setUp();
|
||
20 | } |
||
21 | |||
22 | @Override
|
||
23 | protected void tearDown() throws Exception { |
||
24 | super.tearDown();
|
||
25 | } |
||
26 | |||
27 | // TODO add test methods here. The name must begin with 'test'. For example:
|
||
28 | // public void testHello() {}
|
||
29 | |||
30 | protected LexicalAnalyzer createLexicalAnalyzer() {
|
||
31 | SQLLexicalAnalyzer lexer = new SQLLexicalAnalyzer();
|
||
32 | return lexer;
|
||
33 | } |
||
34 | |||
35 | protected Compiler createCompiler() { |
||
36 | Compiler compiler = new DefaultCompiler(); |
||
37 | compiler.setLexicalAnalyzer(createLexicalAnalyzer()); |
||
38 | return compiler;
|
||
39 | } |
||
40 | |||
41 | |||
42 | public void testIdentifier1() { |
||
43 | String source = "precio"; |
||
44 | |||
45 | Compiler compiler = createCompiler();
|
||
46 | Code code = compiler.compileExpression(source); |
||
47 | 43521 | jjdelcerro | assertEquals("[precio]", code.toString());
|
48 | 43512 | jjdelcerro | } |
49 | |||
50 | public void testIdentifier2() { |
||
51 | String source = "[precio]"; |
||
52 | |||
53 | Compiler compiler = createCompiler();
|
||
54 | Code code = compiler.compileExpression(source); |
||
55 | 43521 | jjdelcerro | assertEquals("[precio]", code.toString());
|
56 | 43512 | jjdelcerro | } |
57 | |||
58 | public void testIdentifier3() { |
||
59 | String source = "\"precio\""; |
||
60 | |||
61 | Compiler compiler = createCompiler();
|
||
62 | Code code = compiler.compileExpression(source); |
||
63 | 43521 | jjdelcerro | assertEquals("[precio]", code.toString());
|
64 | 43512 | jjdelcerro | } |
65 | |||
66 | |||
67 | public void testTrue() { |
||
68 | String source = "true"; |
||
69 | |||
70 | Compiler compiler = createCompiler();
|
||
71 | Code code = compiler.compileExpression(source); |
||
72 | assertEquals("true", code.toString());
|
||
73 | } |
||
74 | |||
75 | public void testFalse() { |
||
76 | String source = "false"; |
||
77 | |||
78 | Compiler compiler = createCompiler();
|
||
79 | Code code = compiler.compileExpression(source); |
||
80 | assertEquals("false", code.toString());
|
||
81 | } |
||
82 | |||
83 | public void testNull() { |
||
84 | String source = "null"; |
||
85 | |||
86 | Compiler compiler = createCompiler();
|
||
87 | Code code = compiler.compileExpression(source); |
||
88 | assertEquals("null", code.toString());
|
||
89 | } |
||
90 | |||
91 | public void testNotTrue() { |
||
92 | String source = "not true"; |
||
93 | |||
94 | Compiler compiler = createCompiler();
|
||
95 | Code code = compiler.compileExpression(source); |
||
96 | assertEquals("not(true)", code.toString());
|
||
97 | } |
||
98 | |||
99 | public void testInteger() { |
||
100 | String source = "23"; |
||
101 | |||
102 | Compiler compiler = createCompiler();
|
||
103 | Code code = compiler.compileExpression(source); |
||
104 | assertEquals("23", code.toString());
|
||
105 | } |
||
106 | |||
107 | public void operator(String operatorName) { |
||
108 | String source = "precio " + operatorName + " 23"; |
||
109 | |||
110 | Compiler compiler = createCompiler();
|
||
111 | Code code = compiler.compileExpression(source); |
||
112 | 43521 | jjdelcerro | assertEquals(operatorName+"([precio], 23)", code.toString());
|
113 | 43512 | jjdelcerro | } |
114 | |||
115 | public void testOperators() { |
||
116 | |||
117 | operator("=");
|
||
118 | operator("<>");
|
||
119 | operator(">");
|
||
120 | operator(">=");
|
||
121 | operator("<");
|
||
122 | operator("<=");
|
||
123 | operator("like");
|
||
124 | operator("ilike");
|
||
125 | operator("+");
|
||
126 | operator("-");
|
||
127 | operator("*");
|
||
128 | // operator("^");
|
||
129 | operator("or");
|
||
130 | operator("and");
|
||
131 | operator("%");
|
||
132 | operator("is");
|
||
133 | } |
||
134 | |||
135 | public void testAddMul() { |
||
136 | String source = "precio + 10 * 2 + 20 + 30"; |
||
137 | |||
138 | Compiler compiler = createCompiler();
|
||
139 | |||
140 | Code code = compiler.compileExpression(source); |
||
141 | 43521 | jjdelcerro | assertEquals("+(+(+([precio], *(10, 2)), 20), 30)", code.toString());
|
142 | 43512 | jjdelcerro | } |
143 | |||
144 | 43519 | jjdelcerro | public void testAddMulPar() { |
145 | String source = "(precio + 10) * 2 + 20 + 30"; |
||
146 | |||
147 | Compiler compiler = createCompiler();
|
||
148 | |||
149 | Code code = compiler.compileExpression(source); |
||
150 | 43521 | jjdelcerro | assertEquals("+(+(*(+([precio], 10), 2), 20), 30)", code.toString());
|
151 | 43519 | jjdelcerro | } |
152 | 43512 | jjdelcerro | |
153 | 43519 | jjdelcerro | public void testAbs() { |
154 | String source = "precio + abs(10)"; |
||
155 | |||
156 | Compiler compiler = createCompiler();
|
||
157 | |||
158 | Code code = compiler.compileExpression(source); |
||
159 | 43521 | jjdelcerro | assertEquals("+([precio], abs(10))", code.toString());
|
160 | 43519 | jjdelcerro | } |
161 | |||
162 | public void testAbs2() { |
||
163 | String source = "precio + abs(-10)"; |
||
164 | |||
165 | Compiler compiler = createCompiler();
|
||
166 | |||
167 | Code code = compiler.compileExpression(source); |
||
168 | 43521 | jjdelcerro | assertEquals("+([precio], abs(-10))", code.toString());
|
169 | 43519 | jjdelcerro | } |
170 | |||
171 | public void testPI() { |
||
172 | String source = "precio + PI()"; |
||
173 | |||
174 | Compiler compiler = createCompiler();
|
||
175 | |||
176 | Code code = compiler.compileExpression(source); |
||
177 | 43521 | jjdelcerro | assertEquals("+([precio], PI())", code.toString());
|
178 | 43519 | jjdelcerro | } |
179 | |||
180 | public void testCeil() { |
||
181 | String source = "precio + CEIL(PI())"; |
||
182 | |||
183 | Compiler compiler = createCompiler();
|
||
184 | |||
185 | Code code = compiler.compileExpression(source); |
||
186 | 43521 | jjdelcerro | assertEquals("+([precio], CEIL(PI()))", code.toString());
|
187 | 43519 | jjdelcerro | } |
188 | |||
189 | public void testConcat() { |
||
190 | String source = "CONCAT(precio,' euros')"; |
||
191 | |||
192 | Compiler compiler = createCompiler();
|
||
193 | |||
194 | Code code = compiler.compileExpression(source); |
||
195 | 43521 | jjdelcerro | assertEquals("CONCAT([precio], ' euros')", code.toString());
|
196 | 43519 | jjdelcerro | } |
197 | |||
198 | 43521 | jjdelcerro | public void test1() { |
199 | String source = "NOMBRE03 = 'Torre d''En Besora (la)'"; |
||
200 | |||
201 | Compiler compiler = createCompiler();
|
||
202 | |||
203 | Code code = compiler.compileExpression(source); |
||
204 | assertEquals("=([NOMBRE03], 'Torre d'En Besora (la)')", code.toString());
|
||
205 | } |
||
206 | |||
207 | public void test2() { |
||
208 | String source = "[1990] = 0.168873933773767"; |
||
209 | |||
210 | Compiler compiler = createCompiler();
|
||
211 | |||
212 | Code code = compiler.compileExpression(source); |
||
213 | assertEquals("=([1990], 0.168873933773767)", code.toString());
|
||
214 | } |
||
215 | 43532 | jjdelcerro | |
216 | public void test2fields() { |
||
217 | String source = "[1990] = [precio]"; |
||
218 | |||
219 | Compiler compiler = createCompiler();
|
||
220 | |||
221 | Code code = compiler.compileExpression(source); |
||
222 | assertEquals("=([1990], [precio])", code.toString());
|
||
223 | } |
||
224 | 43521 | jjdelcerro | |
225 | 43512 | jjdelcerro | } |