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 @ 43532

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