001    /*
002     *  Copyright 2001-2013 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.GregorianChronology;
027    import org.joda.time.chrono.ISOChronology;
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 LocalDate.
033     *
034     * @author Stephen Colebourne
035     */
036    public class TestLocalDate_Constructors extends TestCase {
037    
038        private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris");
039        private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London");
040        private static final Chronology ISO_UTC = ISOChronology.getInstanceUTC();
041        private static final Chronology BUDDHIST_UTC = BuddhistChronology.getInstanceUTC();
042        private static final Chronology GREGORIAN_UTC = GregorianChronology.getInstanceUTC();
043        private static final Chronology GREGORIAN_PARIS = GregorianChronology.getInstance(PARIS);
044        
045        private long TEST_TIME_NOW =
046                (31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY;
047                
048        private long TEST_TIME1 =
049            (31L + 28L + 31L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY
050            + 12L * DateTimeConstants.MILLIS_PER_HOUR
051            + 24L * DateTimeConstants.MILLIS_PER_MINUTE;
052        private long TEST_TIME1_ROUNDED =
053            (31L + 28L + 31L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY;
054        private long TEST_TIME2 =
055            (365L + 31L + 28L + 31L + 30L + 7L -1L) * DateTimeConstants.MILLIS_PER_DAY
056            + 14L * DateTimeConstants.MILLIS_PER_HOUR
057            + 28L * DateTimeConstants.MILLIS_PER_MINUTE;
058    
059        private DateTimeZone zone = null;
060    
061        public static void main(String[] args) {
062            junit.textui.TestRunner.run(suite());
063        }
064    
065        public static TestSuite suite() {
066            return new TestSuite(TestLocalDate_Constructors.class);
067        }
068    
069        public TestLocalDate_Constructors(String name) {
070            super(name);
071        }
072    
073        protected void setUp() throws Exception {
074            DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW);
075            zone = DateTimeZone.getDefault();
076            DateTimeZone.setDefault(LONDON);
077        }
078    
079        protected void tearDown() throws Exception {
080            DateTimeUtils.setCurrentMillisSystem();
081            DateTimeZone.setDefault(zone);
082            zone = null;
083        }
084    
085        //-----------------------------------------------------------------------
086        public void testParse_noFormatter() throws Throwable {
087            assertEquals(new LocalDate(2010, 6, 30), LocalDate.parse("2010-06-30"));
088            assertEquals(new LocalDate(2010, 1, 2), LocalDate.parse("2010-002"));
089        }
090    
091        public void testParse_formatter() throws Throwable {
092            DateTimeFormatter f = DateTimeFormat.forPattern("yyyy--dd MM").withChronology(ISOChronology.getInstance(PARIS));
093            assertEquals(new LocalDate(2010, 6, 30), LocalDate.parse("2010--30 06", f));
094        }
095    
096        //-----------------------------------------------------------------------
097        public void testFactory_fromCalendarFields() throws Exception {
098            GregorianCalendar cal = new GregorianCalendar(1970, 1, 3, 4, 5, 6);
099            cal.set(Calendar.MILLISECOND, 7);
100            LocalDate expected = new LocalDate(1970, 2, 3);
101            assertEquals(expected, LocalDate.fromCalendarFields(cal));
102        }
103    
104        public void testFactory_fromCalendarFields_beforeYearZero1() throws Exception {
105            GregorianCalendar cal = new GregorianCalendar(1, 1, 3, 4, 5, 6);
106            cal.set(Calendar.ERA, GregorianCalendar.BC);
107            cal.set(Calendar.MILLISECOND, 7);
108            LocalDate expected = new LocalDate(0, 2, 3);
109            assertEquals(expected, LocalDate.fromCalendarFields(cal));
110        }
111    
112        public void testFactory_fromCalendarFields_beforeYearZero3() throws Exception {
113            GregorianCalendar cal = new GregorianCalendar(3, 1, 3, 4, 5, 6);
114            cal.set(Calendar.ERA, GregorianCalendar.BC);
115            cal.set(Calendar.MILLISECOND, 7);
116            LocalDate expected = new LocalDate(-2, 2, 3);
117            assertEquals(expected, LocalDate.fromCalendarFields(cal));
118        }
119    
120        public void testFactory_fromCalendarFields_null() throws Exception {
121            try {
122                LocalDate.fromCalendarFields((Calendar) null);
123                fail();
124            } catch (IllegalArgumentException ex) {}
125        }
126    
127        //-----------------------------------------------------------------------
128        public void testFactory_fromDateFields_after1970() throws Exception {
129            GregorianCalendar cal = new GregorianCalendar(1970, 1, 3, 4, 5, 6);
130            cal.set(Calendar.MILLISECOND, 7);
131            LocalDate expected = new LocalDate(1970, 2, 3);
132            assertEquals(expected, LocalDate.fromDateFields(cal.getTime()));
133        }
134    
135        public void testFactory_fromDateFields_before1970() throws Exception {
136            GregorianCalendar cal = new GregorianCalendar(1969, 1, 3, 4, 5, 6);
137            cal.set(Calendar.MILLISECOND, 7);
138            LocalDate expected = new LocalDate(1969, 2, 3);
139            assertEquals(expected, LocalDate.fromDateFields(cal.getTime()));
140        }
141    
142        public void testFactory_fromDateFields_beforeYearZero1() throws Exception {
143            GregorianCalendar cal = new GregorianCalendar(1, 1, 3, 4, 5, 6);
144            cal.set(Calendar.ERA, GregorianCalendar.BC);
145            cal.set(Calendar.MILLISECOND, 7);
146            LocalDate expected = new LocalDate(0, 2, 3);
147            assertEquals(expected, LocalDate.fromDateFields(cal.getTime()));
148        }
149    
150        public void testFactory_fromDateFields_beforeYearZero3() throws Exception {
151            GregorianCalendar cal = new GregorianCalendar(3, 1, 3, 4, 5, 6);
152            cal.set(Calendar.ERA, GregorianCalendar.BC);
153            cal.set(Calendar.MILLISECOND, 7);
154            LocalDate expected = new LocalDate(-2, 2, 3);
155            assertEquals(expected, LocalDate.fromDateFields(cal.getTime()));
156        }
157    
158        public void testFactory_fromDateFields_null() throws Exception {
159            try {
160                LocalDate.fromDateFields((Date) null);
161                fail();
162            } catch (IllegalArgumentException ex) {}
163        }
164    
165        //-----------------------------------------------------------------------
166        public void testConstructor() throws Throwable {
167            LocalDate test = new LocalDate();
168            assertEquals(ISO_UTC, test.getChronology());
169            assertEquals(1970, test.getYear());
170            assertEquals(6, test.getMonthOfYear());
171            assertEquals(9, test.getDayOfMonth());
172            assertEquals(test, LocalDate.now());
173        }
174    
175        public void testConstructor_DateTimeZone() throws Throwable {
176            DateTime dt = new DateTime(2005, 6, 8, 23, 59, 0, 0, LONDON);
177            DateTimeUtils.setCurrentMillisFixed(dt.getMillis());
178            // 23:59 in London is 00:59 the following day in Paris
179            
180            LocalDate test = new LocalDate(LONDON);
181            assertEquals(ISO_UTC, test.getChronology());
182            assertEquals(2005, test.getYear());
183            assertEquals(6, test.getMonthOfYear());
184            assertEquals(8, test.getDayOfMonth());
185            assertEquals(test, LocalDate.now(LONDON));
186            
187            test = new LocalDate(PARIS);
188            assertEquals(ISO_UTC, test.getChronology());
189            assertEquals(2005, test.getYear());
190            assertEquals(6, test.getMonthOfYear());
191            assertEquals(9, test.getDayOfMonth());
192            assertEquals(test, LocalDate.now(PARIS));
193        }
194    
195        public void testConstructor_nullDateTimeZone() throws Throwable {
196            DateTime dt = new DateTime(2005, 6, 8, 23, 59, 0, 0, LONDON);
197            DateTimeUtils.setCurrentMillisFixed(dt.getMillis());
198            // 23:59 in London is 00:59 the following day in Paris
199            
200            LocalDate test = new LocalDate((DateTimeZone) null);
201            assertEquals(ISO_UTC, test.getChronology());
202            assertEquals(2005, test.getYear());
203            assertEquals(6, test.getMonthOfYear());
204            assertEquals(8, test.getDayOfMonth());
205        }
206    
207        public void testConstructor_Chronology() throws Throwable {
208            LocalDate test = new LocalDate(GREGORIAN_PARIS);
209            assertEquals(GREGORIAN_UTC, test.getChronology());
210            assertEquals(1970, test.getYear());
211            assertEquals(6, test.getMonthOfYear());
212            assertEquals(9, test.getDayOfMonth());
213            assertEquals(test, LocalDate.now(GREGORIAN_PARIS));
214        }
215    
216        public void testConstructor_nullChronology() throws Throwable {
217            LocalDate test = new LocalDate((Chronology) null);
218            assertEquals(ISO_UTC, test.getChronology());
219            assertEquals(1970, test.getYear());
220            assertEquals(6, test.getMonthOfYear());
221            assertEquals(9, test.getDayOfMonth());
222        }
223    
224        //-----------------------------------------------------------------------
225        public void testConstructor_long1() throws Throwable {
226            LocalDate test = new LocalDate(TEST_TIME1);
227            assertEquals(ISO_UTC, test.getChronology());
228            assertEquals(1970, test.getYear());
229            assertEquals(4, test.getMonthOfYear());
230            assertEquals(6, test.getDayOfMonth());
231        }
232    
233        public void testConstructor_long2() throws Throwable {
234            LocalDate test = new LocalDate(TEST_TIME2);
235            assertEquals(ISO_UTC, test.getChronology());
236            assertEquals(1971, test.getYear());
237            assertEquals(5, test.getMonthOfYear());
238            assertEquals(7, test.getDayOfMonth());
239        }
240    
241        public void testConstructor_long1_DateTimeZone() throws Throwable {
242            LocalDate test = new LocalDate(TEST_TIME1, PARIS);
243            assertEquals(ISO_UTC, test.getChronology());
244            assertEquals(1970, test.getYear());
245            assertEquals(4, test.getMonthOfYear());
246            assertEquals(6, test.getDayOfMonth());
247            assertEquals(TEST_TIME1_ROUNDED, test.getLocalMillis());
248        }
249    
250        public void testConstructor_long2_DateTimeZone() throws Throwable {
251            LocalDate test = new LocalDate(TEST_TIME2, PARIS);
252            assertEquals(ISO_UTC, test.getChronology());
253            assertEquals(1971, test.getYear());
254            assertEquals(5, test.getMonthOfYear());
255            assertEquals(7, test.getDayOfMonth());
256        }
257    
258        public void testConstructor_long3_DateTimeZone() throws Throwable {
259            DateTime dt = new DateTime(2006, 6, 9, 0, 0, 0, 0, PARIS);
260            DateTime dtUTC = new DateTime(2006, 6, 9, 0, 0, 0, 0, DateTimeZone.UTC);
261            
262            LocalDate test = new LocalDate(dt.getMillis(), PARIS);
263            assertEquals(ISO_UTC, test.getChronology());
264            assertEquals(2006, test.getYear());
265            assertEquals(6, test.getMonthOfYear());
266            assertEquals(9, test.getDayOfMonth());
267            assertEquals(dtUTC.getMillis(), test.getLocalMillis());
268        }
269    
270        public void testConstructor_long4_DateTimeZone() throws Throwable {
271            DateTime dt = new DateTime(2006, 6, 9, 23, 59, 59, 999, PARIS);
272            DateTime dtUTC = new DateTime(2006, 6, 9, 0, 0, 0, 0, DateTimeZone.UTC);
273            
274            LocalDate test = new LocalDate(dt.getMillis(), PARIS);
275            assertEquals(ISO_UTC, test.getChronology());
276            assertEquals(2006, test.getYear());
277            assertEquals(6, test.getMonthOfYear());
278            assertEquals(9, test.getDayOfMonth());
279            assertEquals(dtUTC.getMillis(), test.getLocalMillis());
280        }
281    
282        public void testConstructor_long_nullDateTimeZone() throws Throwable {
283            LocalDate test = new LocalDate(TEST_TIME1, (DateTimeZone) null);
284            assertEquals(ISO_UTC, test.getChronology());
285            assertEquals(1970, test.getYear());
286            assertEquals(4, test.getMonthOfYear());
287            assertEquals(6, test.getDayOfMonth());
288        }
289    
290        public void testConstructor_long1_Chronology() throws Throwable {
291            LocalDate test = new LocalDate(TEST_TIME1, GREGORIAN_PARIS);
292            assertEquals(GREGORIAN_UTC, test.getChronology());
293            assertEquals(1970, test.getYear());
294            assertEquals(4, test.getMonthOfYear());
295            assertEquals(6, test.getDayOfMonth());
296        }
297    
298        public void testConstructor_long2_Chronology() throws Throwable {
299            LocalDate test = new LocalDate(TEST_TIME2, GREGORIAN_PARIS);
300            assertEquals(GREGORIAN_UTC, test.getChronology());
301            assertEquals(1971, test.getYear());
302            assertEquals(5, test.getMonthOfYear());
303            assertEquals(7, test.getDayOfMonth());
304        }
305    
306        public void testConstructor_long_nullChronology() throws Throwable {
307            LocalDate test = new LocalDate(TEST_TIME1, (Chronology) null);
308            assertEquals(ISO_UTC, test.getChronology());
309            assertEquals(1970, test.getYear());
310            assertEquals(4, test.getMonthOfYear());
311            assertEquals(6, test.getDayOfMonth());
312        }
313    
314        //-----------------------------------------------------------------------
315        public void testConstructor_Object1() throws Throwable {
316            Date date = new Date(TEST_TIME1);
317            LocalDate test = new LocalDate(date);
318            assertEquals(ISO_UTC, test.getChronology());
319            assertEquals(1970, test.getYear());
320            assertEquals(4, test.getMonthOfYear());
321            assertEquals(6, test.getDayOfMonth());
322        }
323    
324        public void testConstructor_nullObject() throws Throwable {
325            LocalDate test = new LocalDate((Object) null);
326            assertEquals(ISO_UTC, test.getChronology());
327            assertEquals(1970, test.getYear());
328            assertEquals(6, test.getMonthOfYear());
329            assertEquals(9, test.getDayOfMonth());
330        }
331    
332        public void testConstructor_ObjectString1() throws Throwable {
333            LocalDate test = new LocalDate("1972-04-06");
334            assertEquals(ISO_UTC, test.getChronology());
335            assertEquals(1972, test.getYear());
336            assertEquals(4, test.getMonthOfYear());
337            assertEquals(6, test.getDayOfMonth());
338        }
339    
340        public void testConstructor_ObjectString2() throws Throwable {
341            LocalDate test = new LocalDate("1972-037");
342            assertEquals(ISO_UTC, test.getChronology());
343            assertEquals(1972, test.getYear());
344            assertEquals(2, test.getMonthOfYear());
345            assertEquals(6, test.getDayOfMonth());
346        }
347    
348        public void testConstructor_ObjectString3() throws Throwable {
349            LocalDate test = new LocalDate("1972-02");
350            assertEquals(ISO_UTC, test.getChronology());
351            assertEquals(1972, test.getYear());
352            assertEquals(2, test.getMonthOfYear());
353            assertEquals(1, test.getDayOfMonth());
354        }
355    
356        public void testConstructor_ObjectStringEx1() throws Throwable {
357            try {
358                new LocalDate("1970-04-06T+14:00");
359                fail();
360            } catch (IllegalArgumentException ex) {}
361        }
362    
363        public void testConstructor_ObjectStringEx2() throws Throwable {
364            try {
365                new LocalDate("1970-04-06T10:20:30.040");
366                fail();
367            } catch (IllegalArgumentException ex) {}
368        }
369    
370        public void testConstructor_ObjectStringEx3() throws Throwable {
371            try {
372                new LocalDate("1970-04-06T10:20:30.040+14:00");
373                fail();
374            } catch (IllegalArgumentException ex) {}
375        }
376    
377        public void testConstructor_ObjectStringEx4() throws Throwable {
378            try {
379                new LocalDate("T10:20:30.040");
380                fail();
381            } catch (IllegalArgumentException ex) {}
382        }
383    
384        public void testConstructor_ObjectStringEx5() throws Throwable {
385            try {
386                new LocalDate("T10:20:30.040+14:00");
387                fail();
388            } catch (IllegalArgumentException ex) {}
389        }
390    
391        public void testConstructor_ObjectStringEx6() throws Throwable {
392            try {
393                new LocalDate("10:20:30.040");
394                fail();
395            } catch (IllegalArgumentException ex) {}
396        }
397    
398        public void testConstructor_ObjectStringEx7() throws Throwable {
399            try {
400                new LocalDate("10:20:30.040+14:00");
401                fail();
402            } catch (IllegalArgumentException ex) {}
403        }
404    
405        public void testConstructor_ObjectLocalDate() throws Throwable {
406            LocalDate date = new LocalDate(1970, 4, 6, BUDDHIST_UTC);
407            LocalDate test = new LocalDate(date);
408            assertEquals(BUDDHIST_UTC, test.getChronology());
409            assertEquals(1970, test.getYear());
410            assertEquals(4, test.getMonthOfYear());
411            assertEquals(6, test.getDayOfMonth());
412        }
413    
414        public void testConstructor_ObjectLocalTime() throws Throwable {
415            LocalTime time = new LocalTime(10, 20, 30, 40, BUDDHIST_UTC);
416            try {
417                new LocalDate(time);
418                fail();
419            } catch (IllegalArgumentException ex) {}
420        }
421    
422        public void testConstructor_ObjectLocalDateTime() throws Throwable {
423            LocalDateTime dt = new LocalDateTime(1970, 5, 6, 10, 20, 30, 40, BUDDHIST_UTC);
424            LocalDate test = new LocalDate(dt);
425            assertEquals(BUDDHIST_UTC, test.getChronology());
426            assertEquals(1970, test.getYear());
427            assertEquals(5, test.getMonthOfYear());
428            assertEquals(6, test.getDayOfMonth());
429        }
430    
431        @SuppressWarnings("deprecation")
432        public void testConstructor_ObjectYearMonthDay() throws Throwable {
433            YearMonthDay date = new YearMonthDay(1970, 4, 6, BUDDHIST_UTC);
434            LocalDate test = new LocalDate(date);
435            assertEquals(BUDDHIST_UTC, test.getChronology());
436            assertEquals(1970, test.getYear());
437            assertEquals(4, test.getMonthOfYear());
438            assertEquals(6, test.getDayOfMonth());
439        }
440    
441        //-----------------------------------------------------------------------
442        public void testConstructor_Object_DateTimeZone() throws Throwable {
443            Date date = new Date(TEST_TIME1);
444            LocalDate test = new LocalDate(date, PARIS);
445            assertEquals(ISO_UTC, test.getChronology());
446            assertEquals(1970, test.getYear());
447            assertEquals(4, test.getMonthOfYear());
448            assertEquals(6, test.getDayOfMonth());
449        }
450    
451        public void testConstructor_nullObject_DateTimeZone() throws Throwable {
452            LocalDate test = new LocalDate((Object) null, PARIS);
453            assertEquals(ISO_UTC, test.getChronology());
454            assertEquals(1970, test.getYear());
455            assertEquals(6, test.getMonthOfYear());
456            assertEquals(9, test.getDayOfMonth());
457        }
458    
459        public void testConstructor_Object_nullDateTimeZone() throws Throwable {
460            Date date = new Date(TEST_TIME1);
461            LocalDate test = new LocalDate(date, (DateTimeZone) null);
462            assertEquals(ISO_UTC, test.getChronology());
463            assertEquals(1970, test.getYear());
464            assertEquals(4, test.getMonthOfYear());
465            assertEquals(6, test.getDayOfMonth());
466        }
467    
468        public void testConstructor_nullObject_nullDateTimeZone() throws Throwable {
469            LocalDate test = new LocalDate((Object) null, (DateTimeZone) null);
470            assertEquals(ISO_UTC, test.getChronology());
471            assertEquals(1970, test.getYear());
472            assertEquals(6, test.getMonthOfYear());
473            assertEquals(9, test.getDayOfMonth());
474        }
475    
476        public void testConstructor_Object_Chronology() throws Throwable {
477            Date date = new Date(TEST_TIME1);
478            LocalDate test = new LocalDate(date, GREGORIAN_PARIS);
479            assertEquals(GREGORIAN_UTC, test.getChronology());
480            assertEquals(1970, test.getYear());
481            assertEquals(4, test.getMonthOfYear());
482            assertEquals(6, test.getDayOfMonth());
483        }
484    
485        public void testConstructor_Object_Chronology_crossChronology() throws Throwable {
486            LocalDate input = new LocalDate(1970, 4, 6, ISO_UTC);
487            LocalDate test = new LocalDate(input, BUDDHIST_UTC);
488            assertEquals(BUDDHIST_UTC, test.getChronology());
489            assertEquals(1970, test.getYear());
490            assertEquals(4, test.getMonthOfYear());
491            assertEquals(6, test.getDayOfMonth());
492        }
493    
494        public void testConstructor_nullObject_Chronology() throws Throwable {
495            LocalDate test = new LocalDate((Object) null, GREGORIAN_PARIS);
496            assertEquals(GREGORIAN_UTC, test.getChronology());
497            assertEquals(1970, test.getYear());
498            assertEquals(6, test.getMonthOfYear());
499            assertEquals(9, test.getDayOfMonth());
500        }
501    
502        public void testConstructor_Object_nullChronology() throws Throwable {
503            Date date = new Date(TEST_TIME1);
504            LocalDate test = new LocalDate(date, (Chronology) null);
505            assertEquals(ISO_UTC, test.getChronology());
506            assertEquals(1970, test.getYear());
507            assertEquals(4, test.getMonthOfYear());
508            assertEquals(6, test.getDayOfMonth());
509        }
510    
511        public void testConstructor_nullObject_nullChronology() throws Throwable {
512            LocalDate test = new LocalDate((Object) null, (Chronology) null);
513            assertEquals(ISO_UTC, test.getChronology());
514            assertEquals(1970, test.getYear());
515            assertEquals(6, test.getMonthOfYear());
516            assertEquals(9, test.getDayOfMonth());
517        }
518    
519        //-----------------------------------------------------------------------
520        public void testConstructor_int_int_int() throws Throwable {
521            LocalDate test = new LocalDate(1970, 6, 9);
522            assertEquals(ISO_UTC, test.getChronology());
523            assertEquals(1970, test.getYear());
524            assertEquals(6, test.getMonthOfYear());
525            assertEquals(9, test.getDayOfMonth());
526            try {
527                new LocalDate(Integer.MIN_VALUE, 6, 9);
528                fail();
529            } catch (IllegalArgumentException ex) {}
530            try {
531                new LocalDate(Integer.MAX_VALUE, 6, 9);
532                fail();
533            } catch (IllegalArgumentException ex) {}
534            try {
535                new LocalDate(1970, 0, 9);
536                fail();
537            } catch (IllegalArgumentException ex) {}
538            try {
539                new LocalDate(1970, 13, 9);
540                fail();
541            } catch (IllegalArgumentException ex) {}
542            try {
543                new LocalDate(1970, 6, 0);
544                fail();
545            } catch (IllegalArgumentException ex) {}
546            try {
547                new LocalDate(1970, 6, 31);
548                fail();
549            } catch (IllegalArgumentException ex) {}
550            new LocalDate(1970, 7, 31);
551            try {
552                new LocalDate(1970, 7, 32);
553                fail();
554            } catch (IllegalArgumentException ex) {}
555        }
556    
557        public void testConstructor_int_int_int_Chronology() throws Throwable {
558            LocalDate test = new LocalDate(1970, 6, 9, GREGORIAN_PARIS);
559            assertEquals(GREGORIAN_UTC, test.getChronology());
560            assertEquals(1970, test.getYear());
561            assertEquals(6, test.getMonthOfYear());
562            assertEquals(9, test.getDayOfMonth());
563            try {
564                new LocalDate(Integer.MIN_VALUE, 6, 9, GREGORIAN_PARIS);
565                fail();
566            } catch (IllegalArgumentException ex) {}
567            try {
568                new LocalDate(Integer.MAX_VALUE, 6, 9, GREGORIAN_PARIS);
569                fail();
570            } catch (IllegalArgumentException ex) {}
571            try {
572                new LocalDate(1970, 0, 9, GREGORIAN_PARIS);
573                fail();
574            } catch (IllegalArgumentException ex) {}
575            try {
576                new LocalDate(1970, 13, 9, GREGORIAN_PARIS);
577                fail();
578            } catch (IllegalArgumentException ex) {}
579            try {
580                new LocalDate(1970, 6, 0, GREGORIAN_PARIS);
581                fail();
582            } catch (IllegalArgumentException ex) {}
583            try {
584                new LocalDate(1970, 6, 31, GREGORIAN_PARIS);
585                fail();
586            } catch (IllegalArgumentException ex) {}
587            new LocalDate(1970, 7, 31, GREGORIAN_PARIS);
588            try {
589                new LocalDate(1970, 7, 32, GREGORIAN_PARIS);
590                fail();
591            } catch (IllegalArgumentException ex) {}
592        }
593    
594        public void testConstructor_int_int_int_nullChronology() throws Throwable {
595            LocalDate test = new LocalDate(1970, 6, 9, null);
596            assertEquals(ISO_UTC, test.getChronology());
597            assertEquals(1970, test.getYear());
598            assertEquals(6, test.getMonthOfYear());
599            assertEquals(9, test.getDayOfMonth());
600        }
601    
602    }