Revision 44198 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/TestOptimizer.java

View differences:

TestOptimizer.java
223 223

  
224 224
        Compiler compiler = createCompiler();
225 225
        Code code = compiler.compileExpression(source);
226
        assertEquals(operatorName + "(\"precio\", 23)", code.toString());
226
        assertEquals( "(\"precio\" "+operatorName+" 23)", code.toString());
227 227

  
228 228
        SymbolTable symbolTable = createSymbolTable();
229 229
        Optimizer optimizer = createOptimizer(symbolTable);
230 230
        Code code2 = optimizer.optimize(code);
231
        assertEquals(operatorName + "(\"precio\", 23)", code2.toString());
231
        assertEquals( "(\"precio\" "+operatorName+" 23)", code2.toString());
232 232
    }
233 233

  
234 234
    public void testOperators() {
......
259 259
        Compiler compiler = createCompiler();
260 260

  
261 261
        Code code = compiler.compileExpression(source);
262
        assertEquals("+(+(+(\"precio\", *(10, 2)), 20), 30)", code.toString());
262
        assertEquals("(((\"precio\" + (10 * 2)) + 20) + 30)", code.toString());
263 263

  
264 264
        SymbolTable symbolTable = createSymbolTable();
265 265
        Optimizer optimizer = createOptimizer(symbolTable);
266 266
        Code code2 = optimizer.optimize(code);
267
        assertEquals("+(+(+(\"precio\", 20), 20), 30)", code2.toString());
267
        assertEquals("(((\"precio\" + 20) + 20) + 30)", code2.toString());
268 268
    }
269 269
    
270 270
    public void testMul0() {
......
273 273
        Compiler compiler = createCompiler();
274 274

  
275 275
        Code code = compiler.compileExpression(source);
276
        assertEquals("+(+(+(\"precio\", *(10, 0)), 20), 30)", code.toString());
276
        assertEquals("(((\"precio\" + (10 * 0)) + 20) + 30)", code.toString());
277 277

  
278 278
        SymbolTable symbolTable = createSymbolTable();
279 279
        Optimizer optimizer = createOptimizer(symbolTable);
280 280
        Code code2 = optimizer.optimize(code);
281
        assertEquals("+(+(\"precio\", 20), 30)", code2.toString());
281
        assertEquals("((\"precio\" + 20) + 30)", code2.toString());
282 282
    }
283 283

  
284 284
    public void testMul1() {
......
287 287
        Compiler compiler = createCompiler();
288 288

  
289 289
        Code code = compiler.compileExpression(source);
290
        assertEquals("+(+(+(\"precio\", *(10, 1)), 20), 30)", code.toString());
290
        assertEquals("(((\"precio\" + (10 * 1)) + 20) + 30)", code.toString());
291 291

  
292 292
        SymbolTable symbolTable = createSymbolTable();
293 293
        Optimizer optimizer = createOptimizer(symbolTable);
294 294
        Code code2 = optimizer.optimize(code);
295
        assertEquals("+(+(+(\"precio\", 10), 20), 30)", code2.toString());
295
        assertEquals("(((\"precio\" + 10) + 20) + 30)", code2.toString());
296 296
    }
297 297

  
298 298
    public void testDiv1() {
......
301 301
        Compiler compiler = createCompiler();
302 302

  
303 303
        Code code = compiler.compileExpression(source);
304
        assertEquals("+(+(+(\"precio\", /(10, 1)), 20), 30)", code.toString());
304
        assertEquals("(((\"precio\" + (10 / 1)) + 20) + 30)", code.toString());
305 305

  
306 306
        SymbolTable symbolTable = createSymbolTable();
307 307
        Optimizer optimizer = createOptimizer(symbolTable);
308 308
        Code code2 = optimizer.optimize(code);
309
        assertEquals("+(+(+(\"precio\", 10), 20), 30)", code2.toString());
309
        assertEquals("(((\"precio\" + 10) + 20) + 30)", code2.toString());
310 310
    }
311 311

  
312 312
    public void testDiv0() {
......
315 315
        Compiler compiler = createCompiler();
316 316

  
317 317
        Code code = compiler.compileExpression(source);
318
        assertEquals("+(+(+(\"precio\", /(0, 10)), 20), 30)", code.toString());
318
        assertEquals("(((\"precio\" + (0 / 10)) + 20) + 30)", code.toString());
319 319

  
320 320
        SymbolTable symbolTable = createSymbolTable();
321 321
        Optimizer optimizer = createOptimizer(symbolTable);
322 322
        Code code2 = optimizer.optimize(code);
323
        assertEquals("+(+(\"precio\", 20), 30)", code2.toString());
323
        assertEquals("((\"precio\" + 20) + 30)", code2.toString());
324 324
    }
325 325

  
326 326
    public void testAddMulPar() {
......
329 329
        Compiler compiler = createCompiler();
330 330

  
331 331
        Code code = compiler.compileExpression(source);
332
        assertEquals("+(+(*(+(\"precio\", 10), 2), 20), 30)", code.toString());
332
        assertEquals("((((\"precio\" + 10) * 2) + 20) + 30)", code.toString());
333 333

  
334 334
        SymbolTable symbolTable = createSymbolTable();
335 335
        Optimizer optimizer = createOptimizer(symbolTable);
336 336
        Code code2 = optimizer.optimize(code);
337
        assertEquals("+(+(*(+(\"precio\", 10), 2), 20), 30)", code2.toString());
337
        assertEquals("((((\"precio\" + 10) * 2) + 20) + 30)", code2.toString());
338 338
    }
339 339

  
340 340
    public void testAbs() {
......
343 343
        Compiler compiler = createCompiler();
344 344

  
345 345
        Code code = compiler.compileExpression(source);
346
        assertEquals("+(\"precio\", abs(10))", code.toString());
346
        assertEquals("(\"precio\" + abs(10))", code.toString());
347 347

  
348 348
        SymbolTable symbolTable = createSymbolTable();
349 349
        Optimizer optimizer = createOptimizer(symbolTable);
350 350
        Code code2 = optimizer.optimize(code);
351
        assertEquals("+(\"precio\", 10)", code2.toString());
351
        assertEquals("(\"precio\" + 10)", code2.toString());
352 352
    }
353 353

  
354 354
    public void testAbs2() {
......
357 357
        Compiler compiler = createCompiler();
358 358

  
359 359
        Code code = compiler.compileExpression(source);
360
        assertEquals("+(\"precio\", abs(NEGATE(10)))", code.toString());
360
        assertEquals("(\"precio\" + abs(-(10)))", code.toString());
361 361

  
362 362
        SymbolTable symbolTable = createSymbolTable();
363 363
        Optimizer optimizer = createOptimizer(symbolTable);
364 364
        Code code2 = optimizer.optimize(code);
365
        assertEquals("+(\"precio\", 10)", code2.toString());
365
        assertEquals("(\"precio\" + 10)", code2.toString());
366 366
    }
367 367

  
368 368
    public void testPI() {
......
371 371
        Compiler compiler = createCompiler();
372 372

  
373 373
        Code code = compiler.compileExpression(source);
374
        assertEquals("+(\"precio\", PI())", code.toString());
374
        assertEquals("(\"precio\" + PI())", code.toString());
375 375

  
376 376
        SymbolTable symbolTable = createSymbolTable();
377 377
        Optimizer optimizer = createOptimizer(symbolTable);
378 378
        Code code2 = optimizer.optimize(code);
379
        assertEquals("+(\"precio\", 3.141592653589793)", code2.toString());
379
        assertEquals("(\"precio\" + 3.141592653589793)", code2.toString());
380 380
    }
381 381

  
382 382
    public void testCeil() {
......
385 385
        Compiler compiler = createCompiler();
386 386

  
387 387
        Code code = compiler.compileExpression(source);
388
        assertEquals("+(\"precio\", CEIL(PI()))", code.toString());
388
        assertEquals("(\"precio\" + CEIL(PI()))", code.toString());
389 389

  
390 390
        SymbolTable symbolTable = createSymbolTable();
391 391
        Optimizer optimizer = createOptimizer(symbolTable);
392 392
        Code code2 = optimizer.optimize(code);
393
        assertEquals("+(\"precio\", 4.0)", code2.toString());
393
        assertEquals("(\"precio\" + 4.0)", code2.toString());
394 394
    }
395 395

  
396 396
    public void testConcat() {
......
452 452
    public void testSpatialExpression1() throws Exception {
453 453
        IProjection proj = CRSFactory.getCRS("EPSG:4326");
454 454
        ExpressionBuilder builder = new DefaultExpressionBuilder();
455
        builder.getConfig().set(ExpressionBuilder.Config.geometry_type_support, ExpressionBuilder.GeometrySupportType.WKB);
455
        builder.geometry_support_type(ExpressionBuilder.GeometrySupportType.WKB);
456 456

  
457 457
        String source = builder.and(
458 458
                builder.custom(this.createExpr1()),
......
471 471
        Code code = compiler.compileExpression(source);
472 472
        System.out.println(code.toString());
473 473
        assertEquals(
474
                "AND(>(\"campo1\", 10), ST_Intersects(ST_GeomFromWKB(DECODE('000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000', 'hex'), 4326), \"GEOMETRY\"))",
474
                "((\"campo1\" > 10) AND ST_Intersects(ST_GeomFromWKB(DECODE('000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000', 'hex'), 4326), \"GEOMETRY\"))",
475 475
                code.toString()
476 476
        );
477 477

  
......
487 487
//        System.out.println("Tiempo de optimizacion: " + (System.currentTimeMillis() - t1));
488 488
        System.out.println(code2.toString());
489 489
        assertEquals(
490
                "AND(>(\"campo1\", 10), ST_Intersects('POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))'::geometry, \"GEOMETRY\"))",
490
                "((\"campo1\" > 10) AND ST_Intersects('POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))'::geometry, \"GEOMETRY\"))",
491 491
                code2.toString()
492 492
        );
493 493

  

Also available in: Unified diff