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 / TestDateInterpreter.java @ 45025

History | View | Annotate | Download (7.92 KB)

1 44139 jjdelcerro
package org.gvsig.expresionevaluator.impl;
2
3 44761 jjdelcerro
import java.text.ParseException;
4
import java.text.SimpleDateFormat;
5
import java.util.Date;
6 44139 jjdelcerro
import junit.framework.TestCase;
7
import org.gvsig.expressionevaluator.Code;
8
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
9
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
10
import org.gvsig.expressionevaluator.Interpreter;
11
import org.gvsig.expressionevaluator.LexicalAnalyzer;
12
import org.gvsig.expressionevaluator.SymbolTable;
13
import org.gvsig.expressionevaluator.Compiler;
14
import org.gvsig.expressionevaluator.MutableSymbolTable;
15
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
16
17
/**
18
 *
19
 * @author jjdelcerro
20
 */
21 44761 jjdelcerro
public class TestDateInterpreter extends TestCase {
22 44139 jjdelcerro
23 44761 jjdelcerro
    public TestDateInterpreter(String testName) {
24 44139 jjdelcerro
        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 LexicalAnalyzer createLexicalAnalyzer() {
42
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
43
        LexicalAnalyzer lexer = manager.createLexicalAnalyzer();
44
        return lexer;
45
    }
46
47
    protected org.gvsig.expressionevaluator.Compiler createCompiler() {
48
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
49
        Compiler compiler = manager.createCompiler();
50
        compiler.setLexicalAnalyzer(createLexicalAnalyzer());
51
        return compiler;
52
    }
53
54
    protected MutableSymbolTable createSymbolTable() {
55
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
56
        MutableSymbolTable symbolTable = manager.createSymbolTable();
57
        symbolTable.setVar("precio", 200);
58
        symbolTable.setVar("1990", 0.168873933773767);
59
        return symbolTable;
60
    }
61
62
    protected Interpreter createInterpreter(SymbolTable symbolTable) {
63
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
64
        Interpreter interpreter = manager.createInterpreter();
65
        interpreter.setSymbolTable(symbolTable);
66
        return interpreter;
67
    }
68 44761 jjdelcerro
69
    private java.sql.Date date(String x) throws ParseException {
70
        Date d;
71
        if( x == null ) {
72
          d = new Date();
73
        } else {
74
          d = new SimpleDateFormat("yyyy-M-d").parse(x);
75
        }
76 45025 jjdelcerro
        return new java.sql.Date(d.getYear(), d.getMonth(), d.getDate());
77 44761 jjdelcerro
    }
78 44139 jjdelcerro
79 44761 jjdelcerro
    private java.sql.Time time(String x) throws ParseException {
80 45025 jjdelcerro
        Date d;
81
        if( x == null ) {
82
          d = new Date();
83
        } else {
84
          d = new SimpleDateFormat("H:mm:ss").parse(x);
85
        }
86
        return new java.sql.Time(d.getHours(), d.getMinutes(), d.getSeconds());
87 44761 jjdelcerro
    }
88 44139 jjdelcerro
89 44761 jjdelcerro
    private java.sql.Timestamp timestamp(String x) throws ParseException {
90
        Date d = new SimpleDateFormat("yyyy-M-d H:mm:ss").parse(x);
91
        return new java.sql.Timestamp(d.getTime());
92 44139 jjdelcerro
    }
93
94 44761 jjdelcerro
    public void testDate() throws ParseException {
95 44139 jjdelcerro
        SymbolTable symbolTable = createSymbolTable();
96
        Compiler compiler = createCompiler();
97
        Interpreter interpreter = createInterpreter(symbolTable);
98
99 44761 jjdelcerro
        String source = "DATE '2020-02-18'";
100
101 44139 jjdelcerro
        Code code = compiler.compileExpression(source);
102
        Object v = interpreter.run(code);
103 44761 jjdelcerro
        assertEquals(date("2020-02-18"), ((java.sql.Date)v));
104 44139 jjdelcerro
    }
105
106 44761 jjdelcerro
    public void testTime() throws ParseException {
107 44139 jjdelcerro
        SymbolTable symbolTable = createSymbolTable();
108
        Compiler compiler = createCompiler();
109
        Interpreter interpreter = createInterpreter(symbolTable);
110
111 44761 jjdelcerro
        String source = "TIME '19:01:00'";
112 44139 jjdelcerro
113
        Code code = compiler.compileExpression(source);
114
        Object v = interpreter.run(code);
115 44761 jjdelcerro
        assertEquals(time("19:01:00"), ((java.sql.Time)v));
116 44139 jjdelcerro
    }
117
118 44761 jjdelcerro
    public void testTimestamp() throws ParseException {
119
        SymbolTable symbolTable = createSymbolTable();
120 44139 jjdelcerro
        Compiler compiler = createCompiler();
121
        Interpreter interpreter = createInterpreter(symbolTable);
122
123 44761 jjdelcerro
        String source = "TIMESTAMP '2020-02-18 19:01:00'";
124 44139 jjdelcerro
125
        Code code = compiler.compileExpression(source);
126
        Object v = interpreter.run(code);
127 44761 jjdelcerro
        assertEquals(timestamp("2020-02-18 19:01:00"), ((java.sql.Timestamp)v));
128 44139 jjdelcerro
    }
129
130 44761 jjdelcerro
    public void testCurrentDate() throws ParseException {
131
        SymbolTable symbolTable = createSymbolTable();
132 44139 jjdelcerro
        Compiler compiler = createCompiler();
133
        Interpreter interpreter = createInterpreter(symbolTable);
134
135 44761 jjdelcerro
        String source = "CURRENT_DATE()";
136 44139 jjdelcerro
137
        Code code = compiler.compileExpression(source);
138
        Object v = interpreter.run(code);
139 44761 jjdelcerro
        assertEquals(date(null), ((java.sql.Date)v));
140 44139 jjdelcerro
    }
141
142 44761 jjdelcerro
    public void testCurrentTime() throws ParseException {
143
        SymbolTable symbolTable = createSymbolTable();
144 44139 jjdelcerro
        Compiler compiler = createCompiler();
145
        Interpreter interpreter = createInterpreter(symbolTable);
146
147 44761 jjdelcerro
        String source = "CURRENT_TIME()";
148 44139 jjdelcerro
149
        Code code = compiler.compileExpression(source);
150
        Object v = interpreter.run(code);
151 44761 jjdelcerro
        assertTrue( v instanceof java.sql.Time);
152 44139 jjdelcerro
    }
153
154 44761 jjdelcerro
    public void testCurrentTimestamp() throws ParseException {
155
        SymbolTable symbolTable = createSymbolTable();
156 44139 jjdelcerro
        Compiler compiler = createCompiler();
157
        Interpreter interpreter = createInterpreter(symbolTable);
158
159 44761 jjdelcerro
        String source = "CURRENT_TIMESTAMP()";
160 44139 jjdelcerro
161 44384 jjdelcerro
        Code code = compiler.compileExpression(source);
162
        Object v = interpreter.run(code);
163 44761 jjdelcerro
        assertTrue( v instanceof java.sql.Timestamp);
164 44384 jjdelcerro
    }
165
166 44761 jjdelcerro
    public void testExtractDayFromDate() {
167
        SymbolTable symbolTable = createSymbolTable();
168 44139 jjdelcerro
        Compiler compiler = createCompiler();
169
        Interpreter interpreter = createInterpreter(symbolTable);
170
171 44761 jjdelcerro
        String source = "EXTRACT(DAY FROM DATE '2020-02-18')";
172 44139 jjdelcerro
173
        Code code = compiler.compileExpression(source);
174
        Object v = interpreter.run(code);
175 44761 jjdelcerro
        assertEquals(18, ((Integer)v).intValue());
176 44139 jjdelcerro
    }
177
178 44761 jjdelcerro
    public void testExtractDayFromTimestamp() {
179
        SymbolTable symbolTable = createSymbolTable();
180 44139 jjdelcerro
        Compiler compiler = createCompiler();
181
        Interpreter interpreter = createInterpreter(symbolTable);
182
183 44761 jjdelcerro
        String source = "EXTRACT(DAY FROM TIMESTAMP '2020-02-18')";
184 44139 jjdelcerro
185
        Code code = compiler.compileExpression(source);
186
        Object v = interpreter.run(code);
187 44761 jjdelcerro
        assertEquals(18, ((Integer)v).intValue());
188 44139 jjdelcerro
    }
189
190 44761 jjdelcerro
    public void testExtractHourFromTime() {
191
        SymbolTable symbolTable = createSymbolTable();
192 44139 jjdelcerro
        Compiler compiler = createCompiler();
193
        Interpreter interpreter = createInterpreter(symbolTable);
194
195 44761 jjdelcerro
        String source = "EXTRACT(HOUR FROM TIME '20:24:00')";
196 44139 jjdelcerro
197
        Code code = compiler.compileExpression(source);
198
        Object v = interpreter.run(code);
199 44761 jjdelcerro
        assertEquals(20, ((Integer)v).intValue());
200 44139 jjdelcerro
    }
201
202 44761 jjdelcerro
//    public void testToDate() throws ParseException {
203
//        SymbolTable symbolTable = createSymbolTable();
204
//        Compiler compiler = createCompiler();
205
//        Interpreter interpreter = createInterpreter(symbolTable);
206
//
207
//        String source = "to_date('05 Dec 2000', 'DD MMM YYYY', 'en')";
208
//
209
//        Code code = compiler.compileExpression(source);
210
//        Object v = interpreter.run(code);
211
//        assertEquals(date("2000-12-05"), ((java.sql.Date)v));
212
//    }
213
//
214
//    public void testToTimestamp() throws ParseException {
215
//        SymbolTable symbolTable = createSymbolTable();
216
//        Compiler compiler = createCompiler();
217
//        Interpreter interpreter = createInterpreter(symbolTable);
218
//
219
//        String source = "to_timestamp('05 Dec 2000', 'DD MMM YYYY')";
220
//
221
//        Code code = compiler.compileExpression(source);
222
//        Object v = interpreter.run(code);
223
//        assertEquals(timestamp("2000-12-05 0:00:00"), ((java.sql.Timestamp)v));
224
//    }
225 44139 jjdelcerro
226
227
}