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 |
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 |
import org.gvsig.expressionevaluator.impl.ExpressionEvaluatorImplLibrary; |
10 |
|
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 |
new ExpressionEvaluatorImplLibrary().initialize();
|
22 |
} |
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 |
assertEquals("[precio]", code.toString());
|
50 |
} |
51 |
|
52 |
public void testIdentifier2() { |
53 |
String source = "[precio]"; |
54 |
|
55 |
Compiler compiler = createCompiler();
|
56 |
Code code = compiler.compileExpression(source); |
57 |
assertEquals("[precio]", code.toString());
|
58 |
} |
59 |
|
60 |
public void testIdentifier3() { |
61 |
String source = "\"precio\""; |
62 |
|
63 |
Compiler compiler = createCompiler();
|
64 |
Code code = compiler.compileExpression(source); |
65 |
assertEquals("[precio]", code.toString());
|
66 |
} |
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 |
assertEquals(operatorName+"([precio], 23)", code.toString());
|
115 |
} |
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 |
assertEquals("+(+(+([precio], *(10, 2)), 20), 30)", code.toString());
|
144 |
} |
145 |
|
146 |
public void testAddMulPar() { |
147 |
String source = "(precio + 10) * 2 + 20 + 30"; |
148 |
|
149 |
Compiler compiler = createCompiler();
|
150 |
|
151 |
Code code = compiler.compileExpression(source); |
152 |
assertEquals("+(+(*(+([precio], 10), 2), 20), 30)", code.toString());
|
153 |
} |
154 |
|
155 |
public void testAbs() { |
156 |
String source = "precio + abs(10)"; |
157 |
|
158 |
Compiler compiler = createCompiler();
|
159 |
|
160 |
Code code = compiler.compileExpression(source); |
161 |
assertEquals("+([precio], abs(10))", code.toString());
|
162 |
} |
163 |
|
164 |
public void testAbs2() { |
165 |
String source = "precio + abs(-10)"; |
166 |
|
167 |
Compiler compiler = createCompiler();
|
168 |
|
169 |
Code code = compiler.compileExpression(source); |
170 |
assertEquals("+([precio], abs(-10))", code.toString());
|
171 |
} |
172 |
|
173 |
public void testPI() { |
174 |
String source = "precio + PI()"; |
175 |
|
176 |
Compiler compiler = createCompiler();
|
177 |
|
178 |
Code code = compiler.compileExpression(source); |
179 |
assertEquals("+([precio], PI())", code.toString());
|
180 |
} |
181 |
|
182 |
public void testCeil() { |
183 |
String source = "precio + CEIL(PI())"; |
184 |
|
185 |
Compiler compiler = createCompiler();
|
186 |
|
187 |
Code code = compiler.compileExpression(source); |
188 |
assertEquals("+([precio], CEIL(PI()))", code.toString());
|
189 |
} |
190 |
|
191 |
public void testConcat() { |
192 |
String source = "CONCAT(precio,' euros')"; |
193 |
|
194 |
Compiler compiler = createCompiler();
|
195 |
|
196 |
Code code = compiler.compileExpression(source); |
197 |
assertEquals("CONCAT([precio], ' euros')", code.toString());
|
198 |
} |
199 |
|
200 |
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 |
|
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 |
|
227 |
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 |
} |