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
package org.gvsig.expresionevaluator.impl;
2

    
3
import junit.framework.TestCase;
4
import org.gvsig.expressionevaluator.Code;
5
import org.gvsig.expressionevaluator.ExpressionBuilder;
6
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
7
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
8
import org.gvsig.expressionevaluator.ExpressionUtils;
9
import org.gvsig.expressionevaluator.LexicalAnalyzer;
10
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
11

    
12
public class TestCodeToValue extends TestCase {
13
    
14
    public TestCodeToValue(String testName) {
15
        super(testName);
16
    }
17

    
18
    @Override
19
    protected void setUp() throws Exception {
20
        super.setUp();
21
        new DefaultLibrariesInitializer().fullInitialize();
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
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
34
        LexicalAnalyzer lexer = manager.createLexicalAnalyzer();
35
        return lexer;
36
    }
37

    
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
    
45
    public Code compileExpression(String source) {
46
        org.gvsig.expressionevaluator.Compiler compiler = createCompiler();
47
        Code code = compiler.compileExpression(source);
48
        return code;
49
    }
50
    
51
    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
        assertEquals("(\"precio\" + abs(-10))", code.toValue().toString());
173
    }
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
    public void test2() {
211
        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
    }
219

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