Statistics
| Revision:

svn-gvsig-desktop / 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 @ 44762

History | View | Annotate | Download (5.34 KB)

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
}