001    /*
002     *  Copyright 2001-2010 Stephen Colebourne
003     *
004     *  Licensed under the Apache License, Version 2.0 (the "License");
005     *  you may not use this file except in compliance with the License.
006     *  You may obtain a copy of the License at
007     *
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     *
010     *  Unless required by applicable law or agreed to in writing, software
011     *  distributed under the License is distributed on an "AS IS" BASIS,
012     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     *  See the License for the specific language governing permissions and
014     *  limitations under the License.
015     */
016    package org.joda.time;
017    
018    import junit.framework.TestCase;
019    import junit.framework.TestSuite;
020    
021    import org.joda.convert.StringConvert;
022    import org.joda.time.chrono.ISOChronology;
023    
024    /**
025     * Test string conversion.
026     *
027     * @author Stephen Colebourne
028     */
029    public class TestStringConvert extends TestCase {
030    
031        private static final DateTimeZone ZONE = DateTimeZone.forID("+02:00");
032    
033        public static void main(String[] args) {
034            junit.textui.TestRunner.run(suite());
035        }
036    
037        public static TestSuite suite() {
038            return new TestSuite(TestStringConvert.class);
039        }
040    
041        public TestStringConvert(String name) {
042            super(name);
043        }
044    
045        protected void setUp() throws Exception {
046        }
047    
048        protected void tearDown() throws Exception {
049        }
050    
051        //-----------------------------------------------------------------------
052        public void testDateMidnight() {
053            DateMidnight test = new DateMidnight(2010, 6, 30, ISOChronology.getInstance(ZONE));
054            String str = StringConvert.INSTANCE.convertToString(test);
055            assertEquals("2010-06-30T00:00:00.000+02:00", str);
056            assertEquals(test, StringConvert.INSTANCE.convertFromString(DateMidnight.class, str));
057        }
058    
059        public void testDateTime() {
060            DateTime test = new DateTime(2010, 6, 30, 2, 30, 50, 678, ISOChronology.getInstance(ZONE));
061            String str = StringConvert.INSTANCE.convertToString(test);
062            assertEquals("2010-06-30T02:30:50.678+02:00", str);
063            assertEquals(test, StringConvert.INSTANCE.convertFromString(DateTime.class, str));
064        }
065    
066        public void testMutableDateTime() {
067            MutableDateTime test = new MutableDateTime(2010, 6, 30, 2, 30, 50, 678, ISOChronology.getInstance(ZONE));
068            String str = StringConvert.INSTANCE.convertToString(test);
069            assertEquals("2010-06-30T02:30:50.678+02:00", str);
070            assertEquals(test, StringConvert.INSTANCE.convertFromString(MutableDateTime.class, str));
071        }
072    
073        public void testLocalDateTime() {
074            LocalDateTime test = new LocalDateTime(2010, 6, 30, 2, 30);
075            String str = StringConvert.INSTANCE.convertToString(test);
076            assertEquals("2010-06-30T02:30:00.000", str);
077            assertEquals(test, StringConvert.INSTANCE.convertFromString(LocalDateTime.class, str));
078        }
079    
080        public void testLocalDate() {
081            LocalDate test = new LocalDate(2010, 6, 30);
082            String str = StringConvert.INSTANCE.convertToString(test);
083            assertEquals("2010-06-30", str);
084            assertEquals(test, StringConvert.INSTANCE.convertFromString(LocalDate.class, str));
085        }
086    
087        public void testLocalTime() {
088            LocalTime test = new LocalTime(2, 30, 50, 678);
089            String str = StringConvert.INSTANCE.convertToString(test);
090            assertEquals("02:30:50.678", str);
091            assertEquals(test, StringConvert.INSTANCE.convertFromString(LocalTime.class, str));
092        }
093    
094        public void testYearMonth() {
095            YearMonth test = new YearMonth(2010, 6);
096            String str = StringConvert.INSTANCE.convertToString(test);
097            assertEquals("2010-06", str);
098            assertEquals(test, StringConvert.INSTANCE.convertFromString(YearMonth.class, str));
099        }
100    
101        public void testMonthDay() {
102            MonthDay test = new MonthDay(6, 30);
103            String str = StringConvert.INSTANCE.convertToString(test);
104            assertEquals("--06-30", str);
105            assertEquals(test, StringConvert.INSTANCE.convertFromString(MonthDay.class, str));
106        }
107    
108        public void testMonthDay_leapDay() {
109            MonthDay test = new MonthDay(2, 29);
110            String str = StringConvert.INSTANCE.convertToString(test);
111            assertEquals("--02-29", str);
112            assertEquals(test, StringConvert.INSTANCE.convertFromString(MonthDay.class, str));
113        }
114    
115        //-----------------------------------------------------------------------
116        public void testTimeZone() {
117            DateTimeZone test = DateTimeZone.forID("Europe/Paris");
118            String str = StringConvert.INSTANCE.convertToString(test);
119            assertEquals("Europe/Paris", str);
120            assertEquals(test, StringConvert.INSTANCE.convertFromString(DateTimeZone.class, str));
121        }
122    
123    //    public void testInterval() {
124    //        DateTime a = new DateTime(2010, 6, 30, 2, 30, 50, 678, ISOChronology.getInstance(ZONE));
125    //        DateTime b = new DateTime(2011, 9, 10, 4, 20, 40, 234, ISOChronology.getInstance(ZONE));
126    //        Interval test = new Interval(a, b);
127    //        String str = StringConvert.INSTANCE.convertToString(test);
128    //        assertEquals("2010-06-30T02:30:50.678+02:00/2011-09-10T04:20:40.234+02:00", str);
129    //        assertEquals(test, StringConvert.INSTANCE.convertFromString(Interval.class, str));
130    //    }
131    
132        public void testDuration() {
133            Duration test = new Duration(12345678L);
134            String str = StringConvert.INSTANCE.convertToString(test);
135            assertEquals("PT12345.678S", str);
136            assertEquals(test, StringConvert.INSTANCE.convertFromString(Duration.class, str));
137        }
138    
139        public void testPeriod() {
140            Period test = new Period(1, 2, 3, 4, 5, 6, 7, 8);
141            String str = StringConvert.INSTANCE.convertToString(test);
142            assertEquals("P1Y2M3W4DT5H6M7.008S", str);
143            assertEquals(test, StringConvert.INSTANCE.convertFromString(Period.class, str));
144        }
145    
146        public void testMutablePeriod() {
147            MutablePeriod test = new MutablePeriod(1, 2, 3, 4, 5, 6, 7, 8);
148            String str = StringConvert.INSTANCE.convertToString(test);
149            assertEquals("P1Y2M3W4DT5H6M7.008S", str);
150            assertEquals(test, StringConvert.INSTANCE.convertFromString(MutablePeriod.class, str));
151        }
152    
153        public void testYears() {
154            Years test = Years.years(5);
155            String str = StringConvert.INSTANCE.convertToString(test);
156            assertEquals("P5Y", str);
157            assertEquals(test, StringConvert.INSTANCE.convertFromString(Years.class, str));
158        }
159    
160        public void testMonths() {
161            Months test = Months.months(5);
162            String str = StringConvert.INSTANCE.convertToString(test);
163            assertEquals("P5M", str);
164            assertEquals(test, StringConvert.INSTANCE.convertFromString(Months.class, str));
165        }
166    
167        public void testWeeks() {
168            Weeks test = Weeks.weeks(5);
169            String str = StringConvert.INSTANCE.convertToString(test);
170            assertEquals("P5W", str);
171            assertEquals(test, StringConvert.INSTANCE.convertFromString(Weeks.class, str));
172        }
173    
174        public void testDays() {
175            Days test = Days.days(5);
176            String str = StringConvert.INSTANCE.convertToString(test);
177            assertEquals("P5D", str);
178            assertEquals(test, StringConvert.INSTANCE.convertFromString(Days.class, str));
179        }
180    
181        public void testHours() {
182            Hours test = Hours.hours(5);
183            String str = StringConvert.INSTANCE.convertToString(test);
184            assertEquals("PT5H", str);
185            assertEquals(test, StringConvert.INSTANCE.convertFromString(Hours.class, str));
186        }
187    
188        public void testMinutes() {
189            Minutes test = Minutes.minutes(5);
190            String str = StringConvert.INSTANCE.convertToString(test);
191            assertEquals("PT5M", str);
192            assertEquals(test, StringConvert.INSTANCE.convertFromString(Minutes.class, str));
193        }
194    
195        public void testSeconds() {
196            Seconds test = Seconds.seconds(5);
197            String str = StringConvert.INSTANCE.convertToString(test);
198            assertEquals("PT5S", str);
199            assertEquals(test, StringConvert.INSTANCE.convertFromString(Seconds.class, str));
200        }
201    
202    }