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