1 16 package org.joda.time.format; 17 18 import java.util.Locale ; 19 import java.util.TimeZone ; 20 21 import junit.framework.TestCase; 22 import junit.framework.TestSuite; 23 24 import org.joda.time.DateTimeZone; 25 26 31 public class TestISODateTimeFormatParsing extends TestCase { 32 33 private DateTimeZone originalDateTimeZone = null; 34 private TimeZone originalTimeZone = null; 35 private Locale originalLocale = null; 36 37 public static void main(String [] args) { 38 junit.textui.TestRunner.run(suite()); 39 } 40 41 public static TestSuite suite() { 42 return new TestSuite(TestISODateTimeFormatParsing.class); 43 } 44 45 public TestISODateTimeFormatParsing(String name) { 46 super(name); 47 } 48 49 protected void setUp() throws Exception { 50 originalDateTimeZone = DateTimeZone.getDefault(); 51 originalTimeZone = TimeZone.getDefault(); 52 originalLocale = Locale.getDefault(); 53 DateTimeZone.setDefault(DateTimeZone.forID("Europe/London")); 54 TimeZone.setDefault(TimeZone.getTimeZone("Europe/London")); 55 Locale.setDefault(Locale.UK); 56 } 57 58 protected void tearDown() throws Exception { 59 DateTimeZone.setDefault(originalDateTimeZone); 60 TimeZone.setDefault(originalTimeZone); 61 Locale.setDefault(originalLocale); 62 originalDateTimeZone = null; 63 originalTimeZone = null; 64 originalLocale = null; 65 } 66 67 public void test_dateParser() { 69 DateTimeFormatter parser = ISODateTimeFormat.dateParser(); 70 assertParse(parser, true, "2006-06-09"); 71 assertParse(parser, true, "2006-W27-3"); 72 assertParse(parser, true, "2006-123"); 73 assertParse(parser, true, "2006-06-09T+02:00"); 74 assertParse(parser, true, "2006-W27-3T+02:00"); 75 assertParse(parser, true, "2006-123T+02:00"); 76 77 assertParse(parser, false, "2006-06-09T10:20:30.040"); 78 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 79 assertParse(parser, false, "2006-123T10:20:30.040"); 80 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 81 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 82 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 83 84 assertParse(parser, false, "T10:20:30.040"); 85 assertParse(parser, false, "T10.5"); 86 assertParse(parser, false, "T10:20:30.040+02:00"); 87 assertParse(parser, false, "T10.5+02:00"); 88 89 assertParse(parser, false, "10:20:30.040"); 90 assertParse(parser, false, "10.5"); 91 assertParse(parser, false, "10:20:30.040+02:00"); 92 assertParse(parser, false, "10.5+02:00"); 93 } 94 95 public void test_localDateParser() { 97 DateTimeFormatter parser = ISODateTimeFormat.localDateParser(); 98 assertEquals(DateTimeZone.UTC, parser.getZone()); 99 assertParse(parser, true, "2006-06-09"); 100 assertParse(parser, true, "2006-W27-3"); 101 assertParse(parser, true, "2006-123"); 102 assertParse(parser, false, "2006-06-09T+02:00"); 103 assertParse(parser, false, "2006-W27-3T+02:00"); 104 assertParse(parser, false, "2006-123T+02:00"); 105 106 assertParse(parser, false, "2006-06-09T10:20:30.040"); 107 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 108 assertParse(parser, false, "2006-123T10:20:30.040"); 109 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 110 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 111 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 112 113 assertParse(parser, false, "T10:20:30.040"); 114 assertParse(parser, false, "T10.5"); 115 assertParse(parser, false, "T10:20:30.040+02:00"); 116 assertParse(parser, false, "T10.5+02:00"); 117 118 assertParse(parser, false, "10:20:30.040"); 119 assertParse(parser, false, "10.5"); 120 assertParse(parser, false, "10:20:30.040+02:00"); 121 assertParse(parser, false, "10.5+02:00"); 122 } 123 124 public void test_dateElementParser() { 126 DateTimeFormatter parser = ISODateTimeFormat.dateElementParser(); 127 assertParse(parser, true, "2006-06-09"); 128 assertParse(parser, true, "2006-W27-3"); 129 assertParse(parser, true, "2006-123"); 130 assertParse(parser, false, "2006-06-09T+02:00"); 131 assertParse(parser, false, "2006-W27-3T+02:00"); 132 assertParse(parser, false, "2006-123T+02:00"); 133 134 assertParse(parser, false, "2006-06-09T10:20:30.040"); 135 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 136 assertParse(parser, false, "2006-123T10:20:30.040"); 137 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 138 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 139 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 140 141 assertParse(parser, false, "T10:20:30.040"); 142 assertParse(parser, false, "T10.5"); 143 assertParse(parser, false, "T10:20:30.040+02:00"); 144 assertParse(parser, false, "T10.5+02:00"); 145 146 assertParse(parser, false, "10:20:30.040"); 147 assertParse(parser, false, "10.5"); 148 assertParse(parser, false, "10:20:30.040+02:00"); 149 assertParse(parser, false, "10.5+02:00"); 150 } 151 152 public void test_timeParser() { 154 DateTimeFormatter parser = ISODateTimeFormat.timeParser(); 155 assertParse(parser, false, "2006-06-09"); 156 assertParse(parser, false, "2006-W27-3"); 157 assertParse(parser, false, "2006-123"); 158 assertParse(parser, false, "2006-06-09T+02:00"); 159 assertParse(parser, false, "2006-W27-3T+02:00"); 160 assertParse(parser, false, "2006-123T+02:00"); 161 162 assertParse(parser, false, "2006-06-09T10:20:30.040"); 163 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 164 assertParse(parser, false, "2006-123T10:20:30.040"); 165 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 166 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 167 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 168 169 assertParse(parser, true, "T10:20:30.040"); 170 assertParse(parser, true, "T10.5"); 171 assertParse(parser, true, "T10:20:30.040+02:00"); 172 assertParse(parser, true, "T10.5+02:00"); 173 174 assertParse(parser, true, "10:20:30.040"); 175 assertParse(parser, true, "10.5"); 176 assertParse(parser, true, "10:20:30.040+02:00"); 177 assertParse(parser, true, "10.5+02:00"); 178 } 179 180 public void test_localTimeParser() { 182 DateTimeFormatter parser = ISODateTimeFormat.localTimeParser(); 183 assertEquals(DateTimeZone.UTC, parser.getZone()); 184 assertParse(parser, false, "2006-06-09"); 185 assertParse(parser, false, "2006-W27-3"); 186 assertParse(parser, false, "2006-123"); 187 assertParse(parser, false, "2006-06-09T+02:00"); 188 assertParse(parser, false, "2006-W27-3T+02:00"); 189 assertParse(parser, false, "2006-123T+02:00"); 190 191 assertParse(parser, false, "2006-06-09T10:20:30.040"); 192 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 193 assertParse(parser, false, "2006-123T10:20:30.040"); 194 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 195 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 196 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 197 198 assertParse(parser, true, "T10:20:30.040"); 199 assertParse(parser, true, "T10.5"); 200 assertParse(parser, false, "T10:20:30.040+02:00"); 201 assertParse(parser, false, "T10.5+02:00"); 202 203 assertParse(parser, true, "10:20:30.040"); 204 assertParse(parser, true, "10.5"); 205 assertParse(parser, false, "10:20:30.040+02:00"); 206 assertParse(parser, false, "10.5+02:00"); 207 208 assertParse(parser, true, "00:00:10.512345678"); 209 assertEquals(10512, parser.parseMillis("00:00:10.512345678")); 210 } 211 212 public void test_timeElementParser() { 214 DateTimeFormatter parser = ISODateTimeFormat.timeElementParser(); 215 assertParse(parser, false, "2006-06-09"); 216 assertParse(parser, false, "2006-W27-3"); 217 assertParse(parser, false, "2006-123"); 218 assertParse(parser, false, "2006-06-09T+02:00"); 219 assertParse(parser, false, "2006-W27-3T+02:00"); 220 assertParse(parser, false, "2006-123T+02:00"); 221 222 assertParse(parser, false, "2006-06-09T10:20:30.040"); 223 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 224 assertParse(parser, false, "2006-123T10:20:30.040"); 225 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 226 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 227 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 228 229 assertParse(parser, false, "T10:20:30.040"); 230 assertParse(parser, false, "T10.5"); 231 assertParse(parser, false, "T10:20:30.040+02:00"); 232 assertParse(parser, false, "T10.5+02:00"); 233 234 assertParse(parser, true, "10:20:30.040"); 235 assertParse(parser, true, "10.5"); 236 assertParse(parser, false, "10:20:30.040+02:00"); 237 assertParse(parser, false, "10.5+02:00"); 238 239 assertParse(parser, true, "00:00:10.512345678"); 240 assertEquals(10512, parser.parseMillis("00:00:10.512345678") + DateTimeZone.getDefault().getOffset(0L)); 242 } 243 244 public void test_dateTimeParser() { 246 DateTimeFormatter parser = ISODateTimeFormat.dateTimeParser(); 247 assertParse(parser, true, "2006-06-09"); 248 assertParse(parser, true, "2006-W27-3"); 249 assertParse(parser, true, "2006-123"); 250 assertParse(parser, true, "2006-06-09T+02:00"); 251 assertParse(parser, true, "2006-W27-3T+02:00"); 252 assertParse(parser, true, "2006-123T+02:00"); 253 254 assertParse(parser, true, "2006-06-09T10:20:30.040"); 255 assertParse(parser, true, "2006-W27-3T10:20:30.040"); 256 assertParse(parser, true, "2006-123T10:20:30.040"); 257 assertParse(parser, true, "2006-06-09T10:20:30.040+02:00"); 258 assertParse(parser, true, "2006-W27-3T10:20:30.040+02:00"); 259 assertParse(parser, true, "2006-123T10:20:30.040+02:00"); 260 261 assertParse(parser, true, "T10:20:30.040"); 262 assertParse(parser, true, "T10.5"); 263 assertParse(parser, true, "T10:20:30.040+02:00"); 264 assertParse(parser, true, "T10.5+02:00"); 265 266 assertParse(parser, false, "10:20:30.040"); 267 assertParse(parser, false, "10.5"); 268 assertParse(parser, false, "10:20:30.040+02:00"); 269 assertParse(parser, false, "10.5+02:00"); 270 } 271 272 public void test_dateOptionalTimeParser() { 274 DateTimeFormatter parser = ISODateTimeFormat.dateOptionalTimeParser(); 275 assertParse(parser, true, "2006-06-09"); 276 assertParse(parser, true, "2006-W27-3"); 277 assertParse(parser, true, "2006-123"); 278 assertParse(parser, true, "2006-06-09T+02:00"); 279 assertParse(parser, true, "2006-W27-3T+02:00"); 280 assertParse(parser, true, "2006-123T+02:00"); 281 282 assertParse(parser, true, "2006-06-09T10:20:30.040"); 283 assertParse(parser, true, "2006-W27-3T10:20:30.040"); 284 assertParse(parser, true, "2006-123T10:20:30.040"); 285 assertParse(parser, true, "2006-06-09T10:20:30.040+02:00"); 286 assertParse(parser, true, "2006-W27-3T10:20:30.040+02:00"); 287 assertParse(parser, true, "2006-123T10:20:30.040+02:00"); 288 289 assertParse(parser, false, "T10:20:30.040"); 290 assertParse(parser, false, "T10.5"); 291 assertParse(parser, false, "T10:20:30.040+02:00"); 292 assertParse(parser, false, "T10.5+02:00"); 293 294 assertParse(parser, false, "10:20:30.040"); 295 assertParse(parser, false, "10.5"); 296 assertParse(parser, false, "10:20:30.040+02:00"); 297 assertParse(parser, false, "10.5+02:00"); 298 } 299 300 public void test_localDateOptionalTimeParser() { 302 DateTimeFormatter parser = ISODateTimeFormat.localDateOptionalTimeParser(); 303 assertEquals(DateTimeZone.UTC, parser.getZone()); 304 assertParse(parser, true, "2006-06-09"); 305 assertParse(parser, true, "2006-W27-3"); 306 assertParse(parser, true, "2006-123"); 307 assertParse(parser, false, "2006-06-09T+02:00"); 308 assertParse(parser, false, "2006-W27-3T+02:00"); 309 assertParse(parser, false, "2006-123T+02:00"); 310 311 assertParse(parser, true, "2006-06-09T10:20:30.040"); 312 assertParse(parser, true, "2006-W27-3T10:20:30.040"); 313 assertParse(parser, true, "2006-123T10:20:30.040"); 314 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 315 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 316 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 317 318 assertParse(parser, false, "T10:20:30.040"); 319 assertParse(parser, false, "T10.5"); 320 assertParse(parser, false, "T10:20:30.040+02:00"); 321 assertParse(parser, false, "T10.5+02:00"); 322 323 assertParse(parser, false, "10:20:30.040"); 324 assertParse(parser, false, "10.5"); 325 assertParse(parser, false, "10:20:30.040+02:00"); 326 assertParse(parser, false, "10.5+02:00"); 327 } 328 329 private void assertParse(DateTimeFormatter parser, boolean expected, String str) { 331 if (expected) { 332 parser.parseMillis(str); 333 } else { 334 try { 335 parser.parseMillis(str); 336 fail(); 337 } catch (IllegalArgumentException ex) { 338 } 340 } 341 } 342 343 } 344 | Popular Tags |