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

History | View | Annotate | Download (5.96 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

    
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
        assertEquals("[precio]", code.toString());
48
    }
49

    
50
    public void testIdentifier2() {
51
        String source = "[precio]";
52

    
53
        Compiler compiler = createCompiler();
54
        Code code = compiler.compileExpression(source);
55
        assertEquals("[precio]", code.toString());
56
    }
57

    
58
    public void testIdentifier3() {
59
        String source = "\"precio\"";
60

    
61
        Compiler compiler = createCompiler();
62
        Code code = compiler.compileExpression(source);
63
        assertEquals("[precio]", code.toString());
64
    }
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
        assertEquals(operatorName+"([precio], 23)", code.toString());
113
    }
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
        assertEquals("+(+(+([precio], *(10, 2)), 20), 30)", code.toString());
142
    }
143
    
144
    public void testAddMulPar() {
145
        String source = "(precio + 10) * 2 + 20 + 30";
146

    
147
        Compiler compiler = createCompiler();
148
        
149
        Code code = compiler.compileExpression(source);
150
        assertEquals("+(+(*(+([precio], 10), 2), 20), 30)", code.toString());
151
    }
152
    
153
    public void testAbs() {
154
        String source = "precio + abs(10)";
155

    
156
        Compiler compiler = createCompiler();
157
        
158
        Code code = compiler.compileExpression(source);
159
        assertEquals("+([precio], abs(10))", code.toString());
160
    }
161
    
162
    public void testAbs2() {
163
        String source = "precio + abs(-10)";
164

    
165
        Compiler compiler = createCompiler();
166
        
167
        Code code = compiler.compileExpression(source);
168
        assertEquals("+([precio], abs(-10))", code.toString());
169
    }
170
    
171
    public void testPI() {
172
        String source = "precio + PI()";
173

    
174
        Compiler compiler = createCompiler();
175
        
176
        Code code = compiler.compileExpression(source);
177
        assertEquals("+([precio], PI())", code.toString());
178
    }
179
    
180
    public void testCeil() {
181
        String source = "precio + CEIL(PI())";
182

    
183
        Compiler compiler = createCompiler();
184
        
185
        Code code = compiler.compileExpression(source);
186
        assertEquals("+([precio], CEIL(PI()))", code.toString());
187
    }
188
    
189
    public void testConcat() {
190
        String source = "CONCAT(precio,' euros')";
191

    
192
        Compiler compiler = createCompiler();
193
        
194
        Code code = compiler.compileExpression(source);
195
        assertEquals("CONCAT([precio], ' euros')", code.toString());
196
    }
197
    
198
    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
    
216
}