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