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
1717private Connection con ;
18+ private boolean testingSetDate =false ;
1819
1920public DateTest (String name )
2021{
@@ -46,11 +47,23 @@ public void testGetDate()
4647assertEquals (1 ,stmt .executeUpdate (TestUtil .insertSQL ("testdate" ,"'1970-06-02'" )));
4748assertEquals (1 ,stmt .executeUpdate (TestUtil .insertSQL ("testdate" ,"'1999-08-11'" )));
4849assertEquals (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 */
5164dateTest ();
5265
53- assertEquals (4 ,stmt .executeUpdate ("DELETE FROM " +"testdate" ));
66+ assertEquals (16 ,stmt .executeUpdate ("DELETE FROM " +"testdate" ));
5467stmt .close ();
5568}
5669catch (Exception ex )
@@ -80,13 +93,64 @@ public void testSetDate()
8093
8194ps .setDate (1 ,makeDate (2001 ,2 ,13 ));
8295assertEquals (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+
84145ps .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
87150dateTest ();
151+ testingSetDate =false ;
88152
89- assertEquals (4 ,stmt .executeUpdate ("DELETE FROM testdate" ));
153+ assertEquals (20 ,stmt .executeUpdate ("DELETE FROM testdate" ));
90154stmt .close ();
91155}
92156catch (Exception ex )
@@ -127,6 +191,122 @@ private void dateTest() throws SQLException
127191assertNotNull (d );
128192assertEquals (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+
130310assertTrue (!rs .next ());
131311
132312rs .close ();