001    /*
002     *  Copyright 2001-2005 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.Locale;
019    import java.util.TimeZone;
020    
021    import junit.framework.TestCase;
022    import junit.framework.TestSuite;
023    
024    import org.joda.time.chrono.BuddhistChronology;
025    import org.joda.time.chrono.GregorianChronology;
026    import org.joda.time.chrono.ISOChronology;
027    
028    /**
029     * This class is a JUnit test for MutableDateTime.
030     *
031     * @author Stephen Colebourne
032     */
033    public class TestMutableDateTime_Sets extends TestCase {
034        // Test in 2002/03 as time zones are more well known
035        // (before the late 90's they were all over the place)
036    
037        private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris");
038        private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London");
039        
040        long y2002days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 
041                         366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 
042                         365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
043                         366 + 365;
044        long y2003days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 
045                         366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 
046                         365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
047                         366 + 365 + 365;
048        
049        // 2002-06-09
050        private long TEST_TIME_NOW =
051                (y2002days + 31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY;
052                
053        // 2002-04-05
054        private long TEST_TIME1 =
055                (y2002days + 31L + 28L + 31L + 5L -1L) * DateTimeConstants.MILLIS_PER_DAY
056                + 12L * DateTimeConstants.MILLIS_PER_HOUR
057                + 24L * DateTimeConstants.MILLIS_PER_MINUTE;
058            
059        // 2003-05-06
060        private long TEST_TIME2 =
061                (y2003days + 31L + 28L + 31L + 30L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY
062                + 14L * DateTimeConstants.MILLIS_PER_HOUR
063                + 28L * DateTimeConstants.MILLIS_PER_MINUTE;
064        
065        private DateTimeZone originalDateTimeZone = null;
066        private TimeZone originalTimeZone = null;
067        private Locale originalLocale = null;
068    
069        public static void main(String[] args) {
070            junit.textui.TestRunner.run(suite());
071        }
072    
073        public static TestSuite suite() {
074            return new TestSuite(TestMutableDateTime_Sets.class);
075        }
076    
077        public TestMutableDateTime_Sets(String name) {
078            super(name);
079        }
080    
081        protected void setUp() throws Exception {
082            DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW);
083            originalDateTimeZone = DateTimeZone.getDefault();
084            originalTimeZone = TimeZone.getDefault();
085            originalLocale = Locale.getDefault();
086            DateTimeZone.setDefault(LONDON);
087            TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
088            Locale.setDefault(Locale.UK);
089        }
090    
091        protected void tearDown() throws Exception {
092            DateTimeUtils.setCurrentMillisSystem();
093            DateTimeZone.setDefault(originalDateTimeZone);
094            TimeZone.setDefault(originalTimeZone);
095            Locale.setDefault(originalLocale);
096            originalDateTimeZone = null;
097            originalTimeZone = null;
098            originalLocale = null;
099        }
100    
101        //-----------------------------------------------------------------------
102        public void testTest() {
103            assertEquals("2002-06-09T00:00:00.000Z", new Instant(TEST_TIME_NOW).toString());
104            assertEquals("2002-04-05T12:24:00.000Z", new Instant(TEST_TIME1).toString());
105            assertEquals("2003-05-06T14:28:00.000Z", new Instant(TEST_TIME2).toString());
106        }
107    
108        //-----------------------------------------------------------------------
109        public void testSetMillis_long1() {
110            MutableDateTime test = new MutableDateTime(TEST_TIME1);
111            test.setMillis(TEST_TIME2);
112            assertEquals(TEST_TIME2, test.getMillis());
113            assertEquals(ISOChronology.getInstance(), test.getChronology());
114        }
115    
116        //-----------------------------------------------------------------------
117        public void testSetChronology_Chronology1() {
118            MutableDateTime test = new MutableDateTime(TEST_TIME1);
119            test.setChronology(GregorianChronology.getInstance(PARIS));
120            assertEquals(TEST_TIME1, test.getMillis());
121            assertEquals(GregorianChronology.getInstance(PARIS), test.getChronology());
122        }        
123    
124        public void testSetChronology_Chronology2() {
125            MutableDateTime test = new MutableDateTime(TEST_TIME1);
126            test.setChronology(null);
127            assertEquals(TEST_TIME1, test.getMillis());
128            assertEquals(ISOChronology.getInstance(), test.getChronology());
129        }
130    
131        //-----------------------------------------------------------------------
132        public void testSetZone_DateTimeZone1() {
133            MutableDateTime test = new MutableDateTime(TEST_TIME1);
134            test.setZone(PARIS);
135            assertEquals(TEST_TIME1, test.getMillis());
136            assertEquals(ISOChronology.getInstance(PARIS), test.getChronology());
137        }        
138    
139        public void testSetZone_DateTimeZone2() {
140            MutableDateTime test = new MutableDateTime(TEST_TIME1);
141            test.setZone(null);
142            assertEquals(TEST_TIME1, test.getMillis());
143            assertEquals(ISOChronology.getInstance(), test.getChronology());
144        }        
145    
146        //-----------------------------------------------------------------------
147        public void testSetZoneRetainFields_DateTimeZone1() {
148            MutableDateTime test = new MutableDateTime(TEST_TIME1);
149            test.setZoneRetainFields(PARIS);
150            assertEquals(TEST_TIME1 - DateTimeConstants.MILLIS_PER_HOUR, test.getMillis());
151            assertEquals(ISOChronology.getInstance(PARIS), test.getChronology());
152        }        
153    
154        public void testSetZoneRetainFields_DateTimeZone2() {
155            MutableDateTime test = new MutableDateTime(TEST_TIME1);
156            test.setZoneRetainFields(null);
157            assertEquals(TEST_TIME1, test.getMillis());
158            assertEquals(ISOChronology.getInstance(), test.getChronology());
159        }        
160    
161        public void testSetZoneRetainFields_DateTimeZone3() {
162            MutableDateTime test = new MutableDateTime(TEST_TIME1, GregorianChronology.getInstance(PARIS));
163            test.setZoneRetainFields(null);
164            assertEquals(TEST_TIME1 + DateTimeConstants.MILLIS_PER_HOUR, test.getMillis());
165            assertEquals(GregorianChronology.getInstance(), test.getChronology());
166        }        
167    
168        public void testSetZoneRetainFields_DateTimeZone4() {
169            Chronology chrono = new MockNullZoneChronology();
170            MutableDateTime test = new MutableDateTime(TEST_TIME1, chrono);
171            test.setZoneRetainFields(PARIS);
172            assertEquals(TEST_TIME1 - DateTimeConstants.MILLIS_PER_HOUR, test.getMillis());
173            assertSame(chrono, test.getChronology());
174        }        
175    
176        //-----------------------------------------------------------------------
177        public void testSetMillis_RI1() {
178            MutableDateTime test = new MutableDateTime(TEST_TIME1, BuddhistChronology.getInstance());
179            test.setMillis(new Instant(TEST_TIME2));
180            assertEquals(TEST_TIME2, test.getMillis());
181            assertEquals(BuddhistChronology.getInstance(), test.getChronology());
182        }
183    
184        public void testSetMillis_RI2() {
185            MutableDateTime test = new MutableDateTime(TEST_TIME1, BuddhistChronology.getInstance());
186            test.setMillis(null);
187            assertEquals(TEST_TIME_NOW, test.getMillis());
188            assertEquals(BuddhistChronology.getInstance(), test.getChronology());
189        }
190    
191        //-----------------------------------------------------------------------
192        public void testSet_DateTimeFieldType_int1() {
193            MutableDateTime test = new MutableDateTime(TEST_TIME1);
194            test.set(DateTimeFieldType.year(), 2010);
195            assertEquals(2010, test.getYear());
196        }
197    
198        public void testSet_DateTimeFieldType_int2() {
199            MutableDateTime test = new MutableDateTime(TEST_TIME1);
200            try {
201                test.set(null, 0);
202                fail();
203            } catch (IllegalArgumentException ex) {}
204            assertEquals(TEST_TIME1, test.getMillis());
205        }
206    
207        public void testSet_DateTimeFieldType_int3() {
208            MutableDateTime test = new MutableDateTime(TEST_TIME1);
209            try {
210                test.set(DateTimeFieldType.monthOfYear(), 13);
211                fail();
212            } catch (IllegalArgumentException ex) {}
213            assertEquals(TEST_TIME1, test.getMillis());
214        }
215    
216        //-----------------------------------------------------------------------
217        public void testSetDate_int_int_int1() {
218            MutableDateTime test = new MutableDateTime(2002, 6, 9, 12, 24, 48, 501);
219            test.setDate(2010, 12, 3);
220            assertEquals(2010, test.getYear());
221            assertEquals(12, test.getMonthOfYear());
222            assertEquals(3, test.getDayOfMonth());
223            assertEquals(12, test.getHourOfDay());
224            assertEquals(24, test.getMinuteOfHour());
225            assertEquals(48, test.getSecondOfMinute());
226            assertEquals(501, test.getMillisOfSecond());
227        }
228    
229        public void testSetDate_int_int_int2() {
230            MutableDateTime test = new MutableDateTime(TEST_TIME1);
231            try {
232                test.setDate(2010, 13, 3);
233                fail();
234            } catch (IllegalArgumentException ex) {}
235            assertEquals(TEST_TIME1, test.getMillis());
236        }
237    
238        //-----------------------------------------------------------------------
239        public void testSetDate_long1() {
240            long setter = new DateTime(2010, 12, 3, 5, 7, 9, 501).getMillis();
241            MutableDateTime test = new MutableDateTime(2002, 6, 9, 12, 24, 48, 501);
242            test.setDate(setter);
243            assertEquals(2010, test.getYear());
244            assertEquals(12, test.getMonthOfYear());
245            assertEquals(3, test.getDayOfMonth());
246            assertEquals(12, test.getHourOfDay());
247            assertEquals(24, test.getMinuteOfHour());
248            assertEquals(48, test.getSecondOfMinute());
249            assertEquals(501, test.getMillisOfSecond());
250        }
251    
252        //-----------------------------------------------------------------------
253        public void testSetDate_RI1() {
254            DateTime setter = new DateTime(2010, 12, 3, 5, 7, 9, 501);
255            MutableDateTime test = new MutableDateTime(2002, 6, 9, 12, 24, 48, 501);
256            test.setDate(setter);
257            assertEquals(2010, test.getYear());
258            assertEquals(12, test.getMonthOfYear());
259            assertEquals(3, test.getDayOfMonth());
260            assertEquals(12, test.getHourOfDay());
261            assertEquals(24, test.getMinuteOfHour());
262            assertEquals(48, test.getSecondOfMinute());
263            assertEquals(501, test.getMillisOfSecond());
264        }
265    
266        public void testSetDate_RI2() {
267            MutableDateTime test = new MutableDateTime(2010, 7, 8, 12, 24, 48, 501);
268            test.setDate(null);  // sets to TEST_TIME_NOW
269            assertEquals(2002, test.getYear());
270            assertEquals(6, test.getMonthOfYear());
271            assertEquals(9, test.getDayOfMonth());
272            assertEquals(12, test.getHourOfDay());
273            assertEquals(24, test.getMinuteOfHour());
274            assertEquals(48, test.getSecondOfMinute());
275            assertEquals(501, test.getMillisOfSecond());
276        }
277    
278        public void testSetDate_RI_same() {
279            MutableDateTime setter = new MutableDateTime(2010, 12, 3, 2, 24, 48, 501, DateTimeZone.forID("America/Los_Angeles"));
280            MutableDateTime test = new MutableDateTime(2010, 12, 3, 2, 24, 48, 501, DateTimeZone.forID("America/Los_Angeles"));
281            test.setDate(setter);
282            assertEquals(2010, test.getYear());
283            assertEquals(12, test.getMonthOfYear());
284            assertEquals(3, test.getDayOfMonth());
285            assertEquals(2, test.getHourOfDay());
286            assertEquals(24, test.getMinuteOfHour());
287            assertEquals(48, test.getSecondOfMinute());
288            assertEquals(501, test.getMillisOfSecond());
289        }
290    
291        public void testSetDate_RI_different1() {
292            MutableDateTime setter = new MutableDateTime(2010, 12, 1, 0, 0, 0, 0, DateTimeZone.forID("America/Los_Angeles"));
293            MutableDateTime test = new MutableDateTime(2010, 12, 3, 2, 24, 48, 501, DateTimeZone.forID("Europe/Moscow"));
294            test.setDate(setter);
295            assertEquals(2010, test.getYear());
296            assertEquals(12, test.getMonthOfYear());
297            assertEquals(1, test.getDayOfMonth());
298            assertEquals(2, test.getHourOfDay());
299            assertEquals(24, test.getMinuteOfHour());
300            assertEquals(48, test.getSecondOfMinute());
301            assertEquals(501, test.getMillisOfSecond());
302        }
303    
304        public void testSetDate_RI_different2() {
305            MutableDateTime setter = new MutableDateTime(2010, 12, 1, 0, 0, 0, 0, DateTimeZone.forID("Europe/Moscow"));
306            MutableDateTime test = new MutableDateTime(2010, 12, 3, 2, 24, 48, 501, DateTimeZone.forID("America/Los_Angeles"));
307            test.setDate(setter);
308            assertEquals(2010, test.getYear());
309            assertEquals(12, test.getMonthOfYear());
310            assertEquals(1, test.getDayOfMonth());
311            assertEquals(2, test.getHourOfDay());
312            assertEquals(24, test.getMinuteOfHour());
313            assertEquals(48, test.getSecondOfMinute());
314            assertEquals(501, test.getMillisOfSecond());
315        }
316    
317        //-----------------------------------------------------------------------
318        public void testSetTime_int_int_int_int1() {
319            MutableDateTime test = new MutableDateTime(2002, 6, 9, 12, 24, 48, 501);
320            test.setTime(5, 6, 7, 8);
321            assertEquals(2002, test.getYear());
322            assertEquals(6, test.getMonthOfYear());
323            assertEquals(9, test.getDayOfMonth());
324            assertEquals(5, test.getHourOfDay());
325            assertEquals(6, test.getMinuteOfHour());
326            assertEquals(7, test.getSecondOfMinute());
327            assertEquals(8, test.getMillisOfSecond());
328        }
329    
330        public void testSetTime_int_int_int2() {
331            MutableDateTime test = new MutableDateTime(TEST_TIME1);
332            try {
333                test.setTime(60, 6, 7, 8);
334                fail();
335            } catch (IllegalArgumentException ex) {}
336            assertEquals(TEST_TIME1, test.getMillis());
337        }
338    
339        //-----------------------------------------------------------------------
340        public void testSetTime_long1() {
341            long setter = new DateTime(2010, 12, 3, 5, 7, 9, 11).getMillis();
342            MutableDateTime test = new MutableDateTime(2002, 6, 9, 12, 24, 48, 501);
343            test.setTime(setter);
344            assertEquals(2002, test.getYear());
345            assertEquals(6, test.getMonthOfYear());
346            assertEquals(9, test.getDayOfMonth());
347            assertEquals(5, test.getHourOfDay());
348            assertEquals(7, test.getMinuteOfHour());
349            assertEquals(9, test.getSecondOfMinute());
350            assertEquals(11, test.getMillisOfSecond());
351        }
352    
353        //-----------------------------------------------------------------------
354        public void testSetTime_RI1() {
355            DateTime setter = new DateTime(2010, 12, 3, 5, 7, 9, 11);
356            MutableDateTime test = new MutableDateTime(2002, 6, 9, 12, 24, 48, 501);
357            test.setTime(setter);
358            assertEquals(2002, test.getYear());
359            assertEquals(6, test.getMonthOfYear());
360            assertEquals(9, test.getDayOfMonth());
361            assertEquals(5, test.getHourOfDay());
362            assertEquals(7, test.getMinuteOfHour());
363            assertEquals(9, test.getSecondOfMinute());
364            assertEquals(11, test.getMillisOfSecond());
365        }
366    
367        public void testSetTime_RI2() {
368            MutableDateTime test = new MutableDateTime(2010, 7, 8, 12, 24, 48, 501);
369            test.setTime(null);  // sets to TEST_TIME_NOW, which has no time part
370            assertEquals(2010, test.getYear());
371            assertEquals(7, test.getMonthOfYear());
372            assertEquals(8, test.getDayOfMonth());
373            assertEquals(new DateTime(TEST_TIME_NOW).getHourOfDay(), test.getHourOfDay());
374            assertEquals(new DateTime(TEST_TIME_NOW).getMinuteOfHour(), test.getMinuteOfHour());
375            assertEquals(new DateTime(TEST_TIME_NOW).getSecondOfMinute(), test.getSecondOfMinute());
376            assertEquals(new DateTime(TEST_TIME_NOW).getMillisOfSecond(), test.getMillisOfSecond());
377        }
378    
379        public void testSetTime_Object3() {
380            DateTime temp = new DateTime(2010, 12, 3, 5, 7, 9, 11);
381            DateTime setter = new DateTime(temp.getMillis(), new MockNullZoneChronology());
382            MutableDateTime test = new MutableDateTime(2002, 6, 9, 12, 24, 48, 501);
383            test.setTime(setter);
384            assertEquals(2002, test.getYear());
385            assertEquals(6, test.getMonthOfYear());
386            assertEquals(9, test.getDayOfMonth());
387            assertEquals(5, test.getHourOfDay());
388            assertEquals(7, test.getMinuteOfHour());
389            assertEquals(9, test.getSecondOfMinute());
390            assertEquals(11, test.getMillisOfSecond());
391        }
392    
393        //-----------------------------------------------------------------------
394        public void testSetDateTime_int_int_int_int_int_int_int1() {
395            MutableDateTime test = new MutableDateTime(2002, 6, 9, 12, 24, 48, 501);
396            test.setDateTime(2010, 12, 3, 5, 6, 7, 8);
397            assertEquals(2010, test.getYear());
398            assertEquals(12, test.getMonthOfYear());
399            assertEquals(3, test.getDayOfMonth());
400            assertEquals(5, test.getHourOfDay());
401            assertEquals(6, test.getMinuteOfHour());
402            assertEquals(7, test.getSecondOfMinute());
403            assertEquals(8, test.getMillisOfSecond());
404        }
405        
406        public void testSetDateTime_int_int_int_int_int_int_int2() {
407            MutableDateTime test = new MutableDateTime(TEST_TIME1);
408            try {
409                test.setDateTime(2010, 13, 3, 5, 6, 7, 8);
410                fail();
411            } catch (IllegalArgumentException ex) {
412            }
413            assertEquals(TEST_TIME1, test.getMillis());
414        }
415    
416        //-----------------------------------------------------------------------
417        public void testSetYear_int1() {
418            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
419            test.setYear(2010);
420            assertEquals("2010-06-09T05:06:07.008+01:00", test.toString());
421        }
422    
423        //-----------------------------------------------------------------------
424        public void testSetMonthOfYear_int1() {
425            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
426            test.setMonthOfYear(12);
427            assertEquals("2002-12-09T05:06:07.008Z", test.toString());
428        }
429    
430        public void testSetMonthOfYear_int2() {
431            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
432            try {
433                test.setMonthOfYear(13);
434                fail();
435            } catch (IllegalArgumentException ex) {}
436            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
437        }
438    
439        //-----------------------------------------------------------------------
440        public void testSetDayOfMonth_int1() {
441            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
442            test.setDayOfMonth(17);
443            assertEquals("2002-06-17T05:06:07.008+01:00", test.toString());
444        }
445    
446        public void testSetDayOfMonth_int2() {
447            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
448            try {
449                test.setDayOfMonth(31);
450                fail();
451            } catch (IllegalArgumentException ex) {}
452            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
453        }
454    
455        //-----------------------------------------------------------------------
456        public void testSetDayOfYear_int1() {
457            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
458            test.setDayOfYear(3);
459            assertEquals("2002-01-03T05:06:07.008Z", test.toString());
460        }
461    
462        public void testSetDayOfYear_int2() {
463            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
464            try {
465                test.setDayOfYear(366);
466                fail();
467            } catch (IllegalArgumentException ex) {}
468            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
469        }
470    
471        //-----------------------------------------------------------------------
472        public void testSetWeekyear_int1() {
473            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
474            test.setWeekyear(2001);
475            assertEquals("2001-06-10T05:06:07.008+01:00", test.toString());
476        }
477    
478        //-----------------------------------------------------------------------
479        public void testSetWeekOfWeekyear_int1() {
480            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
481            test.setWeekOfWeekyear(2);
482            assertEquals("2002-01-13T05:06:07.008Z", test.toString());
483        }
484    
485        public void testSetWeekOfWeekyear_int2() {
486            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
487            try {
488                test.setWeekOfWeekyear(53);
489                fail();
490            } catch (IllegalArgumentException ex) {}
491            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
492        }
493    
494        //-----------------------------------------------------------------------
495        public void testSetDayOfWeek_int1() {
496            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
497            test.setDayOfWeek(5);
498            assertEquals("2002-06-07T05:06:07.008+01:00", test.toString());
499        }
500    
501        public void testSetDayOfWeek_int2() {
502            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
503            try {
504                test.setDayOfWeek(8);
505                fail();
506            } catch (IllegalArgumentException ex) {}
507            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
508        }
509    
510        //-----------------------------------------------------------------------
511        public void testSetHourOfDay_int1() {
512            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
513            test.setHourOfDay(13);
514            assertEquals("2002-06-09T13:06:07.008+01:00", test.toString());
515        }
516    
517        public void testSetHourOfDay_int2() {
518            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
519            try {
520                test.setHourOfDay(24);
521                fail();
522            } catch (IllegalArgumentException ex) {}
523            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
524        }
525    
526        //-----------------------------------------------------------------------
527        public void testSetMinuteOfHour_int1() {
528            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
529            test.setMinuteOfHour(13);
530            assertEquals("2002-06-09T05:13:07.008+01:00", test.toString());
531        }
532    
533        public void testSetMinuteOfHour_int2() {
534            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
535            try {
536                test.setMinuteOfHour(60);
537                fail();
538            } catch (IllegalArgumentException ex) {}
539            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
540        }
541    
542        //-----------------------------------------------------------------------
543        public void testSetMinuteOfDay_int1() {
544            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
545            test.setMinuteOfDay(13);
546            assertEquals("2002-06-09T00:13:07.008+01:00", test.toString());
547        }
548    
549        public void testSetMinuteOfDay_int2() {
550            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
551            try {
552                test.setMinuteOfDay(24 * 60);
553                fail();
554            } catch (IllegalArgumentException ex) {}
555            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
556        }
557    
558        //-----------------------------------------------------------------------
559        public void testSetSecondOfMinute_int1() {
560            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
561            test.setSecondOfMinute(13);
562            assertEquals("2002-06-09T05:06:13.008+01:00", test.toString());
563        }
564    
565        public void testSetSecondOfMinute_int2() {
566            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
567            try {
568                test.setSecondOfMinute(60);
569                fail();
570            } catch (IllegalArgumentException ex) {}
571            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
572        }
573    
574        //-----------------------------------------------------------------------
575        public void testSetSecondOfDay_int1() {
576            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
577            test.setSecondOfDay(13);
578            assertEquals("2002-06-09T00:00:13.008+01:00", test.toString());
579        }
580    
581        public void testSetSecondOfDay_int2() {
582            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
583            try {
584                test.setSecondOfDay(24 * 60 * 60);
585                fail();
586            } catch (IllegalArgumentException ex) {}
587            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
588        }
589    
590        //-----------------------------------------------------------------------
591        public void testSetMilliOfSecond_int1() {
592            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
593            test.setMillisOfSecond(13);
594            assertEquals("2002-06-09T05:06:07.013+01:00", test.toString());
595        }
596    
597        public void testSetMilliOfSecond_int2() {
598            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
599            try {
600                test.setMillisOfSecond(1000);
601                fail();
602            } catch (IllegalArgumentException ex) {}
603            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
604        }
605    
606        //-----------------------------------------------------------------------
607        public void testSetMilliOfDay_int1() {
608            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
609            test.setMillisOfDay(13);
610            assertEquals("2002-06-09T00:00:00.013+01:00", test.toString());
611        }
612    
613        public void testSetMilliOfDay_int2() {
614            MutableDateTime test = new MutableDateTime(2002, 6, 9, 5, 6, 7, 8);
615            try {
616                test.setMillisOfDay(24 * 60 * 60 * 1000);
617                fail();
618            } catch (IllegalArgumentException ex) {}
619            assertEquals("2002-06-09T05:06:07.008+01:00", test.toString());
620        }
621    
622    }