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 / TestSQLLexer.java @ 44098
History | View | Annotate | Download (8.66 KB)
1 |
package org.gvsig.expresionevaluator.impl; |
---|---|
2 |
|
3 |
import org.gvsig.expressionevaluator.impl.SQLLexicalAnalyzer; |
4 |
import junit.framework.TestCase; |
5 |
import org.gvsig.expressionevaluator.LexicalAnalyzer; |
6 |
import org.gvsig.expressionevaluator.LexicalAnalyzer.Token; |
7 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
8 |
|
9 |
public class TestSQLLexer extends TestCase { |
10 |
|
11 |
public TestSQLLexer(String testName) { |
12 |
super(testName);
|
13 |
} |
14 |
|
15 |
@Override
|
16 |
protected void setUp() throws Exception { |
17 |
super.setUp();
|
18 |
new DefaultLibrariesInitializer().fullInitialize();
|
19 |
} |
20 |
|
21 |
@Override
|
22 |
protected void tearDown() throws Exception { |
23 |
super.tearDown();
|
24 |
} |
25 |
|
26 |
// TODO add test methods here. The name must begin with 'test'. For example:
|
27 |
// public void testHello() {}
|
28 |
|
29 |
protected LexicalAnalyzer createLexicalAnalyzer(String expression) { |
30 |
SQLLexicalAnalyzer lex = new SQLLexicalAnalyzer(expression);
|
31 |
return lex;
|
32 |
} |
33 |
|
34 |
public void testIdentifier1() { |
35 |
String expression = "precio"; |
36 |
|
37 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
38 |
Token t1 = lex.next(); |
39 |
assertEquals(Token.IDENTIFIER, t1.getType()); |
40 |
assertEquals("precio", t1.getLiteral());
|
41 |
} |
42 |
|
43 |
public void testIdentifier2() { |
44 |
String expression = "\"precio\""; |
45 |
|
46 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
47 |
Token t1 = lex.next(); |
48 |
assertEquals(Token.IDENTIFIER, t1.getType()); |
49 |
assertEquals("precio", t1.getLiteral());
|
50 |
} |
51 |
|
52 |
public void testIdentifier3() { |
53 |
String expression = "[precio]"; |
54 |
|
55 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
56 |
Token t1 = lex.next(); |
57 |
assertEquals(Token.IDENTIFIER, t1.getType()); |
58 |
assertEquals("precio", t1.getLiteral());
|
59 |
} |
60 |
|
61 |
public void testTrue() { |
62 |
String expression = "true"; |
63 |
|
64 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
65 |
Token t1 = lex.next(); |
66 |
assertEquals(Token.TRUE, t1.getType()); |
67 |
assertEquals("true", t1.getLiteral());
|
68 |
} |
69 |
|
70 |
public void testFalse() { |
71 |
String expression = "false"; |
72 |
|
73 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
74 |
Token t1 = lex.next(); |
75 |
assertEquals(Token.FALSE, t1.getType()); |
76 |
assertEquals("false", t1.getLiteral());
|
77 |
} |
78 |
|
79 |
public void testNull() { |
80 |
String expression = "null"; |
81 |
|
82 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
83 |
Token t1 = lex.next(); |
84 |
assertEquals(Token.NULL, t1.getType()); |
85 |
assertEquals("null", t1.getLiteral());
|
86 |
assertNotNull(t1.getValue()); |
87 |
} |
88 |
|
89 |
public void testIsNull() { |
90 |
String expression = "isnull"; |
91 |
|
92 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
93 |
Token t1 = lex.next(); |
94 |
assertEquals(Token.ISNULL, t1.getType()); |
95 |
assertEquals("isnull", t1.getLiteral());
|
96 |
assertNotNull(t1.getValue()); |
97 |
} |
98 |
|
99 |
public void testNotNull() { |
100 |
String expression = "notnull"; |
101 |
|
102 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
103 |
Token t1 = lex.next(); |
104 |
assertEquals(Token.NOTNULL, t1.getType()); |
105 |
assertEquals("notnull", t1.getLiteral());
|
106 |
assertNotNull(t1.getValue()); |
107 |
} |
108 |
|
109 |
public void testNotTrue() { |
110 |
String expression = "not true"; |
111 |
|
112 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
113 |
Token t1 = lex.next(); |
114 |
assertEquals(Token.OP_NOT, t1.getType()); |
115 |
assertEquals("not", t1.getLiteral());
|
116 |
t1 = lex.next(); |
117 |
assertEquals(Token.TRUE, t1.getType()); |
118 |
assertEquals("true", t1.getLiteral());
|
119 |
} |
120 |
|
121 |
public void testInteger() { |
122 |
String expression = "23"; |
123 |
|
124 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
125 |
Token t1 = lex.next(); |
126 |
assertEquals(Token.INTEGER_LITERAL, t1.getType()); |
127 |
assertEquals("23", t1.getLiteral());
|
128 |
assertEquals(new Long(23), t1.getValue()); |
129 |
} |
130 |
|
131 |
public void testDecimal() { |
132 |
String expression = "23.1"; |
133 |
|
134 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
135 |
Token t1 = lex.next(); |
136 |
assertEquals(Token.FLOATING_POINT_LITERAL, t1.getType()); |
137 |
assertEquals("23.1", t1.getLiteral());
|
138 |
assertEquals(new Double(23.1), t1.getValue()); |
139 |
} |
140 |
|
141 |
public void testStringLiteral1() { |
142 |
String expression = "'hola macu'"; |
143 |
|
144 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
145 |
Token t1 = lex.next(); |
146 |
assertEquals(Token.STRING_LITERAL, t1.getType()); |
147 |
assertEquals("hola macu", t1.getLiteral());
|
148 |
assertEquals("hola macu", t1.getValue());
|
149 |
} |
150 |
|
151 |
public void testStringLiteral2() { |
152 |
String expression = "'hola''s macu'"; |
153 |
|
154 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
155 |
Token t1 = lex.next(); |
156 |
assertEquals(Token.STRING_LITERAL, t1.getType()); |
157 |
assertEquals("hola's macu", t1.getLiteral());
|
158 |
assertEquals("hola's macu", t1.getValue());
|
159 |
} |
160 |
|
161 |
public void operator(String operatorName, int operatorId) { |
162 |
String expression = "precio " + operatorName + " 23"; |
163 |
|
164 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
165 |
Token t1 = lex.next(); |
166 |
assertEquals(Token.IDENTIFIER, t1.getType()); |
167 |
assertEquals("precio", t1.getLiteral());
|
168 |
|
169 |
Token t2 = lex.next(); |
170 |
assertEquals(operatorId, t2.getType()); |
171 |
assertEquals(operatorName, t2.getLiteral()); |
172 |
|
173 |
Token t3 = lex.next(); |
174 |
assertEquals(Token.INTEGER_LITERAL, t3.getType()); |
175 |
assertEquals("23", t3.getLiteral());
|
176 |
assertEquals(new Long(23), t3.getValue()); |
177 |
} |
178 |
|
179 |
public void testOperators() { |
180 |
|
181 |
operator("=", Token.OP_EQ);
|
182 |
operator("<>", Token.OP_NE);
|
183 |
operator(">", Token.OP_GT);
|
184 |
operator(">=", Token.OP_GE);
|
185 |
operator("<", Token.OP_LT);
|
186 |
operator("<=", Token.OP_LE);
|
187 |
operator("like", Token.PRED_LIKE);
|
188 |
operator("ilike", Token.PRED_ILIKE);
|
189 |
operator("+", Token.OP_ADD);
|
190 |
operator("-", Token.OP_SUBST);
|
191 |
operator("*", Token.OP_MULT);
|
192 |
// operator("^", Token.OP_POW);
|
193 |
operator("or", Token.OP_OR);
|
194 |
operator("and", Token.OP_AND);
|
195 |
operator("%", Token.OP_MOD);
|
196 |
operator("is", Token.PRED_IS);
|
197 |
operator("->", Token.OP_GETATTR);
|
198 |
operator(".", Token.OP_GETATTR);
|
199 |
|
200 |
} |
201 |
|
202 |
public void testPar() { |
203 |
String expression = "precio = ( 23 + 5 )"; |
204 |
|
205 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
206 |
Token t1 = lex.next(); |
207 |
assertEquals(Token.IDENTIFIER, t1.getType()); |
208 |
assertEquals("precio", t1.getLiteral());
|
209 |
|
210 |
t1 = lex.next(); |
211 |
assertEquals(Token.OP_EQ, t1.getType()); |
212 |
assertEquals("=", t1.getLiteral());
|
213 |
|
214 |
t1 = lex.next(); |
215 |
assertEquals(Token.PARENTHESIS_OPEN, t1.getType()); |
216 |
assertEquals("(", t1.getLiteral());
|
217 |
|
218 |
t1 = lex.next(); |
219 |
assertEquals(Token.INTEGER_LITERAL, t1.getType()); |
220 |
assertEquals("23", t1.getLiteral());
|
221 |
assertEquals(new Long(23), t1.getValue()); |
222 |
|
223 |
t1 = lex.next(); |
224 |
assertEquals(Token.OP_ADD, t1.getType()); |
225 |
assertEquals("+", t1.getLiteral());
|
226 |
|
227 |
t1 = lex.next(); |
228 |
assertEquals(Token.INTEGER_LITERAL, t1.getType()); |
229 |
assertEquals("5", t1.getLiteral());
|
230 |
assertEquals(new Long(5), t1.getValue()); |
231 |
|
232 |
t1 = lex.next(); |
233 |
assertEquals(Token.PARENTHESIS_CLOSE, t1.getType()); |
234 |
assertEquals(")", t1.getLiteral());
|
235 |
} |
236 |
|
237 |
public void testFuncWithArgs() { |
238 |
String expression = "precio = add(23, 5)"; |
239 |
|
240 |
LexicalAnalyzer lex = createLexicalAnalyzer(expression); |
241 |
Token t1 = lex.next(); |
242 |
assertEquals(Token.IDENTIFIER, t1.getType()); |
243 |
assertEquals("precio", t1.getLiteral());
|
244 |
|
245 |
t1 = lex.next(); |
246 |
assertEquals(Token.OP_EQ, t1.getType()); |
247 |
assertEquals("=", t1.getLiteral());
|
248 |
|
249 |
t1 = lex.next(); |
250 |
assertEquals(Token.IDENTIFIER, t1.getType()); |
251 |
assertEquals("add", t1.getLiteral());
|
252 |
|
253 |
t1 = lex.next(); |
254 |
assertEquals(Token.PARENTHESIS_OPEN, t1.getType()); |
255 |
assertEquals("(", t1.getLiteral());
|
256 |
|
257 |
t1 = lex.next(); |
258 |
assertEquals(Token.INTEGER_LITERAL, t1.getType()); |
259 |
assertEquals("23", t1.getLiteral());
|
260 |
assertEquals(new Long(23), t1.getValue()); |
261 |
|
262 |
t1 = lex.next(); |
263 |
assertEquals(Token.COMA, t1.getType()); |
264 |
assertEquals(",", t1.getLiteral());
|
265 |
|
266 |
t1 = lex.next(); |
267 |
assertEquals(Token.INTEGER_LITERAL, t1.getType()); |
268 |
assertEquals("5", t1.getLiteral());
|
269 |
assertEquals(new Long(5), t1.getValue()); |
270 |
|
271 |
t1 = lex.next(); |
272 |
assertEquals(Token.PARENTHESIS_CLOSE, t1.getType()); |
273 |
assertEquals(")", t1.getLiteral());
|
274 |
} |
275 |
} |