001    /*
002     *  Copyright 2001-2010 Stephen Colebourne
003     *
004     *  Licensed under the Apache License, Version 2.0 (the "License");
005     *  you may not use this file except in compliance with the License.
006     *  You may obtain a copy of the License at
007     *
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     *
010     *  Unless required by applicable law or agreed to in writing, software
011     *  distributed under the License is distributed on an "AS IS" BASIS,
012     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     *  See the License for the specific language governing permissions and
014     *  limitations under the License.
015     */
016    package org.joda.time;
017    
018    import java.util.Date;
019    import java.util.Locale;
020    
021    import junit.framework.TestCase;
022    import junit.framework.TestSuite;
023    
024    import org.joda.time.chrono.GregorianChronology;
025    import org.joda.time.chrono.ISOChronology;
026    import org.joda.time.convert.ConverterManager;
027    import org.joda.time.convert.MockZeroNullIntegerConverter;
028    import org.joda.time.format.DateTimeFormat;
029    import org.joda.time.format.DateTimeFormatter;
030    
031    /**
032     * This class is a Junit unit test for DateTime.
033     *
034     * @author Stephen Colebourne
035     */
036    public class TestDateTime_Constructors extends TestCase {
037        // Test in 2002/03 as time zones are more well known
038        // (before the late 90's they were all over the place)
039    
040        private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris");
041        private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London");
042        
043        long y2002days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 
044                         366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 
045                         365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
046                         366 + 365;
047        long y2003days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 
048                         366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 
049                         365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
050                         366 + 365 + 365;
051        
052        // 2002-06-09
053        private long TEST_TIME_NOW =
054                (y2002days + 31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY;
055                
056        // 2002-04-05
057        private long TEST_TIME1 =
058                (y2002days + 31L + 28L + 31L + 5L -1L) * DateTimeConstants.MILLIS_PER_DAY
059                + 12L * DateTimeConstants.MILLIS_PER_HOUR
060                + 24L * DateTimeConstants.MILLIS_PER_MINUTE;
061            
062        // 2003-05-06
063        private long TEST_TIME2 =
064                (y2003days + 31L + 28L + 31L + 30L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY
065                + 14L * DateTimeConstants.MILLIS_PER_HOUR
066                + 28L * DateTimeConstants.MILLIS_PER_MINUTE;
067            
068        private DateTimeZone zone = null;
069        private Locale locale = null;
070    
071        public static void main(String[] args) {
072            junit.textui.TestRunner.run(suite());
073        }
074    
075        public static TestSuite suite() {
076            return new TestSuite(TestDateTime_Constructors.class);
077        }
078    
079        public TestDateTime_Constructors(String name) {
080            super(name);
081        }
082    
083        protected void setUp() throws Exception {
084            DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW);
085            zone = DateTimeZone.getDefault();
086            locale = Locale.getDefault();
087            DateTimeZone.setDefault(LONDON);
088            java.util.TimeZone.setDefault(LONDON.toTimeZone());
089            Locale.setDefault(Locale.UK);
090        }
091    
092        protected void tearDown() throws Exception {
093            DateTimeUtils.setCurrentMillisSystem();
094            DateTimeZone.setDefault(zone);
095            java.util.TimeZone.setDefault(zone.toTimeZone());
096            Locale.setDefault(locale);
097            zone = null;
098        }
099    
100        //-----------------------------------------------------------------------
101        public void testTest() {
102            assertEquals("2002-06-09T00:00:00.000Z", new Instant(TEST_TIME_NOW).toString());
103            assertEquals("2002-04-05T12:24:00.000Z", new Instant(TEST_TIME1).toString());
104            assertEquals("2003-05-06T14:28:00.000Z", new Instant(TEST_TIME2).toString());
105        }
106    
107        //-----------------------------------------------------------------------
108        /**
109         * Test now ()
110         */
111        public void test_now() throws Throwable {
112            DateTime test = DateTime.now();
113            assertEquals(ISOChronology.getInstance(), test.getChronology());
114            assertEquals(TEST_TIME_NOW, test.getMillis());
115        }
116    
117        /**
118         * Test now (DateTimeZone)
119         */
120        public void test_now_DateTimeZone() throws Throwable {
121            DateTime test = DateTime.now(PARIS);
122            assertEquals(ISOChronology.getInstance(PARIS), test.getChronology());
123            assertEquals(TEST_TIME_NOW, test.getMillis());
124        }
125    
126        /**
127         * Test now (DateTimeZone=null)
128         */
129        public void test_now_nullDateTimeZone() throws Throwable {
130            try {
131                DateTime.now((DateTimeZone) null);
132                fail();
133            } catch (NullPointerException ex) {}
134        }
135    
136        /**
137         * Test now (Chronology)
138         */
139        public void test_now_Chronology() throws Throwable {
140            DateTime test = DateTime.now(GregorianChronology.getInstance());
141            assertEquals(GregorianChronology.getInstance(), test.getChronology());
142            assertEquals(TEST_TIME_NOW, test.getMillis());
143        }
144    
145        /**
146         * Test now (Chronology=null)
147         */
148        public void test_now_nullChronology() throws Throwable {
149            try {
150                DateTime.now((Chronology) null);
151                fail();
152            } catch (NullPointerException ex) {}
153        }
154    
155        //-----------------------------------------------------------------------
156        public void testParse_noFormatter() throws Throwable {
157            assertEquals(new DateTime(2010, 6, 30, 1, 20, ISOChronology.getInstance(DateTimeZone.forOffsetHours(2))), DateTime.parse("2010-06-30T01:20+02:00"));
158            assertEquals(new DateTime(2010, 1, 2, 14, 50, ISOChronology.getInstance(LONDON)), DateTime.parse("2010-002T14:50"));
159        }
160    
161        public void testParse_formatter() throws Throwable {
162            DateTimeFormatter f = DateTimeFormat.forPattern("yyyy--dd MM HH").withChronology(ISOChronology.getInstance(PARIS));
163            assertEquals(new DateTime(2010, 6, 30, 13, 0, ISOChronology.getInstance(PARIS)), DateTime.parse("2010--30 06 13", f));
164        }
165    
166        //-----------------------------------------------------------------------
167        /**
168         * Test constructor ()
169         */
170        public void testConstructor() throws Throwable {
171            DateTime test = new DateTime();
172            assertEquals(ISOChronology.getInstance(), test.getChronology());
173            assertEquals(TEST_TIME_NOW, test.getMillis());
174        }
175    
176        /**
177         * Test constructor (DateTimeZone)
178         */
179        public void testConstructor_DateTimeZone() throws Throwable {
180            DateTime test = new DateTime(PARIS);
181            assertEquals(ISOChronology.getInstance(PARIS), test.getChronology());
182            assertEquals(TEST_TIME_NOW, test.getMillis());
183        }
184    
185        /**
186         * Test constructor (DateTimeZone=null)
187         */
188        public void testConstructor_nullDateTimeZone() throws Throwable {
189            DateTime test = new DateTime((DateTimeZone) null);
190            assertEquals(ISOChronology.getInstance(), test.getChronology());
191            assertEquals(TEST_TIME_NOW, test.getMillis());
192        }
193    
194        /**
195         * Test constructor (Chronology)
196         */
197        public void testConstructor_Chronology() throws Throwable {
198            DateTime test = new DateTime(GregorianChronology.getInstance());
199            assertEquals(GregorianChronology.getInstance(), test.getChronology());
200            assertEquals(TEST_TIME_NOW, test.getMillis());
201        }
202    
203        /**
204         * Test constructor (Chronology=null)
205         */
206        public void testConstructor_nullChronology() throws Throwable {
207            DateTime test = new DateTime((Chronology) null);
208            assertEquals(ISOChronology.getInstance(), test.getChronology());
209            assertEquals(TEST_TIME_NOW, test.getMillis());
210        }
211    
212        //-----------------------------------------------------------------------
213        /**
214         * Test constructor (long)
215         */
216        public void testConstructor_long1() throws Throwable {
217            DateTime test = new DateTime(TEST_TIME1);
218            assertEquals(ISOChronology.getInstance(), test.getChronology());
219            assertEquals(TEST_TIME1, test.getMillis());
220        }
221    
222        /**
223         * Test constructor (long)
224         */
225        public void testConstructor_long2() throws Throwable {
226            DateTime test = new DateTime(TEST_TIME2);
227            assertEquals(ISOChronology.getInstance(), test.getChronology());
228            assertEquals(TEST_TIME2, test.getMillis());
229        }
230    
231        /**
232         * Test constructor (long, DateTimeZone)
233         */
234        public void testConstructor_long1_DateTimeZone() throws Throwable {
235            DateTime test = new DateTime(TEST_TIME1, PARIS);
236            assertEquals(ISOChronology.getInstance(PARIS), test.getChronology());
237            assertEquals(TEST_TIME1, test.getMillis());
238        }
239    
240        /**
241         * Test constructor (long, DateTimeZone)
242         */
243        public void testConstructor_long2_DateTimeZone() throws Throwable {
244            DateTime test = new DateTime(TEST_TIME2, PARIS);
245            assertEquals(ISOChronology.getInstance(PARIS), test.getChronology());
246            assertEquals(TEST_TIME2, test.getMillis());
247        }
248    
249        /**
250         * Test constructor (long, DateTimeZone=null)
251         */
252        public void testConstructor_long_nullDateTimeZone() throws Throwable {
253            DateTime test = new DateTime(TEST_TIME1, (DateTimeZone) null);
254            assertEquals(ISOChronology.getInstance(), test.getChronology());
255            assertEquals(TEST_TIME1, test.getMillis());
256        }
257    
258        /**
259         * Test constructor (long, Chronology)
260         */
261        public void testConstructor_long1_Chronology() throws Throwable {
262            DateTime test = new DateTime(TEST_TIME1, GregorianChronology.getInstance());
263            assertEquals(GregorianChronology.getInstance(), test.getChronology());
264            assertEquals(TEST_TIME1, test.getMillis());
265        }
266    
267        /**
268         * Test constructor (long, Chronology)
269         */
270        public void testConstructor_long2_Chronology() throws Throwable {
271            DateTime test = new DateTime(TEST_TIME2, GregorianChronology.getInstance());
272            assertEquals(GregorianChronology.getInstance(), test.getChronology());
273            assertEquals(TEST_TIME2, test.getMillis());
274        }
275    
276        /**
277         * Test constructor (long, Chronology=null)
278         */
279        public void testConstructor_long_nullChronology() throws Throwable {
280            DateTime test = new DateTime(TEST_TIME1, (Chronology) null);
281            assertEquals(ISOChronology.getInstance(), test.getChronology());
282            assertEquals(TEST_TIME1, test.getMillis());
283        }
284    
285        //-----------------------------------------------------------------------
286        /**
287         * Test constructor (Object)
288         */
289        public void testConstructor_Object() throws Throwable {
290            Date date = new Date(TEST_TIME1);
291            DateTime test = new DateTime(date);
292            assertEquals(ISOChronology.getInstance(), test.getChronology());
293            assertEquals(TEST_TIME1, test.getMillis());
294        }
295    
296        /**
297         * Test constructor (Object)
298         */
299        public void testConstructor_invalidObject() throws Throwable {
300            try {
301                new DateTime(new Object());
302                fail();
303            } catch (IllegalArgumentException ex) {}
304        }
305    
306        /**
307         * Test constructor (Object=null)
308         */
309        public void testConstructor_nullObject() throws Throwable {
310            DateTime test = new DateTime((Object) null);
311            assertEquals(ISOChronology.getInstance(), test.getChronology());
312            assertEquals(TEST_TIME_NOW, test.getMillis());
313        }
314    
315        /**
316         * Test constructor (Object=null)
317         */
318        public void testConstructor_badconverterObject() throws Throwable {
319            try {
320                ConverterManager.getInstance().addInstantConverter(MockZeroNullIntegerConverter.INSTANCE);
321                DateTime test = new DateTime(new Integer(0));
322                assertEquals(ISOChronology.getInstance(), test.getChronology());
323                assertEquals(0L, test.getMillis());
324            } finally {
325                ConverterManager.getInstance().removeInstantConverter(MockZeroNullIntegerConverter.INSTANCE);
326            }
327        }
328    
329        public void testConstructor_ObjectString1() throws Throwable {
330            DateTime test = new DateTime("1972-12-03");
331            assertEquals(ISOChronology.getInstance(), test.getChronology());
332            assertEquals(1972, test.getYear());
333            assertEquals(12, test.getMonthOfYear());
334            assertEquals(3, test.getDayOfMonth());
335            assertEquals(0, test.getHourOfDay());
336            assertEquals(0, test.getMinuteOfHour());
337            assertEquals(0, test.getSecondOfMinute());
338            assertEquals(0, test.getMillisOfSecond());
339        }
340    
341        public void testConstructor_ObjectString2() throws Throwable {
342            DateTime test = new DateTime("2006-06-03T+14:00");
343            assertEquals(ISOChronology.getInstance(), test.getChronology());
344            assertEquals(2006, test.getYear());
345            assertEquals(6, test.getMonthOfYear());
346            assertEquals(2, test.getDayOfMonth());  // timezone
347            assertEquals(11, test.getHourOfDay());  // test zone is +1, so shift back (14 - 1) hours from midnight
348            assertEquals(0, test.getMinuteOfHour());
349            assertEquals(0, test.getSecondOfMinute());
350            assertEquals(0, test.getMillisOfSecond());
351        }
352    
353        public void testConstructor_ObjectString3() throws Throwable {
354            DateTime test = new DateTime("1972-12-03T10:20:30.040");
355            assertEquals(ISOChronology.getInstance(), test.getChronology());
356            assertEquals(1972, test.getYear());
357            assertEquals(12, test.getMonthOfYear());
358            assertEquals(3, test.getDayOfMonth());
359            assertEquals(10, test.getHourOfDay());
360            assertEquals(20, test.getMinuteOfHour());
361            assertEquals(30, test.getSecondOfMinute());
362            assertEquals(40, test.getMillisOfSecond());
363        }
364    
365        public void testConstructor_ObjectString4() throws Throwable {
366            DateTime test = new DateTime("2006-06-03T10:20:30.040+14:00");
367            assertEquals(ISOChronology.getInstance(), test.getChronology());
368            assertEquals(2006, test.getYear());
369            assertEquals(6, test.getMonthOfYear());
370            assertEquals(2, test.getDayOfMonth());  // timezone
371            assertEquals(21, test.getHourOfDay());  // test zone is +1, so shift back (14 - 1) hours from 10am
372            assertEquals(20, test.getMinuteOfHour());
373            assertEquals(30, test.getSecondOfMinute());
374            assertEquals(40, test.getMillisOfSecond());
375        }
376    
377        public void testConstructor_ObjectString5() throws Throwable {
378            DateTime test = new DateTime("T10:20:30.040");
379            assertEquals(ISOChronology.getInstance(), test.getChronology());
380            assertEquals(1970, test.getYear());
381            assertEquals(1, test.getMonthOfYear());
382            assertEquals(1, test.getDayOfMonth());
383            assertEquals(10, test.getHourOfDay());
384            assertEquals(20, test.getMinuteOfHour());
385            assertEquals(30, test.getSecondOfMinute());
386            assertEquals(40, test.getMillisOfSecond());
387        }
388    
389        public void testConstructor_ObjectString6() throws Throwable {
390            DateTime test = new DateTime("T10:20:30.040+14:00");
391            assertEquals(ISOChronology.getInstance(), test.getChronology());
392            assertEquals(1969, test.getYear());  // timezone
393            assertEquals(12, test.getMonthOfYear());  // timezone
394            assertEquals(31, test.getDayOfMonth());  // timezone
395            assertEquals(21, test.getHourOfDay());  // test zone is +1, so shift back (14 - 1) hours from 10am
396            assertEquals(20, test.getMinuteOfHour());
397            assertEquals(30, test.getSecondOfMinute());
398            assertEquals(40, test.getMillisOfSecond());
399        }
400    
401        public void testConstructor_ObjectString7() throws Throwable {
402            DateTime test = new DateTime("10");
403            assertEquals(ISOChronology.getInstance(), test.getChronology());
404            assertEquals(10, test.getYear());
405            assertEquals(1, test.getMonthOfYear());
406            assertEquals(1, test.getDayOfMonth());
407            assertEquals(0, test.getHourOfDay());
408            assertEquals(0, test.getMinuteOfHour());
409            assertEquals(0, test.getSecondOfMinute());
410            assertEquals(0, test.getMillisOfSecond());
411        }
412    
413        public void testConstructor_ObjectStringEx1() throws Throwable {
414            try {
415                new DateTime("10:20:30.040");
416                fail();
417            } catch (IllegalArgumentException ex) {
418                // expected
419            }
420        }
421    
422        public void testConstructor_ObjectStringEx2() throws Throwable {
423            try {
424                new DateTime("10:20:30.040+14:00");
425                fail();
426            } catch (IllegalArgumentException ex) {
427                // expected
428            }
429        }
430    
431        //-----------------------------------------------------------------------
432        /**
433         * Test constructor (Object, DateTimeZone)
434         */
435        public void testConstructor_Object_DateTimeZone() throws Throwable {
436            Date date = new Date(TEST_TIME1);
437            DateTime test = new DateTime(date, PARIS);
438            assertEquals(ISOChronology.getInstance(PARIS), test.getChronology());
439            assertEquals(TEST_TIME1, test.getMillis());
440        }
441    
442        /**
443         * Test constructor (Object, DateTimeZone)
444         */
445        public void testConstructor_invalidObject_DateTimeZone() throws Throwable {
446            try {
447                new DateTime(new Object(), PARIS);
448                fail();
449            } catch (IllegalArgumentException ex) {}
450        }
451    
452        /**
453         * Test constructor (Object=null, DateTimeZone)
454         */
455        public void testConstructor_nullObject_DateTimeZone() throws Throwable {
456            DateTime test = new DateTime((Object) null, PARIS);
457            assertEquals(ISOChronology.getInstance(PARIS), test.getChronology());
458            assertEquals(TEST_TIME_NOW, test.getMillis());
459        }
460    
461        /**
462         * Test constructor (Object, DateTimeZone=null)
463         */
464        public void testConstructor_Object_nullDateTimeZone() throws Throwable {
465            Date date = new Date(TEST_TIME1);
466            DateTime test = new DateTime(date, (DateTimeZone) null);
467            assertEquals(ISOChronology.getInstance(), test.getChronology());
468            assertEquals(TEST_TIME1, test.getMillis());
469        }
470    
471        /**
472         * Test constructor (Object=null, DateTimeZone=null)
473         */
474        public void testConstructor_nullObject_nullDateTimeZone() throws Throwable {
475            DateTime test = new DateTime((Object) null, (DateTimeZone) null);
476            assertEquals(ISOChronology.getInstance(), test.getChronology());
477            assertEquals(TEST_TIME_NOW, test.getMillis());
478        }
479    
480        /**
481         * Test constructor (Object, DateTimeZone)
482         */
483        public void testConstructor_badconverterObject_DateTimeZone() throws Throwable {
484            try {
485                ConverterManager.getInstance().addInstantConverter(MockZeroNullIntegerConverter.INSTANCE);
486                DateTime test = new DateTime(new Integer(0), GregorianChronology.getInstance());
487                assertEquals(ISOChronology.getInstance(), test.getChronology());
488                assertEquals(0L, test.getMillis());
489            } finally {
490                ConverterManager.getInstance().removeInstantConverter(MockZeroNullIntegerConverter.INSTANCE);
491            }
492        }
493    
494        /**
495         * Test constructor (Object, Chronology)
496         */
497        public void testConstructor_Object_Chronology() throws Throwable {
498            Date date = new Date(TEST_TIME1);
499            DateTime test = new DateTime(date, GregorianChronology.getInstance());
500            assertEquals(GregorianChronology.getInstance(), test.getChronology());
501            assertEquals(TEST_TIME1, test.getMillis());
502        }
503    
504        /**
505         * Test constructor (Object, Chronology)
506         */
507        public void testConstructor_invalidObject_Chronology() throws Throwable {
508            try {
509                new DateTime(new Object(), GregorianChronology.getInstance());
510                fail();
511            } catch (IllegalArgumentException ex) {}
512        }
513    
514        /**
515         * Test constructor (Object=null, Chronology)
516         */
517        public void testConstructor_nullObject_Chronology() throws Throwable {
518            DateTime test = new DateTime((Object) null, GregorianChronology.getInstance());
519            assertEquals(GregorianChronology.getInstance(), test.getChronology());
520            assertEquals(TEST_TIME_NOW, test.getMillis());
521        }
522    
523        /**
524         * Test constructor (Object, Chronology=null)
525         */
526        public void testConstructor_Object_nullChronology() throws Throwable {
527            Date date = new Date(TEST_TIME1);
528            DateTime test = new DateTime(date, (Chronology) null);
529            assertEquals(ISOChronology.getInstance(), test.getChronology());
530            assertEquals(TEST_TIME1, test.getMillis());
531        }
532    
533        /**
534         * Test constructor (Object=null, Chronology=null)
535         */
536        public void testConstructor_nullObject_nullChronology() throws Throwable {
537            DateTime test = new DateTime((Object) null, (Chronology) null);
538            assertEquals(ISOChronology.getInstance(), test.getChronology());
539            assertEquals(TEST_TIME_NOW, test.getMillis());
540        }
541    
542        /**
543         * Test constructor (Object, Chronology)
544         */
545        public void testConstructor_badconverterObject_Chronology() throws Throwable {
546            try {
547                ConverterManager.getInstance().addInstantConverter(MockZeroNullIntegerConverter.INSTANCE);
548                DateTime test = new DateTime(new Integer(0), GregorianChronology.getInstance());
549                assertEquals(ISOChronology.getInstance(), test.getChronology());
550                assertEquals(0L, test.getMillis());
551            } finally {
552                ConverterManager.getInstance().removeInstantConverter(MockZeroNullIntegerConverter.INSTANCE);
553            }
554        }
555    
556        //-----------------------------------------------------------------------
557        /**
558         * Test constructor (int, int, int, int, int)
559         */
560        public void testConstructor_int_int_int_int_int() throws Throwable {
561            DateTime test = new DateTime(2002, 6, 9, 1, 0);  // +01:00
562            assertEquals(ISOChronology.getInstance(), test.getChronology());
563            assertEquals(LONDON, test.getZone());
564            assertEquals(TEST_TIME_NOW, test.getMillis());
565        }
566    
567        /**
568         * Test constructor (int, int, int, int, int, DateTimeZone)
569         */
570        public void testConstructor_int_int_int_int_int_DateTimeZone() throws Throwable {
571            DateTime test = new DateTime(2002, 6, 9, 2, 0, PARIS);  // +02:00
572            assertEquals(ISOChronology.getInstance(PARIS), test.getChronology());
573            assertEquals(TEST_TIME_NOW, test.getMillis());
574        }
575    
576        /**
577         * Test constructor (int, int, int, int, int, DateTimeZone=null)
578         */
579        public void testConstructor_int_int_int_int_int_nullDateTimeZone() throws Throwable {
580            DateTime test = new DateTime(2002, 6, 9, 1, 0, (DateTimeZone) null);  // +01:00
581            assertEquals(ISOChronology.getInstance(), test.getChronology());
582            assertEquals(TEST_TIME_NOW, test.getMillis());
583        }
584    
585        /**
586         * Test constructor (int, int, int, int, int, Chronology)
587         */
588        public void testConstructor_int_int_int_int_int_Chronology() throws Throwable {
589            DateTime test = new DateTime(2002, 6, 9, 1, 0, GregorianChronology.getInstance());  // +01:00
590            assertEquals(GregorianChronology.getInstance(), test.getChronology());
591            assertEquals(TEST_TIME_NOW, test.getMillis());
592        }
593    
594        /**
595         * Test constructor (int, int, int, int, int, Chronology=null)
596         */
597        public void testConstructor_int_int_int_int_int_nullChronology() throws Throwable {
598            DateTime test = new DateTime(2002, 6, 9, 1, 0, (Chronology) null);  // +01:00
599            assertEquals(ISOChronology.getInstance(), test.getChronology());
600            assertEquals(TEST_TIME_NOW, test.getMillis());
601        }
602    
603        //-----------------------------------------------------------------------
604        /**
605         * Test constructor (int, int, int, int, int, int)
606         */
607        public void testConstructor_int_int_int_int_int_int() throws Throwable {
608            DateTime test = new DateTime(2002, 6, 9, 1, 0, 0);  // +01:00
609            assertEquals(ISOChronology.getInstance(), test.getChronology());
610            assertEquals(LONDON, test.getZone());
611            assertEquals(TEST_TIME_NOW, test.getMillis());
612        }
613    
614        /**
615         * Test constructor (int, int, int, int, int, int, DateTimeZone)
616         */
617        public void testConstructor_int_int_int_int_int_int_DateTimeZone() throws Throwable {
618            DateTime test = new DateTime(2002, 6, 9, 2, 0, 0, PARIS);  // +02:00
619            assertEquals(ISOChronology.getInstance(PARIS), test.getChronology());
620            assertEquals(TEST_TIME_NOW, test.getMillis());
621        }
622    
623        /**
624         * Test constructor (int, int, int, int, int, int, DateTimeZone=null)
625         */
626        public void testConstructor_int_int_int_int_int_int_nullDateTimeZone() throws Throwable {
627            DateTime test = new DateTime(2002, 6, 9, 1, 0, 0, (DateTimeZone) null);  // +01:00
628            assertEquals(ISOChronology.getInstance(), test.getChronology());
629            assertEquals(TEST_TIME_NOW, test.getMillis());
630        }
631    
632        /**
633         * Test constructor (int, int, int, int, int, int, Chronology)
634         */
635        public void testConstructor_int_int_int_int_int_int_Chronology() throws Throwable {
636            DateTime test = new DateTime(2002, 6, 9, 1, 0, 0, GregorianChronology.getInstance());  // +01:00
637            assertEquals(GregorianChronology.getInstance(), test.getChronology());
638            assertEquals(TEST_TIME_NOW, test.getMillis());
639        }
640    
641        /**
642         * Test constructor (int, int, int, int, int, int, Chronology=null)
643         */
644        public void testConstructor_int_int_int_int_int_int_nullChronology() throws Throwable {
645            DateTime test = new DateTime(2002, 6, 9, 1, 0, 0, (Chronology) null);  // +01:00
646            assertEquals(ISOChronology.getInstance(), test.getChronology());
647            assertEquals(TEST_TIME_NOW, test.getMillis());
648        }
649    
650        //-----------------------------------------------------------------------
651        /**
652         * Test constructor (int, int, int)
653         */
654        public void testConstructor_int_int_int_int_int_int_int() throws Throwable {
655            DateTime test = new DateTime(2002, 6, 9, 1, 0, 0, 0);  // +01:00
656            assertEquals(ISOChronology.getInstance(), test.getChronology());
657            assertEquals(LONDON, test.getZone());
658            assertEquals(TEST_TIME_NOW, test.getMillis());
659            try {
660                new DateTime(Integer.MIN_VALUE, 6, 9, 0, 0, 0, 0);
661                fail();
662            } catch (IllegalArgumentException ex) {}
663            try {
664                new DateTime(Integer.MAX_VALUE, 6, 9, 0, 0, 0, 0);
665                fail();
666            } catch (IllegalArgumentException ex) {}
667            try {
668                new DateTime(2002, 0, 9, 0, 0, 0, 0);
669                fail();
670            } catch (IllegalArgumentException ex) {}
671            try {
672                new DateTime(2002, 13, 9, 0, 0, 0, 0);
673                fail();
674            } catch (IllegalArgumentException ex) {}
675            try {
676                new DateTime(2002, 6, 0, 0, 0, 0, 0);
677                fail();
678            } catch (IllegalArgumentException ex) {}
679            try {
680                new DateTime(2002, 6, 31, 0, 0, 0, 0);
681                fail();
682            } catch (IllegalArgumentException ex) {}
683            new DateTime(2002, 7, 31, 0, 0, 0, 0);
684            try {
685                new DateTime(2002, 7, 32, 0, 0, 0, 0);
686                fail();
687            } catch (IllegalArgumentException ex) {}
688        }
689    
690        /**
691         * Test constructor (int, int, int, DateTimeZone)
692         */
693        public void testConstructor_int_int_int_int_int_int_int_DateTimeZone() throws Throwable {
694            DateTime test = new DateTime(2002, 6, 9, 2, 0, 0, 0, PARIS);  // +02:00
695            assertEquals(ISOChronology.getInstance(PARIS), test.getChronology());
696            assertEquals(TEST_TIME_NOW, test.getMillis());
697            try {
698                new DateTime(Integer.MIN_VALUE, 6, 9, 0, 0, 0, 0, PARIS);
699                fail();
700            } catch (IllegalArgumentException ex) {}
701            try {
702                new DateTime(Integer.MAX_VALUE, 6, 9, 0, 0, 0, 0, PARIS);
703                fail();
704            } catch (IllegalArgumentException ex) {}
705            try {
706                new DateTime(2002, 0, 9, 0, 0, 0, 0, PARIS);
707                fail();
708            } catch (IllegalArgumentException ex) {}
709            try {
710                new DateTime(2002, 13, 9, 0, 0, 0, 0, PARIS);
711                fail();
712            } catch (IllegalArgumentException ex) {}
713            try {
714                new DateTime(2002, 6, 0, 0, 0, 0, 0, PARIS);
715                fail();
716            } catch (IllegalArgumentException ex) {}
717            try {
718                new DateTime(2002, 6, 31, 0, 0, 0, 0, PARIS);
719                fail();
720            } catch (IllegalArgumentException ex) {}
721            new DateTime(2002, 7, 31, 0, 0, 0, 0, PARIS);
722            try {
723                new DateTime(2002, 7, 32, 0, 0, 0, 0, PARIS);
724                fail();
725            } catch (IllegalArgumentException ex) {}
726        }
727    
728        /**
729         * Test constructor (int, int, int, DateTimeZone=null)
730         */
731        public void testConstructor_int_int_int_int_int_int_int_nullDateTimeZone() throws Throwable {
732            DateTime test = new DateTime(2002, 6, 9, 1, 0, 0, 0, (DateTimeZone) null);  // +01:00
733            assertEquals(ISOChronology.getInstance(), test.getChronology());
734            assertEquals(TEST_TIME_NOW, test.getMillis());
735        }
736    
737        /**
738         * Test constructor (int, int, int, Chronology)
739         */
740        public void testConstructor_int_int_int_int_int_int_int_Chronology() throws Throwable {
741            DateTime test = new DateTime(2002, 6, 9, 1, 0, 0, 0, GregorianChronology.getInstance());  // +01:00
742            assertEquals(GregorianChronology.getInstance(), test.getChronology());
743            assertEquals(TEST_TIME_NOW, test.getMillis());
744            try {
745                new DateTime(Integer.MIN_VALUE, 6, 9, 0, 0, 0, 0, GregorianChronology.getInstance());
746                fail();
747            } catch (IllegalArgumentException ex) {}
748            try {
749                new DateTime(Integer.MAX_VALUE, 6, 9, 0, 0, 0, 0, GregorianChronology.getInstance());
750                fail();
751            } catch (IllegalArgumentException ex) {}
752            try {
753                new DateTime(2002, 0, 9, 0, 0, 0, 0, GregorianChronology.getInstance());
754                fail();
755            } catch (IllegalArgumentException ex) {}
756            try {
757                new DateTime(2002, 13, 9, 0, 0, 0, 0, GregorianChronology.getInstance());
758                fail();
759            } catch (IllegalArgumentException ex) {}
760            try {
761                new DateTime(2002, 6, 0, 0, 0, 0, 0, GregorianChronology.getInstance());
762                fail();
763            } catch (IllegalArgumentException ex) {}
764            try {
765                new DateTime(2002, 6, 31, 0, 0, 0, 0, GregorianChronology.getInstance());
766                fail();
767            } catch (IllegalArgumentException ex) {}
768            new DateTime(2002, 7, 31, 0, 0, 0, 0, GregorianChronology.getInstance());
769            try {
770                new DateTime(2002, 7, 32, 0, 0, 0, 0, GregorianChronology.getInstance());
771                fail();
772            } catch (IllegalArgumentException ex) {}
773        }
774    
775        /**
776         * Test constructor (int, int, int, Chronology=null)
777         */
778        public void testConstructor_int_int_int_int_int_int_int_nullChronology() throws Throwable {
779            DateTime test = new DateTime(2002, 6, 9, 1, 0, 0, 0, (Chronology) null);  // +01:00
780            assertEquals(ISOChronology.getInstance(), test.getChronology());
781            assertEquals(TEST_TIME_NOW, test.getMillis());
782        }
783    
784    }