Statistics
| Revision:

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
}