Revision 44762

View differences:

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/TestDateExpressionBuilder.java
1
package org.gvsig.expresionevaluator.impl;
2

  
3
import junit.framework.TestCase;
4
import org.gvsig.expressionevaluator.Code;
5
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
6
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
7
import org.gvsig.expressionevaluator.Interpreter;
8
import org.gvsig.expressionevaluator.LexicalAnalyzer;
9
import org.gvsig.expressionevaluator.SymbolTable;
10
import org.gvsig.expressionevaluator.Compiler;
11
import org.gvsig.expressionevaluator.ExpressionBuilder;
12
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
13
import org.gvsig.expressionevaluator.ExpressionUtils;
14
import org.gvsig.expressionevaluator.MutableSymbolTable;
15
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
16

  
17
/**
18
 *
19
 * @author jjdelcerro
20
 */
21
public class TestDateExpressionBuilder extends TestCase {
22

  
23
    public TestDateExpressionBuilder(String testName) {
24
        super(testName);
25
    }
26

  
27
    @Override
28
    protected void setUp() throws Exception {
29
        super.setUp();
30
        new DefaultLibrariesInitializer().fullInitialize();
31
    }
32

  
33
    @Override
34
    protected void tearDown() throws Exception {
35
        super.tearDown();
36
    }
37

  
38
    // TODO add test methods here. The name must begin with 'test'. For example:
39
    // public void testHello() {}
40

  
41
    protected ExpressionBuilder createExpressionBuilder() {
42
        ExpressionBuilder builder = ExpressionUtils.createExpressionBuilder();
43
        return builder;
44
    }
45

  
46
    protected LexicalAnalyzer createLexicalAnalyzer() {
47
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
48
        LexicalAnalyzer lexer = manager.createLexicalAnalyzer();
49
        return lexer;
50
    }
51

  
52
    protected org.gvsig.expressionevaluator.Compiler createCompiler() {
53
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
54
        Compiler compiler = manager.createCompiler();
55
        compiler.setLexicalAnalyzer(createLexicalAnalyzer());
56
        return compiler;
57
    }
58

  
59
    protected SymbolTable createSymbolTable() {
60
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
61
        MutableSymbolTable symbolTable = manager.createSymbolTable();
62
        symbolTable.setVar("precio", 200);
63
        symbolTable.setVar("1990", 0.168873933773767);
64
        return symbolTable;
65
    }
66

  
67
    protected Interpreter createInterpreter(SymbolTable symbolTable) {
68
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
69
        Interpreter interpreter = manager.createInterpreter();
70
        interpreter.setSymbolTable(symbolTable);
71
        return interpreter;
72
    }
73
    
74
    protected Object execute(Value value) {
75
        Compiler compiler = createCompiler();
76
        SymbolTable symbolTable = createSymbolTable();
77
        Interpreter interpreter = createInterpreter(symbolTable);
78
        
79
        String source = value.toString();
80
        Code code = compiler.compileExpression(source);
81
        Object v = interpreter.run(code);      
82
        
83
        return v;
84
    }
85
    
86
    private void link(Code code) {
87
      code.link(createSymbolTable());
88
    }
89

  
90
    public void testDate() {
91
        ExpressionBuilder builder = createExpressionBuilder();
92

  
93
        Value v = builder.date( builder.constant("2020-02-18"));
94

  
95
        assertEquals("DATE('2020-02-18')", v.toString());
96
        
97
    }
98

  
99
    public void testTime() {
100
        ExpressionBuilder builder = createExpressionBuilder();
101

  
102
        Value v = builder.time( builder.constant("19:01:00"));
103

  
104
        assertEquals("TIME('19:01:00')", v.toString());
105
    }
106

  
107
    public void testTimestamp() {
108
        ExpressionBuilder builder = createExpressionBuilder();
109

  
110
        Value v = builder.timestamp(builder.constant("2020-02-18 19:01:00"));
111

  
112
        assertEquals("TIMESTAMP('2020-02-18 19:01:00')", v.toString());
113
    }
114

  
115
    public void testCurrentDate() {
116
        ExpressionBuilder builder = createExpressionBuilder();
117

  
118
        Value v = builder.current_date();
119

  
120
        assertEquals("CURRENT_DATE()", v.toString());
121
    }
122

  
123
    public void testCurrentTime() {
124
        ExpressionBuilder builder = createExpressionBuilder();
125

  
126
        Value v = builder.current_time();
127
        
128
        assertEquals("CURRENT_TIME()", v.toString());
129
    }
130

  
131
    public void testCurrentTimestamp() {
132
        ExpressionBuilder builder = createExpressionBuilder();
133

  
134
        Value v = builder.current_timestamp();
135

  
136
        assertEquals("CURRENT_TIMESTAMP()", v.toString());
137
    }
138

  
139
    public void testExtractDay() {
140
        ExpressionBuilder builder = createExpressionBuilder();
141

  
142
        Value v = builder.extract(
143
                builder.constant("DAY"),
144
                builder.date(builder.constant("2020-02-18"))
145
        );
146

  
147
        assertEquals("EXTRACT('DAY', DATE('2020-02-18'))", v.toString());
148
    }
149

  
150
    public void testToDate() {
151
        ExpressionBuilder builder = createExpressionBuilder();
152

  
153
        Value v = builder.to_date(
154
                builder.constant("05 Dec 2000"),
155
                builder.constant("DD MMM YYYY")
156
        );
157

  
158
        assertEquals("TO_DATE('05 Dec 2000', 'DD MMM YYYY')", v.toString());
159
    }
160

  
161
    public void testToTimestamp() {
162
        ExpressionBuilder builder = createExpressionBuilder();
163

  
164
        Value v = builder.to_timestamp(
165
                builder.constant("05 Dec 2000"),
166
                builder.constant("DD MMM YYYY")
167
        );
168

  
169
        assertEquals("TO_TIMESTAMP('05 Dec 2000', 'DD MMM YYYY')", v.toString());
170
    }
171

  
172

  
173

  
174
}

Also available in: Unified diff