Revision 44750 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/test/java/org/gvsig/expressionevaluator/TestGrammarCompiler.java

View differences:

TestGrammarCompiler.java
67 67

  
68 68
        Code code = compiler.compileExpression(source.toString());
69 69
        link(code);
70
        assertEquals("SELECT(TABLE:'countries')", code.toString());
70
        assertEquals("SELECT(NULL, \"countries\", NULL, TUPLE(), TUPLE(), NULL)", code.toString());
71 71
    }
72 72

  
73
    public void testSelect1() {
74
        StringBuilder source = new StringBuilder();
75
        source.append("SELECT * FROM countries");
76

  
77
        Compiler compiler = createCompiler();
78

  
79
        Code code = compiler.compileExpression(source.toString());
80
        link(code);
81
        assertEquals("SELECT(NULL, \"countries\", NULL, TUPLE(), TUPLE(), NULL)", code.toString());
82
    }
83
    
73 84
    public void testSelect2() {
74 85
        StringBuilder source = new StringBuilder();
75 86
        source.append("BEGIN ");
76 87
        source.append("  SET X = 0; ");
77
        source.append("  FOR row in (SELECT * FROM countries;) ");
88
        source.append("  FOR row in (SELECT * FROM countries;) "); // Con ;
78 89
        source.append("    BEGIN ");
79 90
        source.append("      IF row.LASTCENSUS > 0 THEN ");
80 91
        source.append("        SET X = X + row.LASTCENSUS ");
......
86 97

  
87 98
        Code code = compiler.compileExpression(source.toString());
88 99
        link(code);
89
        assertEquals("BLOCK(LET('X', 0), FOREACH('row', SELECT(TABLE:'countries'), IFF((\"row\".\"LASTCENSUS\" > 0), LET('X', (\"X\" + \"row\".\"LASTCENSUS\")))))", code.toString());
100
        assertEquals("BLOCK(LET('X', 0), FOREACH('row', SELECT(NULL, \"countries\", NULL, TUPLE(), TUPLE(), NULL), IFF((\"row\".\"LASTCENSUS\" > 0), LET('X', (\"X\" + \"row\".\"LASTCENSUS\")))))", code.toString());
90 101
    }
91 102

  
103
    public void testSelect3() {
104
        StringBuilder source = new StringBuilder();
105
        source.append("BEGIN ");
106
        source.append("  SET X = 0; ");
107
        source.append("  FOR row in (SELECT * FROM countries) "); // Sin ;
108
        source.append("    BEGIN ");
109
        source.append("      IF row.LASTCENSUS > 0 THEN ");
110
        source.append("        SET X = X + row.LASTCENSUS ");
111
        source.append("      END IF ");
112
        source.append("    END FOR ");
113
        source.append("END");
114

  
115
        Compiler compiler = createCompiler();
116

  
117
        Code code = compiler.compileExpression(source.toString());
118
        link(code);
119
        assertEquals("BLOCK(LET('X', 0), FOREACH('row', SELECT(NULL, \"countries\", NULL, TUPLE(), TUPLE(), NULL), IFF((\"row\".\"LASTCENSUS\" > 0), LET('X', (\"X\" + \"row\".\"LASTCENSUS\")))))", code.toString());
120
    }
121

  
92 122
    public void testSelectWhere() {
93 123
        StringBuilder source = new StringBuilder();
94 124
        source.append("SELECT * FROM countries  ");
......
98 128

  
99 129
        Code code = compiler.compileExpression(source.toString());
100 130
        link(code);
101
        assertEquals("SELECT(TABLE:'countries', WHERE:(\"LASTCENSUS\" > 0))", code.toString());
131
        assertEquals("SELECT(NULL, \"countries\", (\"LASTCENSUS\" > 0), TUPLE(), TUPLE(), NULL)", code.toString());
102 132
    }
103 133

  
104 134
    public void testSelectCountWhere() {
......
110 140

  
111 141
        Code code = compiler.compileExpression(source.toString());
112 142
        link(code);
113
        assertEquals("SELECT_COUNT(TABLE:'countries', WHERE:(\"LASTCENSUS\" > 0))", code.toString());
143
        assertEquals("SELECT_COUNT(\"countries\", (\"LASTCENSUS\" > 0))", code.toString());
114 144
    }
115 145

  
116 146
    public void testSelectWhere2() {
......
122 152

  
123 153
        Code code = compiler.compileExpression(source.toString());
124 154
        link(code);
125
        assertEquals("SELECT(TABLE:'countries', WHERE:(\"countries\".\"LASTCENSUS\" > 0))", code.toString());
155
        assertEquals("SELECT(NULL, \"countries\", (\"countries\".\"LASTCENSUS\" > 0), TUPLE(), TUPLE(), NULL)", code.toString());
126 156
    }
127 157

  
128 158
    public void testSelectOrder() {
......
134 164

  
135 165
        Code code = compiler.compileExpression(source.toString());
136 166
        link(code);
137
        assertEquals("SELECT(TABLE:'countries', ORDER1:\"CONTINENT\", ORDER2:\"LASTCENSUS\", ORDER_MODE1:TRUE, ORDER_MODE2:FALSE)", code.toString());
167
        assertEquals("SELECT(NULL, \"countries\", NULL, TUPLE(\"CONTINENT\", \"LASTCENSUS\"), TUPLE(TRUE, FALSE), NULL)", code.toString());
138 168
    }
139 169

  
140 170
    public void testSelectWhereOrder() {
......
147 177

  
148 178
        Code code = compiler.compileExpression(source.toString());
149 179
        link(code);
150
        assertEquals("SELECT(TABLE:'countries', WHERE:(\"LASTCENSUS\" > 0), ORDER1:\"ID\", ORDER_MODE1:TRUE)", code.toString());
180
        assertEquals("SELECT(NULL, \"countries\", (\"LASTCENSUS\" > 0), TUPLE(\"ID\"), TUPLE(TRUE), NULL)", code.toString());
151 181
    }
152 182

  
153 183
    public void testSelectWhereOrderLimit() {
......
161 191

  
162 192
        Code code = compiler.compileExpression(source.toString());
163 193
        link(code);
164
        assertEquals("SELECT(TABLE:'countries', WHERE:(\"LASTCENSUS\" > 0), ORDER1:\"LASTCENSUS\", ORDER_MODE1:FALSE, LIMIT:3)", code.toString());
194
        assertEquals("SELECT(NULL, \"countries\", (\"LASTCENSUS\" > 0), TUPLE(\"LASTCENSUS\"), TUPLE(FALSE), 3)", code.toString());
165 195
    }
166 196

  
167 197
    public void testSelectLimit() {
......
173 203

  
174 204
        Code code = compiler.compileExpression(source.toString());
175 205
        link(code);
176
        assertEquals("SELECT(TABLE:'countries', LIMIT:3)", code.toString());
206
        assertEquals("SELECT(NULL, \"countries\", NULL, TUPLE(), TUPLE(), 3)", code.toString());
177 207
    }
178 208

  
179 209
    public void testExists() {
......
204 234
        String id = "????????????????????????????????";
205 235
        String s = code.toString();
206 236
        s = s.substring(0, s.length()-id.length()-2)+id+s.substring(s.length()-2);
207
        assertEquals("EXISTS(SELECT(TABLE:'countries', WHERE:(\"countries\".\"LASTCENSUS\" > 0)), 'EXISTS????????????????????????????????')", s);
237
        assertEquals("EXISTS(SELECT(TUPLE(1), \"countries\", (\"countries\".\"LASTCENSUS\" > 0), TUPLE(), TUPLE(), NULL), 'EXISTS????????????????????????????????')", s);
208 238
    }
209 239

  
240
    public void testExistsSelect2() {
241
        StringBuilder source = new StringBuilder();
242
        source.append("EXISTS(");
243
        source.append(" SELECT 1 FROM countries");
244
        source.append("   WHERE countries.LASTCENSUS > 0 ");
245
        source.append(")");
246

  
247
        Compiler compiler = createCompiler();
248

  
249
        Code code = compiler.compileExpression(source.toString());
250
        link(code);
251
        String id = "????????????????????????????????";
252
        String s = code.toString();
253
        s = s.substring(0, s.length()-id.length()-2)+id+s.substring(s.length()-2);
254
        assertEquals("EXISTS(SELECT(TUPLE(1), \"countries\", (\"countries\".\"LASTCENSUS\" > 0), TUPLE(), TUPLE(), NULL), 'EXISTS????????????????????????????????')", s);
255
    }
256

  
210 257
    public void testExistsSelectLimit1() {
211 258
        StringBuilder source = new StringBuilder();
212 259
        source.append("EXISTS(");
......
222 269
        String id = "????????????????????????????????";
223 270
        String s = code.toString();
224 271
        s = s.substring(0, s.length()-id.length()-2)+id+s.substring(s.length()-2);
225
        assertEquals("EXISTS(SELECT(TABLE:'countries', WHERE:(\"countries\".\"LASTCENSUS\" > 0), LIMIT:1), 'EXISTS????????????????????????????????')", s);
272
        assertEquals("EXISTS(SELECT(TUPLE(1), \"countries\", (\"countries\".\"LASTCENSUS\" > 0), TUPLE(), TUPLE(), 1), 'EXISTS????????????????????????????????')", s);
226 273
    }
227 274

  
228 275
    public void testExistsSelectLimit2() {
......
245 292
        String id = "????????????????????????????????";
246 293
        String s = code.toString();
247 294
        s = s.substring(0, s.length()-id.length()-2)+id+s.substring(s.length()-2);
248
        assertEquals("EXISTS(SELECT(TABLE:'countries', WHERE:((\"continents\".\"NAME\" = \"countries\".\"CONTINENT\") AND (\"countries\".\"LASTCENSUS\" < 0)), LIMIT:1), 'EXISTS????????????????????????????????')", s);
295
        assertEquals("EXISTS(SELECT(TUPLE(1), \"countries\", ((\"continents\".\"NAME\" = \"countries\".\"CONTINENT\") AND (\"countries\".\"LASTCENSUS\" < 0)), TUPLE(), TUPLE(), 1), 'EXISTS????????????????????????????????')", s);
249 296
    }
250 297

  
251 298
    public void testExistsSelectLimit3() {
......
258 305
        source.append("   WHERE ");
259 306
        source.append("     continents.NAME = countries.CONTINENT AND ");
260 307
        source.append("     countries.LASTCENSUS < 0 ");
261
        source.append("   LIMIT 1; ");
308
        source.append("   LIMIT 1 ");
262 309
        source.append(" ,");
263 310
        source.append(" 'patata'");
264 311
        source.append(")");
......
267 314

  
268 315
        Code code = compiler.compileExpression(source.toString());
269 316
        link(code);
270
        assertEquals("EXISTS(SELECT(TABLE:'countries', WHERE:((\"continents\".\"NAME\" = \"countries\".\"CONTINENT\") AND (\"countries\".\"LASTCENSUS\" < 0)), LIMIT:1), 'patata')", code.toString());
317
        assertEquals("EXISTS(SELECT(TUPLE(1), \"countries\", ((\"continents\".\"NAME\" = \"countries\".\"CONTINENT\") AND (\"countries\".\"LASTCENSUS\" < 0)), TUPLE(), TUPLE(), 1), 'patata')", code.toString());
271 318
    }
272 319

  
273 320
    public void testExistsSelectLimit4() {
274 321
        StringBuilder source = new StringBuilder();
275 322
        source.append("EXISTS(");
276 323
        source.append(" SELECT(");
277
        source.append("   TABLE:'countries', ");
278
        source.append("   WHERE:(countries.LASTCENSUS > 0), ");
279
        source.append("   LIMIT:1 ");
324
        source.append("   TUPLE(1), ");
325
        source.append("   countries, ");
326
        source.append("   (countries.LASTCENSUS > 0), ");
327
        source.append("   TUPLE(), ");
328
        source.append("   TUPLE(), ");
329
        source.append("   1 ");
280 330
        source.append("  ) ");
281 331
        source.append(" , ");
282 332
        source.append(" 'EXISTS1234567890ABCDEFGHHIJKLMNOPQRSTU' ");
......
289 339
        String id = "????????????????????????????????";
290 340
        String s = code.toString();
291 341
        s = s.substring(0, s.length()-id.length()-2)+id+s.substring(s.length()-2);
292
        assertEquals("EXISTS(SELECT(TABLE:'countries', WHERE:(\"countries\".\"LASTCENSUS\" > 0), LIMIT:1), 'EXISTS????????????????????????????????')", s);
342
        assertEquals("EXISTS(SELECT(TUPLE(1), \"countries\", (\"countries\".\"LASTCENSUS\" > 0), TUPLE(), TUPLE(), 1), 'EXISTS????????????????????????????????')", s);
293 343
    }
294 344

  
295 345
}

Also available in: Unified diff