Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.impl / src / test / java / org / gvsig / expressionevaluator / TestExpressionBuilder.java @ 45213

History | View | Annotate | Download (4.36 KB)

1 44738 jjdelcerro
package org.gvsig.expressionevaluator;
2 44139 jjdelcerro
3
import junit.framework.TestCase;
4 44769 jjdelcerro
import org.gvsig.expressionevaluator.impl.expressionbuilder.formatters.DALFormatter;
5
import org.gvsig.fmap.dal.DALLocator;
6
import org.gvsig.fmap.dal.DataManager;
7
import org.gvsig.fmap.dal.expressionevaluator.DALExpressionBuilder;
8
import org.gvsig.fmap.dal.expressionevaluator.DALExpressionBuilder.SelectBuilder;
9 44139 jjdelcerro
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
10
11
/**
12
 *
13
 * @author jjdelcerro
14
 */
15 44769 jjdelcerro
public class TestExpressionBuilder extends TestCase {
16 44139 jjdelcerro
17 44769 jjdelcerro
    public TestExpressionBuilder(String testName) {
18 44139 jjdelcerro
        super(testName);
19
    }
20
21
    @Override
22
    protected void setUp() throws Exception {
23
        super.setUp();
24
        new DefaultLibrariesInitializer().fullInitialize();
25
    }
26
27
    @Override
28
    protected void tearDown() throws Exception {
29
        super.tearDown();
30
    }
31
32
    // TODO add test methods here. The name must begin with 'test'. For example:
33
    // public void testHello() {}
34
35
    protected LexicalAnalyzer createLexicalAnalyzer() {
36
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
37
        LexicalAnalyzer lexer = manager.createLexicalAnalyzer();
38
        return lexer;
39
    }
40
41
    protected org.gvsig.expressionevaluator.Compiler createCompiler() {
42
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
43
        Compiler compiler = manager.createCompiler();
44
        compiler.setLexicalAnalyzer(createLexicalAnalyzer());
45
        return compiler;
46
    }
47
48
    protected SymbolTable createSymbolTable() {
49
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
50
        MutableSymbolTable symbolTable = manager.createSymbolTable();
51
        return symbolTable;
52
    }
53
54
    protected Interpreter createInterpreter(SymbolTable symbolTable) {
55
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
56
        Interpreter interpreter = manager.createInterpreter();
57
        interpreter.setSymbolTable(symbolTable);
58
        return interpreter;
59
    }
60 44738 jjdelcerro
61
    private void link(Code code) {
62
      code.link(createSymbolTable());
63 44139 jjdelcerro
    }
64
65 44769 jjdelcerro
    public void testUseCase1() {
66
      DataManager dataManager = DALLocator.getDataManager();
67
      DALExpressionBuilder builder = dataManager.createDALExpressionBuilder();
68 44139 jjdelcerro
69 44769 jjdelcerro
      SelectBuilder select = builder.select()
70
              .column("LID_ACCIDENTE")
71
              .from("ARENA2_VEHICULOS")
72
              .where(
73
                      builder.expression().and(
74
                              builder.expression().eq(
75
                                      builder.expression().getattr("ARENA2_VEHICULOS","ID_ACCIDENTE"),
76
                                      builder.expression().getattr("ARENA2_ACCIDENTES","LID_ACCIDENTE")
77
                              ),
78
                              builder.expression().eq(
79
                                      builder.expression().column("MODELO"),
80
                                      builder.expression().constant("307")
81
                              )
82
                      )
83
              )
84
              .limit(1);
85
        ExpressionBuilder.Value exists = builder.exists(select.toValue(), "EXISTS123");
86 44139 jjdelcerro
87 44769 jjdelcerro
        String filter = exists.toString(new DALFormatter());
88
89
        assertEquals("EXISTS((SELECT \"LID_ACCIDENTE\" FROM \"ARENA2_VEHICULOS\" WHERE (( (\"ARENA2_VEHICULOS\".\"ID_ACCIDENTE\") = (\"ARENA2_ACCIDENTES\".\"LID_ACCIDENTE\") ) AND ( (\"MODELO\") = ('307') )) LIMIT 1), 'EXISTS123')", filter);
90
91
        // Comprobamos que con el formatter por defecto obtenemos lo mismo.
92
        assertEquals(filter, exists.toString());
93 44139 jjdelcerro
94 44750 jjdelcerro
        Compiler compiler = createCompiler();
95
96 44769 jjdelcerro
        Code code = compiler.compileExpression(filter);
97 44750 jjdelcerro
        link(code);
98 45080 jjdelcerro
        assertEquals("EXISTS(SELECT(TUPLE(\"LID_ACCIDENTE\"), \"ARENA2_VEHICULOS\", ((GETATTR(\"ARENA2_VEHICULOS\", 'ID_ACCIDENTE') = GETATTR(\"ARENA2_ACCIDENTES\", 'LID_ACCIDENTE')) AND (\"MODELO\" = '307')), TUPLE(), TUPLE(), 1), 'EXISTS123')", code.toString());
99 44750 jjdelcerro
    }
100
101 44836 jjdelcerro
    public void testForeintValue1() {
102
      DataManager dataManager = DALLocator.getDataManager();
103
      DALExpressionBuilder builder = dataManager.createDALExpressionBuilder();
104
105
      ExpressionBuilder.Function value = builder.foreing_value("SENTIDO", "DESCRIPCION");
106
      String s = value.toString(new DALFormatter());
107 45080 jjdelcerro
      assertEquals("FOREING_VALUE('SENTIDO.DESCRIPCION')", s);
108 44836 jjdelcerro
109
    }
110 44139 jjdelcerro
}