55import java .sql .*;
66
77/*
8- * $Id: DateTest.java,v 1.5 2002/08/14 20:35:40 barry Exp $
8+ * $Id: DateTest.java,v 1.6 2003/09/22 04:55:00 barry Exp $
99 *
1010 * Some simple tests based on problems reported by users. Hopefully these will
1111 * help prevent previous problems from re-occuring ;-)
@@ -15,6 +15,7 @@ public class DateTest extends TestCase
1515{
1616
1717 private Connection con ;
18+ private boolean testingSetDate = false ;
1819
1920 public DateTest (String name )
2021 {
@@ -46,11 +47,23 @@ public void testGetDate()
4647 assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'1970-06-02'" )));
4748 assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'1999-08-11'" )));
4849 assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'2001-02-13'" )));
50+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'1950-04-02'" )));
51+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'1970-11-30'" )));
52+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'1988-01-01'" )));
53+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'2003-07-09'" )));
54+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'1934-02-28'" )));
55+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'1969-04-03'" )));
56+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'1982-08-03'" )));
57+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'2012-03-15'" )));
58+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'1912-05-01'" )));
59+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'1971-12-15'" )));
60+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'1984-12-03'" )));
61+ assertEquals (1 , stmt .executeUpdate (TestUtil .insertSQL ("testdate" , "'2000-01-01'" )));
4962
5063 /* dateTest() contains all of the tests */
5164 dateTest ();
5265
53- assertEquals (4 , stmt .executeUpdate ("DELETE FROM " + "testdate" ));
66+ assertEquals (16 , stmt .executeUpdate ("DELETE FROM " + "testdate" ));
5467 stmt .close ();
5568 }
5669 catch (Exception ex )
@@ -80,13 +93,64 @@ public void testSetDate()
8093
8194 ps .setDate (1 , makeDate (2001 , 2 , 13 ));
8295 assertEquals (1 , ps .executeUpdate ());
83-
96+
97+ ps .setObject (1 , java .sql .Timestamp .valueOf ("1950-04-02 12:00:00" ), java .sql .Types .DATE );
98+ assertEquals (1 , ps .executeUpdate ());
99+
100+ ps .setObject (1 , java .sql .Timestamp .valueOf ("1970-11-30 3:00:00" ), java .sql .Types .DATE );
101+ assertEquals (1 , ps .executeUpdate ());
102+
103+ ps .setObject (1 , java .sql .Timestamp .valueOf ("1988-1-1 13:00:00" ), java .sql .Types .DATE );
104+ assertEquals (1 , ps .executeUpdate ());
105+
106+ ps .setObject (1 , java .sql .Timestamp .valueOf ("2003-07-09 12:00:00" ), java .sql .Types .DATE );
107+ assertEquals (1 , ps .executeUpdate ());
108+
109+ ps .setObject (1 , "1934-02-28" , java .sql .Types .DATE );
110+ assertEquals (1 , ps .executeUpdate ());
111+
112+ ps .setObject (1 , "1969-04-3" , java .sql .Types .DATE );
113+ assertEquals (1 , ps .executeUpdate ());
114+
115+ ps .setObject (1 , "1982-08-03" , java .sql .Types .DATE );
116+ assertEquals (1 , ps .executeUpdate ());
117+
118+ ps .setObject (1 , "2012-3-15" , java .sql .Types .DATE );
119+ assertEquals (1 , ps .executeUpdate ());
120+
121+ ps .setObject (1 , java .sql .Date .valueOf ("1912-5-1" ), java .sql .Types .DATE );
122+ assertEquals (1 , ps .executeUpdate ());
123+
124+ ps .setObject (1 , java .sql .Date .valueOf ("1971-12-15" ), java .sql .Types .DATE );
125+ assertEquals (1 , ps .executeUpdate ());
126+
127+ ps .setObject (1 , java .sql .Date .valueOf ("1984-12-03" ), java .sql .Types .DATE );
128+ assertEquals (1 , ps .executeUpdate ());
129+
130+ ps .setObject (1 , java .sql .Date .valueOf ("2000-1-1" ), java .sql .Types .DATE );
131+ assertEquals (1 , ps .executeUpdate ());
132+
133+ ps .setObject (1 , "1944-4-04-01" , java .sql .Types .DATE );
134+ assertEquals (1 , ps .executeUpdate ());
135+
136+ ps .setObject (1 , "1970-01-1-10" , java .sql .Types .DATE );
137+ assertEquals (1 , ps .executeUpdate ());
138+
139+ ps .setObject (1 , "1982-12-14+13" , java .sql .Types .DATE );
140+ assertEquals (1 , ps .executeUpdate ());
141+
142+ ps .setObject (1 , "2010-08-3+05" , java .sql .Types .DATE );
143+ assertEquals (1 , ps .executeUpdate ());
144+
84145 ps .close ();
85146
147+ // Need to set a flag so that the method knows there is an extra test.
148+ testingSetDate = true ;
86149 // Fall through helper
87150 dateTest ();
151+ testingSetDate = false ;
88152
89- assertEquals (4 , stmt .executeUpdate ("DELETE FROM testdate" ));
153+ assertEquals (20 , stmt .executeUpdate ("DELETE FROM testdate" ));
90154 stmt .close ();
91155 }
92156 catch (Exception ex )
@@ -127,6 +191,122 @@ private void dateTest() throws SQLException
127191 assertNotNull (d );
128192 assertEquals (d , makeDate (2001 , 2 , 13 ));
129193
194+ assertTrue (rs .next ());
195+ d = rs .getDate (1 );
196+ assertNotNull (d );
197+ assertEquals (d , makeDate (1950 , 4 , 2 ));
198+
199+ assertTrue (rs .next ());
200+ d = rs .getDate (1 );
201+ assertNotNull (d );
202+ assertEquals (d , makeDate (1970 , 11 , 30 ));
203+
204+ assertTrue (rs .next ());
205+ d = rs .getDate (1 );
206+ assertNotNull (d );
207+ assertEquals (d , makeDate (1988 , 1 , 1 ));
208+
209+ assertTrue (rs .next ());
210+ d = rs .getDate (1 );
211+ assertNotNull (d );
212+ assertEquals (d , makeDate (2003 , 7 , 9 ));
213+
214+ assertTrue (rs .next ());
215+ d = rs .getDate (1 );
216+ assertNotNull (d );
217+ assertEquals (d , makeDate (1934 , 2 , 28 ));
218+
219+ assertTrue (rs .next ());
220+ d = rs .getDate (1 );
221+ assertNotNull (d );
222+ assertEquals (d , makeDate (1969 , 4 , 3 ));
223+
224+ assertTrue (rs .next ());
225+ d = rs .getDate (1 );
226+ assertNotNull (d );
227+ assertEquals (d , makeDate (1982 , 8 , 3 ));
228+
229+ assertTrue (rs .next ());
230+ d = rs .getDate (1 );
231+ assertNotNull (d );
232+ assertEquals (d , makeDate (2012 , 3 , 15 ));
233+
234+ assertTrue (rs .next ());
235+ d = rs .getDate (1 );
236+ assertNotNull (d );
237+ assertEquals (d , makeDate (1912 , 5 , 1 ));
238+
239+ assertTrue (rs .next ());
240+ d = rs .getDate (1 );
241+ assertNotNull (d );
242+ assertEquals (d , makeDate (1971 , 12 , 15 ));
243+
244+ assertTrue (rs .next ());
245+ d = rs .getDate (1 );
246+ assertNotNull (d );
247+ assertEquals (d , makeDate (1984 , 12 , 3 ));
248+
249+ assertTrue (rs .next ());
250+ d = rs .getDate (1 );
251+ assertNotNull (d );
252+ assertEquals (d , makeDate (2000 , 1 , 1 ));
253+
254+ //now we have to convert the date, cause I fed it a timezone. IF it used it. hence the check
255+ if (testingSetDate )
256+ {
257+ assertTrue (rs .next ());
258+ d = rs .getDate (1 );
259+ assertNotNull (d );
260+ java .sql .Date tmpDate = java .sql .Date .valueOf ("1944-4-4" );
261+ int localoffset = java .util .Calendar .getInstance ().getTimeZone ().getRawOffset ();
262+ if (java .util .Calendar .getInstance ().getTimeZone ().inDaylightTime (tmpDate ))
263+ {
264+ localoffset += 60 * 60 * 1000 ;
265+ }
266+ int Dateoffset = 60 * 60 * 1000 ;
267+ tmpDate .setTime (tmpDate .getTime () + Dateoffset + localoffset );
268+ assertEquals (d , makeDate (tmpDate .getYear () + 1900 , tmpDate .getMonth ()+1 , tmpDate .getDate ()));
269+
270+ assertTrue (rs .next ());
271+ d = rs .getDate (1 );
272+ assertNotNull (d );
273+ tmpDate = java .sql .Date .valueOf ("1970-1-1" );
274+ localoffset = java .util .Calendar .getInstance ().getTimeZone ().getRawOffset ();
275+ if (java .util .Calendar .getInstance ().getTimeZone ().inDaylightTime (tmpDate ))
276+ {
277+ localoffset += 60 * 60 * 1000 ;
278+ }
279+ Dateoffset = 10 * 60 * 60 * 1000 ;
280+ tmpDate .setTime (tmpDate .getTime () + Dateoffset + localoffset );
281+ assertEquals (d , makeDate (tmpDate .getYear () + 1900 , tmpDate .getMonth ()+1 , tmpDate .getDate ()));
282+
283+ assertTrue (rs .next ());
284+ d = rs .getDate (1 );
285+ assertNotNull (d );
286+ tmpDate = java .sql .Date .valueOf ("1982-12-14" );
287+ localoffset = java .util .Calendar .getInstance ().getTimeZone ().getRawOffset ();
288+ if (java .util .Calendar .getInstance ().getTimeZone ().inDaylightTime (tmpDate ))
289+ {
290+ localoffset += 60 * 60 * 1000 ;
291+ }
292+ Dateoffset = -13 * 60 * 60 * 1000 ;
293+ tmpDate .setTime (tmpDate .getTime () + Dateoffset + localoffset );
294+ assertEquals (d , makeDate (tmpDate .getYear () + 1900 , tmpDate .getMonth ()+1 , tmpDate .getDate ()));
295+
296+ assertTrue (rs .next ());
297+ d = rs .getDate (1 );
298+ assertNotNull (d );
299+ tmpDate = java .sql .Date .valueOf ("2010-08-03" );
300+ localoffset = java .util .Calendar .getInstance ().getTimeZone ().getRawOffset ();
301+ if (java .util .Calendar .getInstance ().getTimeZone ().inDaylightTime (tmpDate ))
302+ {
303+ localoffset += 60 * 60 * 1000 ;
304+ }
305+ Dateoffset = -5 * 60 * 60 * 1000 ;
306+ tmpDate .setTime (tmpDate .getTime () + Dateoffset + localoffset );
307+ assertEquals (d , makeDate (tmpDate .getYear () + 1900 , tmpDate .getMonth ()+1 , tmpDate .getDate ()));
308+ }
309+
130310 assertTrue (!rs .next ());
131311
132312 rs .close ();
0 commit comments