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