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
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
}