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 @ 44761

History | View | Annotate | Download (7.79 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 java.util.Locale;
7
import junit.framework.TestCase;
8
import org.gvsig.expressionevaluator.Code;
9
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
10
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
11
import org.gvsig.expressionevaluator.Interpreter;
12
import org.gvsig.expressionevaluator.LexicalAnalyzer;
13
import org.gvsig.expressionevaluator.SymbolTable;
14
import org.gvsig.expressionevaluator.Compiler;
15
import org.gvsig.expressionevaluator.MutableSymbolTable;
16
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
17

    
18
/**
19
 *
20
 * @author jjdelcerro
21
 */
22
public class TestDateInterpreter extends TestCase {
23

    
24
    public TestDateInterpreter(String testName) {
25
        super(testName);
26
    }
27

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

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

    
39
    // TODO add test methods here. The name must begin with 'test'. For example:
40
    // public void testHello() {}
41
    
42
    protected LexicalAnalyzer createLexicalAnalyzer() {
43
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
44
        LexicalAnalyzer lexer = manager.createLexicalAnalyzer();
45
        return lexer;
46
    }
47

    
48
    protected org.gvsig.expressionevaluator.Compiler createCompiler() {
49
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
50
        Compiler compiler = manager.createCompiler();
51
        compiler.setLexicalAnalyzer(createLexicalAnalyzer());
52
        return compiler;
53
    }
54

    
55
    protected MutableSymbolTable createSymbolTable() {
56
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
57
        MutableSymbolTable symbolTable = manager.createSymbolTable();
58
        symbolTable.setVar("precio", 200);
59
        symbolTable.setVar("1990", 0.168873933773767);
60
        return symbolTable;
61
    }
62

    
63
    protected Interpreter createInterpreter(SymbolTable symbolTable) {
64
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
65
        Interpreter interpreter = manager.createInterpreter();
66
        interpreter.setSymbolTable(symbolTable);
67
        return interpreter;
68
    }
69
    
70
    private java.sql.Date date(String x) throws ParseException {
71
        Date d;
72
        if( x == null ) {
73
          d = new Date();
74
        } else {
75
          d = new SimpleDateFormat("yyyy-M-d").parse(x);
76
        }
77
        return new java.sql.Date(d.getTime());
78
    }
79

    
80
    private java.sql.Time time(String x) throws ParseException {
81
        Date d = new SimpleDateFormat("H:mm:ss").parse(x);
82
        return new java.sql.Time(d.getTime());
83
    }
84

    
85
    private java.sql.Timestamp timestamp(String x) throws ParseException {
86
        Date d = new SimpleDateFormat("yyyy-M-d H:mm:ss").parse(x);
87
        return new java.sql.Timestamp(d.getTime());
88
    }
89

    
90
    public void testDate() throws ParseException {
91
        SymbolTable symbolTable = createSymbolTable();
92
        Compiler compiler = createCompiler();
93
        Interpreter interpreter = createInterpreter(symbolTable);
94

    
95
        String source = "DATE '2020-02-18'";
96

    
97
        Code code = compiler.compileExpression(source);
98
        Object v = interpreter.run(code);
99
        assertEquals(date("2020-02-18"), ((java.sql.Date)v));
100
    }
101

    
102
    public void testTime() throws ParseException {
103
        SymbolTable symbolTable = createSymbolTable();
104
        Compiler compiler = createCompiler();
105
        Interpreter interpreter = createInterpreter(symbolTable);
106

    
107
        String source = "TIME '19:01:00'";
108

    
109
        Code code = compiler.compileExpression(source);
110
        Object v = interpreter.run(code);
111
        assertEquals(time("19:01:00"), ((java.sql.Time)v));
112
    }
113

    
114
    public void testTimestamp() throws ParseException {
115
        SymbolTable symbolTable = createSymbolTable();
116
        Compiler compiler = createCompiler();
117
        Interpreter interpreter = createInterpreter(symbolTable);
118

    
119
        String source = "TIMESTAMP '2020-02-18 19:01:00'";
120

    
121
        Code code = compiler.compileExpression(source);
122
        Object v = interpreter.run(code);
123
        assertEquals(timestamp("2020-02-18 19:01:00"), ((java.sql.Timestamp)v));
124
    }
125

    
126
    public void testCurrentDate() throws ParseException {
127
        SymbolTable symbolTable = createSymbolTable();
128
        Compiler compiler = createCompiler();
129
        Interpreter interpreter = createInterpreter(symbolTable);
130

    
131
        String source = "CURRENT_DATE()";
132

    
133
        Code code = compiler.compileExpression(source);
134
        Object v = interpreter.run(code);
135
        assertEquals(date(null), ((java.sql.Date)v));
136
    }
137

    
138
    public void testCurrentTime() throws ParseException {
139
        SymbolTable symbolTable = createSymbolTable();
140
        Compiler compiler = createCompiler();
141
        Interpreter interpreter = createInterpreter(symbolTable);
142

    
143
        String source = "CURRENT_TIME()";
144

    
145
        Code code = compiler.compileExpression(source);
146
        Object v = interpreter.run(code);
147
        assertTrue( v instanceof java.sql.Time);
148
    }
149

    
150
    public void testCurrentTimestamp() throws ParseException {
151
        SymbolTable symbolTable = createSymbolTable();
152
        Compiler compiler = createCompiler();
153
        Interpreter interpreter = createInterpreter(symbolTable);
154

    
155
        String source = "CURRENT_TIMESTAMP()";
156

    
157
        Code code = compiler.compileExpression(source);
158
        Object v = interpreter.run(code);
159
        assertTrue( v instanceof java.sql.Timestamp);
160
    }
161

    
162
    public void testExtractDayFromDate() {
163
        SymbolTable symbolTable = createSymbolTable();
164
        Compiler compiler = createCompiler();
165
        Interpreter interpreter = createInterpreter(symbolTable);
166

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

    
169
        Code code = compiler.compileExpression(source);
170
        Object v = interpreter.run(code);
171
        assertEquals(18, ((Integer)v).intValue());
172
    }
173

    
174
    public void testExtractDayFromTimestamp() {
175
        SymbolTable symbolTable = createSymbolTable();
176
        Compiler compiler = createCompiler();
177
        Interpreter interpreter = createInterpreter(symbolTable);
178

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

    
181
        Code code = compiler.compileExpression(source);
182
        Object v = interpreter.run(code);
183
        assertEquals(18, ((Integer)v).intValue());
184
    }
185

    
186
    public void testExtractHourFromTime() {
187
        SymbolTable symbolTable = createSymbolTable();
188
        Compiler compiler = createCompiler();
189
        Interpreter interpreter = createInterpreter(symbolTable);
190

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

    
193
        Code code = compiler.compileExpression(source);
194
        Object v = interpreter.run(code);
195
        assertEquals(20, ((Integer)v).intValue());
196
    }
197

    
198
//    public void testToDate() throws ParseException {
199
//        SymbolTable symbolTable = createSymbolTable();
200
//        Compiler compiler = createCompiler();
201
//        Interpreter interpreter = createInterpreter(symbolTable);
202
//
203
//        String source = "to_date('05 Dec 2000', 'DD MMM YYYY', 'en')";
204
//
205
//        Code code = compiler.compileExpression(source);
206
//        Object v = interpreter.run(code);
207
//        assertEquals(date("2000-12-05"), ((java.sql.Date)v));
208
//    }
209
//
210
//    public void testToTimestamp() throws ParseException {
211
//        SymbolTable symbolTable = createSymbolTable();
212
//        Compiler compiler = createCompiler();
213
//        Interpreter interpreter = createInterpreter(symbolTable);
214
//
215
//        String source = "to_timestamp('05 Dec 2000', 'DD MMM YYYY')";
216
//
217
//        Code code = compiler.compileExpression(source);
218
//        Object v = interpreter.run(code);
219
//        assertEquals(timestamp("2000-12-05 0:00:00"), ((java.sql.Timestamp)v));
220
//    }
221

    
222

    
223
}