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 / TestCodeToValue.java @ 44644

History | View | Annotate | Download (7.35 KB)

1 44006 jjdelcerro
package org.gvsig.expresionevaluator.impl;
2 43128 jjdelcerro
3 44006 jjdelcerro
import junit.framework.TestCase;
4 44198 jjdelcerro
import org.gvsig.expressionevaluator.Code;
5 44006 jjdelcerro
import org.gvsig.expressionevaluator.ExpressionBuilder;
6 44198 jjdelcerro
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
7
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
8
import org.gvsig.expressionevaluator.ExpressionUtils;
9
import org.gvsig.expressionevaluator.LexicalAnalyzer;
10 44006 jjdelcerro
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
11 43128 jjdelcerro
12 44198 jjdelcerro
public class TestCodeToValue extends TestCase {
13
14
    public TestCodeToValue(String testName) {
15 44006 jjdelcerro
        super(testName);
16
    }
17
18 43128 jjdelcerro
    @Override
19 44006 jjdelcerro
    protected void setUp() throws Exception {
20
        super.setUp();
21
        new DefaultLibrariesInitializer().fullInitialize();
22
    }
23 43128 jjdelcerro
24 44006 jjdelcerro
    @Override
25
    protected void tearDown() throws Exception {
26
        super.tearDown();
27 43128 jjdelcerro
    }
28 44006 jjdelcerro
29
    // TODO add test methods here. The name must begin with 'test'. For example:
30
    // public void testHello() {}
31 43128 jjdelcerro
32 44198 jjdelcerro
    protected LexicalAnalyzer createLexicalAnalyzer() {
33
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
34
        LexicalAnalyzer lexer = manager.createLexicalAnalyzer();
35
        return lexer;
36 43128 jjdelcerro
    }
37 44198 jjdelcerro
38
    protected org.gvsig.expressionevaluator.Compiler createCompiler() {
39
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
40
        org.gvsig.expressionevaluator.Compiler compiler = manager.createCompiler();
41
        compiler.setLexicalAnalyzer(createLexicalAnalyzer());
42
        return compiler;
43
    }
44 43128 jjdelcerro
45 44198 jjdelcerro
    public Code compileExpression(String source) {
46
        org.gvsig.expressionevaluator.Compiler compiler = createCompiler();
47
        Code code = compiler.compileExpression(source);
48
        return code;
49 43128 jjdelcerro
    }
50
51 44198 jjdelcerro
    public void testIdentifier1() {
52
        String source = "precio";
53
54
        Code code = compileExpression(source);
55
        assertEquals("\"precio\"", code.toValue().toString());
56
    }
57
58
    public void testIdentifier2() {
59
        org.gvsig.expressionevaluator.Compiler compiler = createCompiler();
60
        compiler.getLexicalAnalyzer().setUseBracketsForIdentifiers(true);
61
62
        String source = "[precio]";
63
64
        Code code = compiler.compileExpression(source);
65
        assertEquals("\"precio\"", code.toValue().toString());
66
    }
67
68
    public void testIdentifier3() {
69
        String source = "\"precio\"";
70
71
        Code code = compileExpression(source);
72
        assertEquals("\"precio\"", code.toValue().toString());
73
    }
74
75
76
    public void testTrue() {
77
        String source = "true";
78
79
        Code code = compileExpression(source);
80
        assertEquals("TRUE", code.toValue().toString());
81
    }
82
83
    public void testFalse() {
84
        String source = "false";
85
86
        Code code = compileExpression(source);
87
        assertEquals("FALSE", code.toValue().toString());
88
    }
89
90
    public void testNull() {
91
        String source = "null";
92
93
        Code code = compileExpression(source);
94
        assertEquals("NULL", code.toValue().toString());
95
    }
96
97
    public void testNotTrue() {
98
        String source = "not true";
99
100
        Code code = compileExpression(source);
101
        assertEquals("NOT(TRUE)", code.toValue().toString());
102
    }
103
104
    public void testInteger() {
105
        String source = "23";
106
107
        Code code = compileExpression(source);
108
        assertEquals("23", code.toValue().toString());
109
    }
110
111
    public void operator(String operatorName) {
112
        String source = "precio " + operatorName + " 23";
113
114
        Code code = compileExpression(source);
115
        assertEquals("(\"precio\" "+ operatorName + " 23)", code.toValue().toString());
116
    }
117
118
    public void testOperators() {
119
120
        operator("=");
121
        operator("<>");
122
        operator(">");
123
        operator(">=");
124
        operator("<");
125
        operator("<=");
126
        operator("LIKE");
127
        operator("ILIKE");
128
        operator("||");
129
        operator("+");
130
        operator("-");
131
        operator("*");
132
        operator("OR");
133
        operator("AND");
134
        operator("%");
135
        operator("IS");
136
137
        operator("~");
138
    }
139
140
//    public void testILike() {
141
//        String source = "precio ILike 23";
142
//
143
//        Code code = compileExpression(source);
144
//        assertEquals("LOWER(\"precio\") LIKE LOWER(23)", code.toValue().toString());
145
//    }
146
147
    public void testAddMul() {
148
        String source = "precio + 10 * 2 + 20 + 30";
149
150
        Code code = compileExpression(source);
151
        assertEquals("(((\"precio\" + (10 * 2)) + 20) + 30)", code.toValue().toString());
152
    }
153
154
    public void testAddMulPar() {
155
        String source = "(precio + 10) * 2 + 20 + 30";
156
157
        Code code = compileExpression(source);
158
        assertEquals("((((\"precio\" + 10) * 2) + 20) + 30)", code.toValue().toString());
159
    }
160
161
    public void testAbs() {
162
        String source = "precio + abs(10)";
163
164
        Code code = compileExpression(source);
165
        assertEquals("(\"precio\" + abs(10))", code.toValue().toString());
166
    }
167
168
    public void testAbs2() {
169
        String source = "precio + abs(-10)";
170
171
        Code code = compileExpression(source);
172 44211 jjdelcerro
        assertEquals("(\"precio\" + abs(-10))", code.toValue().toString());
173 44198 jjdelcerro
    }
174
175
    public void testPI() {
176
        String source = "precio + PI()";
177
178
        Code code = compileExpression(source);
179
        assertEquals("(\"precio\" + PI())", code.toValue().toString());
180
    }
181
182
    public void testCeil() {
183
        String source = "precio + CEIL(PI())";
184
185
        Code code = compileExpression(source);
186
        assertEquals("(\"precio\" + CEIL(PI()))", code.toValue().toString());
187
    }
188
189
    public void testGetitem1() {
190
        String source = "LIST('uno','dos','tres')[1]" ;
191
192
        Code code = compileExpression(source);
193
        assertEquals("GETITEM(LIST('uno', 'dos', 'tres'), 1)", code.toValue().toString());
194
    }
195
196
    public void testConcat() {
197
        String source = "CONCAT(precio,' euros')";
198
199
        Code code = compileExpression(source);
200
        assertEquals("CONCAT(\"precio\", ' euros')", code.toValue().toString());
201
    }
202
203
    public void test1() {
204
        String source = "NOMBRE03 = 'Torre d''En Besora (la)'";
205
206
        Code code = compileExpression(source);
207
        assertEquals("(\"NOMBRE03\" = 'Torre d''En Besora (la)')", code.toValue().toString());
208
    }
209
210 43128 jjdelcerro
    public void test2() {
211 44198 jjdelcerro
        org.gvsig.expressionevaluator.Compiler compiler = createCompiler();
212
        compiler.getLexicalAnalyzer().setUseBracketsForIdentifiers(true);
213
214
        String source = "[1990] = 0.168873933773767";
215
216
        Code code = compiler.compileExpression(source);
217
        assertEquals("(\"1990\" = 0.168873933773767)", code.toValue().toString());
218 43128 jjdelcerro
    }
219 44198 jjdelcerro
220
    public void test2fields() {
221
        org.gvsig.expressionevaluator.Compiler compiler = createCompiler();
222
        compiler.getLexicalAnalyzer().setUseBracketsForIdentifiers(true);
223
224
        String source = "[1990] = [precio]";
225
226
        Code code = compiler.compileExpression(source);
227
        assertEquals("(\"1990\" = \"precio\")", code.toValue().toString());
228
    }
229 43128 jjdelcerro
230 44198 jjdelcerro
231
    public void testInvokeFunction1() {
232
        String source = "ST_Area(GEOMETRY)";
233
234
        Code code = compileExpression(source);
235
        assertEquals("ST_Area(\"GEOMETRY\")", code.toValue().toString());
236
    }
237 43128 jjdelcerro
238
}