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 }