001    /*
002     *  Copyright 2001-2006 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.Calendar;
019    import java.util.Date;
020    import java.util.GregorianCalendar;
021    
022    import junit.framework.TestCase;
023    import junit.framework.TestSuite;
024    
025    import org.joda.time.chrono.CopticChronology;
026    import org.joda.time.chrono.GJChronology;
027    import org.joda.time.chrono.ISOChronology;
028    import org.joda.time.chrono.JulianChronology;
029    
030    /**
031     * This class is a Junit unit test for TimeOfDay.
032     *
033     * @author Stephen Colebourne
034     */
035    public class TestTimeOfDay_Constructors extends TestCase {
036    
037        private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London");
038        private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris");
039        private static final ISOChronology ISO_UTC = ISOChronology.getInstanceUTC();
040        private static final int OFFSET = 1;
041        
042        private long TEST_TIME_NOW =
043                10L * DateTimeConstants.MILLIS_PER_HOUR
044                + 20L * DateTimeConstants.MILLIS_PER_MINUTE
045                + 30L * DateTimeConstants.MILLIS_PER_SECOND
046                + 40L;
047                
048        private long TEST_TIME1 =
049            1L * DateTimeConstants.MILLIS_PER_HOUR
050            + 2L * DateTimeConstants.MILLIS_PER_MINUTE
051            + 3L * DateTimeConstants.MILLIS_PER_SECOND
052            + 4L;
053            
054        private long TEST_TIME2 =
055            1L * DateTimeConstants.MILLIS_PER_DAY
056            + 5L * DateTimeConstants.MILLIS_PER_HOUR
057            + 6L * DateTimeConstants.MILLIS_PER_MINUTE
058            + 7L * DateTimeConstants.MILLIS_PER_SECOND
059            + 8L;
060            
061        private DateTimeZone zone = null;
062    
063        public static void main(String[] args) {
064            junit.textui.TestRunner.run(suite());
065        }
066    
067        public static TestSuite suite() {
068            return new TestSuite(TestTimeOfDay_Constructors.class);
069        }
070    
071        public TestTimeOfDay_Constructors(String name) {
072            super(name);
073        }
074    
075        protected void setUp() throws Exception {
076            DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW);
077            zone = DateTimeZone.getDefault();
078            DateTimeZone.setDefault(LONDON);
079            java.util.TimeZone.setDefault(LONDON.toTimeZone());
080        }
081    
082        protected void tearDown() throws Exception {
083            DateTimeUtils.setCurrentMillisSystem();
084            DateTimeZone.setDefault(zone);
085            java.util.TimeZone.setDefault(zone.toTimeZone());
086            zone = null;
087        }
088    
089        //-----------------------------------------------------------------------
090        /**
091         * Test constructor ()
092         */
093        public void testConstantMidnight() throws Throwable {
094            TimeOfDay test = TimeOfDay.MIDNIGHT;
095            assertEquals(ISO_UTC, test.getChronology());
096            assertEquals(0, test.getHourOfDay());
097            assertEquals(0, test.getMinuteOfHour());
098            assertEquals(0, test.getSecondOfMinute());
099            assertEquals(0, test.getMillisOfSecond());
100        }
101    
102        //-----------------------------------------------------------------------
103        public void testFactory_FromCalendarFields() throws Exception {
104            GregorianCalendar cal = new GregorianCalendar(1970, 1, 3, 4, 5, 6);
105            cal.set(Calendar.MILLISECOND, 7);
106            TimeOfDay expected = new TimeOfDay(4, 5, 6, 7);
107            assertEquals(expected, TimeOfDay.fromCalendarFields(cal));
108            try {
109                TimeOfDay.fromCalendarFields(null);
110                fail();
111            } catch (IllegalArgumentException ex) {}
112        }
113    
114        //-----------------------------------------------------------------------
115        public void testFactory_FromDateFields_after1970() throws Exception {
116            GregorianCalendar cal = new GregorianCalendar(1970, 1, 3, 4, 5, 6);
117            cal.set(Calendar.MILLISECOND, 7);
118            TimeOfDay expected = new TimeOfDay(4, 5, 6, 7);
119            assertEquals(expected, TimeOfDay.fromDateFields(cal.getTime()));
120        }
121    
122        public void testFactory_FromDateFields_before1970() throws Exception {
123            GregorianCalendar cal = new GregorianCalendar(1969, 1, 3, 4, 5, 6);
124            cal.set(Calendar.MILLISECOND, 7);
125            TimeOfDay expected = new TimeOfDay(4, 5, 6, 7);
126            assertEquals(expected, TimeOfDay.fromDateFields(cal.getTime()));
127        }
128    
129        public void testFactory_FromDateFields_null() throws Exception {
130            try {
131                TimeOfDay.fromDateFields(null);
132                fail();
133            } catch (IllegalArgumentException ex) {}
134        }
135    
136        //-----------------------------------------------------------------------
137        /**
138         * Test factory (long)
139         */
140        public void testFactoryMillisOfDay_long1() throws Throwable {
141            TimeOfDay test = TimeOfDay.fromMillisOfDay(TEST_TIME1);
142            assertEquals(ISO_UTC, test.getChronology());
143            assertEquals(1, test.getHourOfDay());
144            assertEquals(2, test.getMinuteOfHour());
145            assertEquals(3, test.getSecondOfMinute());
146            assertEquals(4, test.getMillisOfSecond());
147        }
148    
149        /**
150         * Test factory (long, Chronology)
151         */
152        public void testFactoryMillisOfDay_long1_Chronology() throws Throwable {
153            TimeOfDay test = TimeOfDay.fromMillisOfDay(TEST_TIME1, JulianChronology.getInstance());
154            assertEquals(JulianChronology.getInstanceUTC(), test.getChronology());
155            assertEquals(1, test.getHourOfDay());
156            assertEquals(2, test.getMinuteOfHour());
157            assertEquals(3, test.getSecondOfMinute());
158            assertEquals(4, test.getMillisOfSecond());
159        }
160    
161        /**
162         * Test factory (long, Chronology=null)
163         */
164        public void testFactoryMillisOfDay_long_nullChronology() throws Throwable {
165            TimeOfDay test = TimeOfDay.fromMillisOfDay(TEST_TIME1, null);
166            assertEquals(ISO_UTC, test.getChronology());
167            assertEquals(1, test.getHourOfDay());
168            assertEquals(2, test.getMinuteOfHour());
169            assertEquals(3, test.getSecondOfMinute());
170            assertEquals(4, test.getMillisOfSecond());
171        }
172    
173        //-----------------------------------------------------------------------
174        /**
175         * Test constructor ()
176         */
177        public void testConstructor() throws Throwable {
178            TimeOfDay test = new TimeOfDay();
179            assertEquals(ISO_UTC, test.getChronology());
180            assertEquals(10 + OFFSET, test.getHourOfDay());
181            assertEquals(20, test.getMinuteOfHour());
182            assertEquals(30, test.getSecondOfMinute());
183            assertEquals(40, test.getMillisOfSecond());
184        }
185    
186        /**
187         * Test constructor (DateTimeZone)
188         */
189        public void testConstructor_DateTimeZone() throws Throwable {
190            DateTime dt = new DateTime(2005, 6, 8, 23, 59, 30, 40, LONDON);
191            DateTimeUtils.setCurrentMillisFixed(dt.getMillis());
192            // 23:59 in London is 00:59 the following day in Paris
193            
194            TimeOfDay test = new TimeOfDay(LONDON);
195            assertEquals(ISO_UTC, test.getChronology());
196            assertEquals(23, test.getHourOfDay());
197            assertEquals(59, test.getMinuteOfHour());
198            assertEquals(30, test.getSecondOfMinute());
199            assertEquals(40, test.getMillisOfSecond());
200            
201            test = new TimeOfDay(PARIS);
202            assertEquals(ISO_UTC, test.getChronology());
203            assertEquals(0, test.getHourOfDay());
204            assertEquals(59, test.getMinuteOfHour());
205            assertEquals(30, test.getSecondOfMinute());
206            assertEquals(40, test.getMillisOfSecond());
207        }
208    
209        /**
210         * Test constructor (DateTimeZone=null)
211         */
212        public void testConstructor_nullDateTimeZone() throws Throwable {
213            DateTime dt = new DateTime(2005, 6, 8, 23, 59, 30, 40, LONDON);
214            DateTimeUtils.setCurrentMillisFixed(dt.getMillis());
215            // 23:59 in London is 00:59 the following day in Paris
216            
217            TimeOfDay test = new TimeOfDay((DateTimeZone) null);
218            assertEquals(ISO_UTC, test.getChronology());
219            assertEquals(23, test.getHourOfDay());
220            assertEquals(59, test.getMinuteOfHour());
221            assertEquals(30, test.getSecondOfMinute());
222            assertEquals(40, test.getMillisOfSecond());
223        }
224    
225        /**
226         * Test constructor (Chronology)
227         */
228        public void testConstructor_Chronology() throws Throwable {
229            TimeOfDay test = new TimeOfDay(JulianChronology.getInstance());
230            assertEquals(JulianChronology.getInstanceUTC(), test.getChronology());
231            assertEquals(10 + OFFSET, test.getHourOfDay());
232            assertEquals(20, test.getMinuteOfHour());
233            assertEquals(30, test.getSecondOfMinute());
234            assertEquals(40, test.getMillisOfSecond());
235        }
236    
237        /**
238         * Test constructor (Chronology=null)
239         */
240        public void testConstructor_nullChronology() throws Throwable {
241            TimeOfDay test = new TimeOfDay((Chronology) null);
242            assertEquals(ISO_UTC, test.getChronology());
243            assertEquals(10 + OFFSET, test.getHourOfDay());
244            assertEquals(20, test.getMinuteOfHour());
245            assertEquals(30, test.getSecondOfMinute());
246            assertEquals(40, test.getMillisOfSecond());
247        }
248    
249        //-----------------------------------------------------------------------
250        /**
251         * Test constructor (long)
252         */
253        public void testConstructor_long1() throws Throwable {
254            TimeOfDay test = new TimeOfDay(TEST_TIME1);
255            assertEquals(ISO_UTC, test.getChronology());
256            assertEquals(1 + OFFSET, test.getHourOfDay());
257            assertEquals(2, test.getMinuteOfHour());
258            assertEquals(3, test.getSecondOfMinute());
259            assertEquals(4, test.getMillisOfSecond());
260        }
261    
262        /**
263         * Test constructor (long)
264         */
265        public void testConstructor_long2() throws Throwable {
266            TimeOfDay test = new TimeOfDay(TEST_TIME2);
267            assertEquals(ISO_UTC, test.getChronology());
268            assertEquals(5 + OFFSET, test.getHourOfDay());
269            assertEquals(6, test.getMinuteOfHour());
270            assertEquals(7, test.getSecondOfMinute());
271            assertEquals(8, test.getMillisOfSecond());
272        }
273    
274        /**
275         * Test constructor (long, Chronology)
276         */
277        public void testConstructor_long1_Chronology() throws Throwable {
278            TimeOfDay test = new TimeOfDay(TEST_TIME1, JulianChronology.getInstance());
279            assertEquals(JulianChronology.getInstanceUTC(), test.getChronology());
280            assertEquals(1 + OFFSET, test.getHourOfDay());
281            assertEquals(2, test.getMinuteOfHour());
282            assertEquals(3, test.getSecondOfMinute());
283            assertEquals(4, test.getMillisOfSecond());
284        }
285    
286        /**
287         * Test constructor (long, Chronology)
288         */
289        public void testConstructor_long2_Chronology() throws Throwable {
290            TimeOfDay test = new TimeOfDay(TEST_TIME2, JulianChronology.getInstance());
291            assertEquals(JulianChronology.getInstanceUTC(), test.getChronology());
292            assertEquals(5 + OFFSET, test.getHourOfDay());
293            assertEquals(6, test.getMinuteOfHour());
294            assertEquals(7, test.getSecondOfMinute());
295            assertEquals(8, test.getMillisOfSecond());
296        }
297    
298        /**
299         * Test constructor (long, Chronology=null)
300         */
301        public void testConstructor_long_nullChronology() throws Throwable {
302            TimeOfDay test = new TimeOfDay(TEST_TIME1, null);
303            assertEquals(ISO_UTC, test.getChronology());
304            assertEquals(1 + OFFSET, test.getHourOfDay());
305            assertEquals(2, test.getMinuteOfHour());
306            assertEquals(3, test.getSecondOfMinute());
307            assertEquals(4, test.getMillisOfSecond());
308        }
309    
310        //-----------------------------------------------------------------------
311        /**
312         * Test constructor (Object)
313         */
314        public void testConstructor_Object1() throws Throwable {
315            Date date = new Date(TEST_TIME1);
316            TimeOfDay test = new TimeOfDay(date);
317            assertEquals(ISO_UTC, test.getChronology());
318            assertEquals(1 + OFFSET, test.getHourOfDay());
319            assertEquals(2, test.getMinuteOfHour());
320            assertEquals(3, test.getSecondOfMinute());
321            assertEquals(4, test.getMillisOfSecond());
322        }
323    
324        /**
325         * Test constructor (Object)
326         */
327        public void testConstructor_Object2() throws Throwable {
328            Calendar cal = new GregorianCalendar();
329            cal.setTime(new Date(TEST_TIME1));
330            TimeOfDay test = new TimeOfDay(cal);
331            assertEquals(GJChronology.getInstanceUTC(), test.getChronology());
332            assertEquals(1 + OFFSET, test.getHourOfDay());
333            assertEquals(2, test.getMinuteOfHour());
334            assertEquals(3, test.getSecondOfMinute());
335            assertEquals(4, test.getMillisOfSecond());
336        }
337    
338        /**
339         * Test constructor (Object=null)
340         */
341        public void testConstructor_nullObject() throws Throwable {
342            TimeOfDay test = new TimeOfDay((Object) null);
343            assertEquals(ISO_UTC, test.getChronology());
344            assertEquals(10 + OFFSET, test.getHourOfDay());
345            assertEquals(20, test.getMinuteOfHour());
346            assertEquals(30, test.getSecondOfMinute());
347            assertEquals(40, test.getMillisOfSecond());
348        }
349    
350        /**
351         * Test constructor (Object)
352         */
353        public void testConstructor_todObject() throws Throwable {
354            TimeOfDay base = new TimeOfDay(10, 20, 30, 40, CopticChronology.getInstance(PARIS));
355            TimeOfDay test = new TimeOfDay(base);
356            assertEquals(CopticChronology.getInstanceUTC(), test.getChronology());
357            assertEquals(10, test.getHourOfDay());
358            assertEquals(20, test.getMinuteOfHour());
359            assertEquals(30, test.getSecondOfMinute());
360            assertEquals(40, test.getMillisOfSecond());
361        }
362    
363        public void testConstructor_ObjectString1() throws Throwable {
364            TimeOfDay test = new TimeOfDay("10:20:30.040");
365            assertEquals(ISO_UTC, test.getChronology());
366            assertEquals(10, test.getHourOfDay());
367            assertEquals(20, test.getMinuteOfHour());
368            assertEquals(30, test.getSecondOfMinute());
369            assertEquals(40, test.getMillisOfSecond());
370        }
371    
372        public void testConstructor_ObjectString2() throws Throwable {
373            TimeOfDay test = new TimeOfDay("10:20:30.040+04:00");
374            assertEquals(ISO_UTC, test.getChronology());
375            assertEquals(10 + OFFSET - 4, test.getHourOfDay());
376            assertEquals(20, test.getMinuteOfHour());
377            assertEquals(30, test.getSecondOfMinute());
378            assertEquals(40, test.getMillisOfSecond());
379        }
380    
381        public void testConstructor_ObjectString3() throws Throwable {
382            TimeOfDay test = new TimeOfDay("T10:20:30.040");
383            assertEquals(ISO_UTC, test.getChronology());
384            assertEquals(10, test.getHourOfDay());
385            assertEquals(20, test.getMinuteOfHour());
386            assertEquals(30, test.getSecondOfMinute());
387            assertEquals(40, test.getMillisOfSecond());
388        }
389    
390        public void testConstructor_ObjectString4() throws Throwable {
391            TimeOfDay test = new TimeOfDay("T10:20:30.040+04:00");
392            assertEquals(ISO_UTC, test.getChronology());
393            assertEquals(10 + OFFSET - 4, test.getHourOfDay());
394            assertEquals(20, test.getMinuteOfHour());
395            assertEquals(30, test.getSecondOfMinute());
396            assertEquals(40, test.getMillisOfSecond());
397        }
398    
399        public void testConstructor_ObjectString5() throws Throwable {
400            TimeOfDay test = new TimeOfDay("10:20");
401            assertEquals(ISO_UTC, test.getChronology());
402            assertEquals(10, test.getHourOfDay());
403            assertEquals(20, test.getMinuteOfHour());
404            assertEquals(0, test.getSecondOfMinute());
405            assertEquals(0, test.getMillisOfSecond());
406        }
407    
408        public void testConstructor_ObjectString6() throws Throwable {
409            TimeOfDay test = new TimeOfDay("10");
410            assertEquals(ISO_UTC, test.getChronology());
411            assertEquals(10, test.getHourOfDay());
412            assertEquals(0, test.getMinuteOfHour());
413            assertEquals(0, test.getSecondOfMinute());
414            assertEquals(0, test.getMillisOfSecond());
415        }
416    
417        public void testConstructor_ObjectStringEx1() throws Throwable {
418            try {
419                new TimeOfDay("1970-04-06");
420                fail();
421            } catch (IllegalArgumentException ex) {}
422        }
423    
424        public void testConstructor_ObjectStringEx2() throws Throwable {
425            try {
426                new TimeOfDay("1970-04-06T+14:00");
427                fail();
428            } catch (IllegalArgumentException ex) {}
429        }
430    
431        public void testConstructor_ObjectStringEx3() throws Throwable {
432            try {
433                new TimeOfDay("1970-04-06T10:20:30.040");
434                fail();
435            } catch (IllegalArgumentException ex) {}
436        }
437    
438        public void testConstructor_ObjectStringEx4() throws Throwable {
439            try {
440                new TimeOfDay("1970-04-06T10:20:30.040+14:00");
441                fail();
442            } catch (IllegalArgumentException ex) {}
443        }
444    
445        //-----------------------------------------------------------------------
446        /**
447         * Test constructor (Object, Chronology)
448         */
449        public void testConstructor_Object_Chronology() throws Throwable {
450            Date date = new Date(TEST_TIME1);
451            TimeOfDay test = new TimeOfDay(date, JulianChronology.getInstance());
452            assertEquals(JulianChronology.getInstanceUTC(), test.getChronology());
453            assertEquals(1 + OFFSET, test.getHourOfDay());
454            assertEquals(2, test.getMinuteOfHour());
455            assertEquals(3, test.getSecondOfMinute());
456            assertEquals(4, test.getMillisOfSecond());
457        }
458    
459        /**
460         * Test constructor (Object, Chronology)
461         */
462        public void testConstructor2_Object_Chronology() throws Throwable {
463            TimeOfDay test = new TimeOfDay("T10:20");
464            assertEquals(10, test.getHourOfDay());
465            assertEquals(20, test.getMinuteOfHour());
466            assertEquals(0, test.getSecondOfMinute());
467            assertEquals(0, test.getMillisOfSecond());
468            
469            try {
470                new TimeOfDay("T1020");
471                fail();
472            } catch (IllegalArgumentException ex) {}
473        }
474    
475        /**
476         * Test constructor (Object=null, Chronology)
477         */
478        public void testConstructor_nullObject_Chronology() throws Throwable {
479            TimeOfDay test = new TimeOfDay((Object) null, JulianChronology.getInstance());
480            assertEquals(JulianChronology.getInstanceUTC(), test.getChronology());
481            assertEquals(10 + OFFSET, test.getHourOfDay());
482            assertEquals(20, test.getMinuteOfHour());
483            assertEquals(30, test.getSecondOfMinute());
484            assertEquals(40, test.getMillisOfSecond());
485        }
486    
487        /**
488         * Test constructor (Object, Chronology=null)
489         */
490        public void testConstructor_Object_nullChronology() throws Throwable {
491            Date date = new Date(TEST_TIME1);
492            TimeOfDay test = new TimeOfDay(date, null);
493            assertEquals(ISO_UTC, test.getChronology());
494            assertEquals(1 + OFFSET, test.getHourOfDay());
495            assertEquals(2, test.getMinuteOfHour());
496            assertEquals(3, test.getSecondOfMinute());
497            assertEquals(4, test.getMillisOfSecond());
498        }
499    
500        /**
501         * Test constructor (Object=null, Chronology=null)
502         */
503        public void testConstructor_nullObject_nullChronology() throws Throwable {
504            TimeOfDay test = new TimeOfDay((Object) null, null);
505            assertEquals(ISO_UTC, test.getChronology());
506            assertEquals(10 + OFFSET, test.getHourOfDay());
507            assertEquals(20, test.getMinuteOfHour());
508            assertEquals(30, test.getSecondOfMinute());
509            assertEquals(40, test.getMillisOfSecond());
510        }
511    
512        //-----------------------------------------------------------------------
513        /**
514         * Test constructor (int, int)
515         */
516        public void testConstructor_int_int() throws Throwable {
517            TimeOfDay test = new TimeOfDay(10, 20);
518            assertEquals(ISO_UTC, test.getChronology());
519            assertEquals(10, test.getHourOfDay());
520            assertEquals(20, test.getMinuteOfHour());
521            assertEquals(0, test.getSecondOfMinute());
522            assertEquals(0, test.getMillisOfSecond());
523            try {
524                new TimeOfDay(-1, 20);
525                fail();
526            } catch (IllegalArgumentException ex) {}
527            try {
528                new TimeOfDay(24, 20);
529                fail();
530            } catch (IllegalArgumentException ex) {}
531            try {
532                new TimeOfDay(10, -1);
533                fail();
534            } catch (IllegalArgumentException ex) {}
535            try {
536                new TimeOfDay(10, 60);
537                fail();
538            } catch (IllegalArgumentException ex) {}
539        }
540    
541        /**
542         * Test constructor (int, int, int, Chronology)
543         */
544        public void testConstructor_int_int_Chronology() throws Throwable {
545            TimeOfDay test = new TimeOfDay(10, 20, JulianChronology.getInstance());
546            assertEquals(JulianChronology.getInstanceUTC(), test.getChronology());
547            assertEquals(10, test.getHourOfDay());
548            assertEquals(20, test.getMinuteOfHour());
549            assertEquals(0, test.getSecondOfMinute());
550            assertEquals(0, test.getMillisOfSecond());
551            try {
552                new TimeOfDay(-1, 20, JulianChronology.getInstance());
553                fail();
554            } catch (IllegalArgumentException ex) {}
555            try {
556                new TimeOfDay(24, 20, JulianChronology.getInstance());
557                fail();
558            } catch (IllegalArgumentException ex) {}
559            try {
560                new TimeOfDay(10, -1, JulianChronology.getInstance());
561                fail();
562            } catch (IllegalArgumentException ex) {}
563            try {
564                new TimeOfDay(10, 60, JulianChronology.getInstance());
565                fail();
566            } catch (IllegalArgumentException ex) {}
567        }
568    
569        /**
570         * Test constructor (int, int, int, Chronology=null)
571         */
572        public void testConstructor_int_int_nullChronology() throws Throwable {
573            TimeOfDay test = new TimeOfDay(10, 20, null);
574            assertEquals(ISO_UTC, test.getChronology());
575            assertEquals(10, test.getHourOfDay());
576            assertEquals(20, test.getMinuteOfHour());
577            assertEquals(0, test.getSecondOfMinute());
578            assertEquals(0, test.getMillisOfSecond());
579        }
580    
581        /**
582         * Test constructor (int, int, int)
583         */
584        public void testConstructor_int_int_int() throws Throwable {
585            TimeOfDay test = new TimeOfDay(10, 20, 30);
586            assertEquals(ISO_UTC, test.getChronology());
587            assertEquals(10, test.getHourOfDay());
588            assertEquals(20, test.getMinuteOfHour());
589            assertEquals(30, test.getSecondOfMinute());
590            assertEquals(0, test.getMillisOfSecond());
591            try {
592                new TimeOfDay(-1, 20, 30);
593                fail();
594            } catch (IllegalArgumentException ex) {}
595            try {
596                new TimeOfDay(24, 20, 30);
597                fail();
598            } catch (IllegalArgumentException ex) {}
599            try {
600                new TimeOfDay(10, -1, 30);
601                fail();
602            } catch (IllegalArgumentException ex) {}
603            try {
604                new TimeOfDay(10, 60, 30);
605                fail();
606            } catch (IllegalArgumentException ex) {}
607            try {
608                new TimeOfDay(10, 20, -1);
609                fail();
610            } catch (IllegalArgumentException ex) {}
611            try {
612                new TimeOfDay(10, 20, 60);
613                fail();
614            } catch (IllegalArgumentException ex) {}
615        }
616    
617        /**
618         * Test constructor (int, int, int, Chronology)
619         */
620        public void testConstructor_int_int_int_Chronology() throws Throwable {
621            TimeOfDay test = new TimeOfDay(10, 20, 30, JulianChronology.getInstance());
622            assertEquals(JulianChronology.getInstanceUTC(), test.getChronology());
623            assertEquals(10, test.getHourOfDay());
624            assertEquals(20, test.getMinuteOfHour());
625            assertEquals(30, test.getSecondOfMinute());
626            assertEquals(0, test.getMillisOfSecond());
627            try {
628                new TimeOfDay(-1, 20, 30, JulianChronology.getInstance());
629                fail();
630            } catch (IllegalArgumentException ex) {}
631            try {
632                new TimeOfDay(24, 20, 30, JulianChronology.getInstance());
633                fail();
634            } catch (IllegalArgumentException ex) {}
635            try {
636                new TimeOfDay(10, -1, 30, JulianChronology.getInstance());
637                fail();
638            } catch (IllegalArgumentException ex) {}
639            try {
640                new TimeOfDay(10, 60, 30, JulianChronology.getInstance());
641                fail();
642            } catch (IllegalArgumentException ex) {}
643            try {
644                new TimeOfDay(10, 20, -1, JulianChronology.getInstance());
645                fail();
646            } catch (IllegalArgumentException ex) {}
647            try {
648                new TimeOfDay(10, 20, 60, JulianChronology.getInstance());
649                fail();
650            } catch (IllegalArgumentException ex) {}
651        }
652    
653        /**
654         * Test constructor (int, int, int, Chronology=null)
655         */
656        public void testConstructor_int_int_int_nullChronology() throws Throwable {
657            TimeOfDay test = new TimeOfDay(10, 20, 30, null);
658            assertEquals(ISO_UTC, test.getChronology());
659            assertEquals(10, test.getHourOfDay());
660            assertEquals(20, test.getMinuteOfHour());
661            assertEquals(30, test.getSecondOfMinute());
662            assertEquals(0, test.getMillisOfSecond());
663        }
664    
665        /**
666         * Test constructor (int, int, int, int)
667         */
668        public void testConstructor_int_int_int_int() throws Throwable {
669            TimeOfDay test = new TimeOfDay(10, 20, 30, 40);
670            assertEquals(ISO_UTC, test.getChronology());
671            assertEquals(10, test.getHourOfDay());
672            assertEquals(20, test.getMinuteOfHour());
673            assertEquals(30, test.getSecondOfMinute());
674            assertEquals(40, test.getMillisOfSecond());
675            try {
676                new TimeOfDay(-1, 20, 30, 40);
677                fail();
678            } catch (IllegalArgumentException ex) {}
679            try {
680                new TimeOfDay(24, 20, 30, 40);
681                fail();
682            } catch (IllegalArgumentException ex) {}
683            try {
684                new TimeOfDay(10, -1, 30, 40);
685                fail();
686            } catch (IllegalArgumentException ex) {}
687            try {
688                new TimeOfDay(10, 60, 30, 40);
689                fail();
690            } catch (IllegalArgumentException ex) {}
691            try {
692                new TimeOfDay(10, 20, -1, 40);
693                fail();
694            } catch (IllegalArgumentException ex) {}
695            try {
696                new TimeOfDay(10, 20, 60, 40);
697                fail();
698            } catch (IllegalArgumentException ex) {}
699            try {
700                new TimeOfDay(10, 20, 30, -1);
701                fail();
702            } catch (IllegalArgumentException ex) {}
703            try {
704                new TimeOfDay(10, 20, 30, 1000);
705                fail();
706            } catch (IllegalArgumentException ex) {}
707        }
708    
709        /**
710         * Test constructor (int, int, int, int, Chronology)
711         */
712        public void testConstructor_int_int_int_int_Chronology() throws Throwable {
713            TimeOfDay test = new TimeOfDay(10, 20, 30, 40, JulianChronology.getInstance());
714            assertEquals(JulianChronology.getInstanceUTC(), test.getChronology());
715            assertEquals(10, test.getHourOfDay());
716            assertEquals(20, test.getMinuteOfHour());
717            assertEquals(30, test.getSecondOfMinute());
718            assertEquals(40, test.getMillisOfSecond());
719            try {
720                new TimeOfDay(-1, 20, 30, 40, JulianChronology.getInstance());
721                fail();
722            } catch (IllegalArgumentException ex) {}
723            try {
724                new TimeOfDay(24, 20, 30, 40, JulianChronology.getInstance());
725                fail();
726            } catch (IllegalArgumentException ex) {}
727            try {
728                new TimeOfDay(10, -1, 30, 40, JulianChronology.getInstance());
729                fail();
730            } catch (IllegalArgumentException ex) {}
731            try {
732                new TimeOfDay(10, 60, 30, 40, JulianChronology.getInstance());
733                fail();
734            } catch (IllegalArgumentException ex) {}
735            try {
736                new TimeOfDay(10, 20, -1, 40, JulianChronology.getInstance());
737                fail();
738            } catch (IllegalArgumentException ex) {}
739            try {
740                new TimeOfDay(10, 20, 60, 40, JulianChronology.getInstance());
741                fail();
742            } catch (IllegalArgumentException ex) {}
743            try {
744                new TimeOfDay(10, 20, 30, -1, JulianChronology.getInstance());
745                fail();
746            } catch (IllegalArgumentException ex) {}
747            try {
748                new TimeOfDay(10, 20, 30, 1000, JulianChronology.getInstance());
749                fail();
750            } catch (IllegalArgumentException ex) {}
751        }
752    
753        /**
754         * Test constructor (int, int, int, int, Chronology=null)
755         */
756        public void testConstructor_int_int_int_int_nullChronology() throws Throwable {
757            TimeOfDay test = new TimeOfDay(10, 20, 30, 40, null);
758            assertEquals(ISO_UTC, test.getChronology());
759            assertEquals(10, test.getHourOfDay());
760            assertEquals(20, test.getMinuteOfHour());
761            assertEquals(30, test.getSecondOfMinute());
762            assertEquals(40, test.getMillisOfSecond());
763        }
764    
765    }