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

    
3
import java.text.ParseException;
4
import java.text.SimpleDateFormat;
5
import java.util.Date;
6
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
public class TestDateInterpreter extends TestCase {
22

    
23
    public TestDateInterpreter(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 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
    
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
        return new java.sql.Date(d.getYear(), d.getMonth(), d.getDate());
77
    }
78

    
79
    private java.sql.Time time(String x) throws ParseException {
80
        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
    }
88

    
89
    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
    }
93

    
94
    public void testDate() throws ParseException {
95
        SymbolTable symbolTable = createSymbolTable();
96
        Compiler compiler = createCompiler();
97
        Interpreter interpreter = createInterpreter(symbolTable);
98

    
99
        String source = "DATE '2020-02-18'";
100

    
101
        Code code = compiler.compileExpression(source);
102
        Object v = interpreter.run(code);
103
        assertEquals(date("2020-02-18"), ((java.sql.Date)v));
104
    }
105

    
106
    public void testTime() throws ParseException {
107
        SymbolTable symbolTable = createSymbolTable();
108
        Compiler compiler = createCompiler();
109
        Interpreter interpreter = createInterpreter(symbolTable);
110

    
111
        String source = "TIME '19:01:00'";
112

    
113
        Code code = compiler.compileExpression(source);
114
        Object v = interpreter.run(code);
115
        assertEquals(time("19:01:00"), ((java.sql.Time)v));
116
    }
117

    
118
    public void testTimestamp() throws ParseException {
119
        SymbolTable symbolTable = createSymbolTable();
120
        Compiler compiler = createCompiler();
121
        Interpreter interpreter = createInterpreter(symbolTable);
122

    
123
        String source = "TIMESTAMP '2020-02-18 19:01:00'";
124

    
125
        Code code = compiler.compileExpression(source);
126
        Object v = interpreter.run(code);
127
        assertEquals(timestamp("2020-02-18 19:01:00"), ((java.sql.Timestamp)v));
128
    }
129

    
130
    public void testCurrentDate() throws ParseException {
131
        SymbolTable symbolTable = createSymbolTable();
132
        Compiler compiler = createCompiler();
133
        Interpreter interpreter = createInterpreter(symbolTable);
134

    
135
        String source = "CURRENT_DATE()";
136

    
137
        Code code = compiler.compileExpression(source);
138
        Object v = interpreter.run(code);
139
        assertEquals(date(null), ((java.sql.Date)v));
140
    }
141

    
142
    public void testCurrentTime() throws ParseException {
143
        SymbolTable symbolTable = createSymbolTable();
144
        Compiler compiler = createCompiler();
145
        Interpreter interpreter = createInterpreter(symbolTable);
146

    
147
        String source = "CURRENT_TIME()";
148

    
149
        Code code = compiler.compileExpression(source);
150
        Object v = interpreter.run(code);
151
        assertTrue( v instanceof java.sql.Time);
152
    }
153

    
154
    public void testCurrentTimestamp() throws ParseException {
155
        SymbolTable symbolTable = createSymbolTable();
156
        Compiler compiler = createCompiler();
157
        Interpreter interpreter = createInterpreter(symbolTable);
158

    
159
        String source = "CURRENT_TIMESTAMP()";
160

    
161
        Code code = compiler.compileExpression(source);
162
        Object v = interpreter.run(code);
163
        assertTrue( v instanceof java.sql.Timestamp);
164
    }
165

    
166
    public void testExtractDayFromDate() {
167
        SymbolTable symbolTable = createSymbolTable();
168
        Compiler compiler = createCompiler();
169
        Interpreter interpreter = createInterpreter(symbolTable);
170

    
171
        String source = "EXTRACT(DAY FROM DATE '2020-02-18')";
172

    
173
        Code code = compiler.compileExpression(source);
174
        Object v = interpreter.run(code);
175
        assertEquals(18, ((Integer)v).intValue());
176
    }
177

    
178
    public void testExtractDayFromTimestamp() {
179
        SymbolTable symbolTable = createSymbolTable();
180
        Compiler compiler = createCompiler();
181
        Interpreter interpreter = createInterpreter(symbolTable);
182

    
183
        String source = "EXTRACT(DAY FROM TIMESTAMP '2020-02-18')";
184

    
185
        Code code = compiler.compileExpression(source);
186
        Object v = interpreter.run(code);
187
        assertEquals(18, ((Integer)v).intValue());
188
    }
189

    
190
    public void testExtractHourFromTime() {
191
        SymbolTable symbolTable = createSymbolTable();
192
        Compiler compiler = createCompiler();
193
        Interpreter interpreter = createInterpreter(symbolTable);
194

    
195
        String source = "EXTRACT(HOUR FROM TIME '20:24:00')";
196

    
197
        Code code = compiler.compileExpression(source);
198
        Object v = interpreter.run(code);
199
        assertEquals(20, ((Integer)v).intValue());
200
    }
201

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

    
226

    
227
}