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