001 /* 002 * Copyright 2001-2006 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.format; 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.DateTime; 025 import org.joda.time.DateTimeZone; 026 027 /** 028 * This class is a Junit unit test for ISODateTimeFormat parsing. 029 * 030 * @author Stephen Colebourne 031 */ 032 public class TestISODateTimeFormatParsing extends TestCase { 033 034 private DateTimeZone originalDateTimeZone = null; 035 private TimeZone originalTimeZone = null; 036 private Locale originalLocale = null; 037 038 public static void main(String[] args) { 039 junit.textui.TestRunner.run(suite()); 040 } 041 042 public static TestSuite suite() { 043 return new TestSuite(TestISODateTimeFormatParsing.class); 044 } 045 046 public TestISODateTimeFormatParsing(String name) { 047 super(name); 048 } 049 050 protected void setUp() throws Exception { 051 originalDateTimeZone = DateTimeZone.getDefault(); 052 originalTimeZone = TimeZone.getDefault(); 053 originalLocale = Locale.getDefault(); 054 DateTimeZone.setDefault(DateTimeZone.forID("Europe/London")); 055 TimeZone.setDefault(TimeZone.getTimeZone("Europe/London")); 056 Locale.setDefault(Locale.UK); 057 } 058 059 protected void tearDown() throws Exception { 060 DateTimeZone.setDefault(originalDateTimeZone); 061 TimeZone.setDefault(originalTimeZone); 062 Locale.setDefault(originalLocale); 063 originalDateTimeZone = null; 064 originalTimeZone = null; 065 originalLocale = null; 066 } 067 068 //----------------------------------------------------------------------- 069 public void test_dateParser() { 070 DateTimeFormatter parser = ISODateTimeFormat.dateParser(); 071 assertParse(parser, true, "2006-06-09"); 072 assertParse(parser, true, "2006-W27-3"); 073 assertParse(parser, true, "2006-123"); 074 assertParse(parser, true, "2006-06-09T+02:00"); 075 assertParse(parser, true, "2006-W27-3T+02:00"); 076 assertParse(parser, true, "2006-123T+02:00"); 077 078 assertParse(parser, false, "2006-06-09T10:20:30.040"); 079 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 080 assertParse(parser, false, "2006-123T10:20:30.040"); 081 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 082 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 083 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 084 085 assertParse(parser, false, "T10:20:30.040"); 086 assertParse(parser, false, "T10.5"); 087 assertParse(parser, false, "T10:20:30.040+02:00"); 088 assertParse(parser, false, "T10.5+02:00"); 089 090 assertParse(parser, false, "10:20:30.040"); 091 assertParse(parser, false, "10.5"); 092 assertParse(parser, false, "10:20:30.040+02:00"); 093 assertParse(parser, false, "10.5+02:00"); 094 } 095 096 //----------------------------------------------------------------------- 097 public void test_localDateParser() { 098 DateTimeFormatter parser = ISODateTimeFormat.localDateParser(); 099 assertEquals(DateTimeZone.UTC, parser.getZone()); 100 assertParse(parser, true, "2006-06-09"); 101 assertParse(parser, true, "2006-W27-3"); 102 assertParse(parser, true, "2006-123"); 103 assertParse(parser, false, "2006-06-09T+02:00"); 104 assertParse(parser, false, "2006-W27-3T+02:00"); 105 assertParse(parser, false, "2006-123T+02:00"); 106 107 assertParse(parser, false, "2006-06-09T10:20:30.040"); 108 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 109 assertParse(parser, false, "2006-123T10:20:30.040"); 110 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 111 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 112 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 113 114 assertParse(parser, false, "T10:20:30.040"); 115 assertParse(parser, false, "T10.5"); 116 assertParse(parser, false, "T10:20:30.040+02:00"); 117 assertParse(parser, false, "T10.5+02:00"); 118 119 assertParse(parser, false, "10:20:30.040"); 120 assertParse(parser, false, "10.5"); 121 assertParse(parser, false, "10:20:30.040+02:00"); 122 assertParse(parser, false, "10.5+02:00"); 123 } 124 125 //----------------------------------------------------------------------- 126 public void test_dateElementParser() { 127 DateTimeFormatter parser = ISODateTimeFormat.dateElementParser(); 128 assertParse(parser, "2006-06-09", new DateTime(2006, 6, 9, 0, 0, 0, 0)); 129 assertParse(parser, "2006-06-9", new DateTime(2006, 6, 9, 0, 0, 0, 0)); 130 assertParse(parser, "2006-6-09", new DateTime(2006, 6, 9, 0, 0, 0, 0)); 131 assertParse(parser, "2006-6-9", new DateTime(2006, 6, 9, 0, 0, 0, 0)); 132 assertParse(parser, true, "2006-W27-3"); 133 assertParse(parser, true, "2006-123"); 134 assertParse(parser, false, "2006-06-09T+02:00"); 135 assertParse(parser, false, "2006-W27-3T+02:00"); 136 assertParse(parser, false, "2006-123T+02:00"); 137 138 assertParse(parser, false, "2006-06-09T10:20:30.040"); 139 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 140 assertParse(parser, false, "2006-123T10:20:30.040"); 141 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 142 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 143 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 144 145 assertParse(parser, false, "T10:20:30.040"); 146 assertParse(parser, false, "T10.5"); 147 assertParse(parser, false, "T10:20:30.040+02:00"); 148 assertParse(parser, false, "T10.5+02:00"); 149 150 assertParse(parser, false, "10:20:30.040"); 151 assertParse(parser, false, "10.5"); 152 assertParse(parser, false, "10:20:30.040+02:00"); 153 assertParse(parser, false, "10.5+02:00"); 154 } 155 156 //----------------------------------------------------------------------- 157 public void test_timeParser() { 158 DateTimeZone.setDefault(DateTimeZone.UTC); 159 DateTimeFormatter parser = ISODateTimeFormat.timeParser(); 160 assertParse(parser, false, "2006-06-09"); 161 assertParse(parser, false, "2006-W27-3"); 162 assertParse(parser, false, "2006-123"); 163 assertParse(parser, false, "2006-06-09T+02:00"); 164 assertParse(parser, false, "2006-W27-3T+02:00"); 165 assertParse(parser, false, "2006-123T+02:00"); 166 167 assertParse(parser, false, "2006-06-09T10:20:30.040"); 168 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 169 assertParse(parser, false, "2006-123T10:20:30.040"); 170 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 171 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 172 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 173 174 assertParse(parser, "T10:20:30.040000000", new DateTime(1970, 1, 1, 10, 20, 30, 40)); 175 assertParse(parser, "T10:20:30.004", new DateTime(1970, 1, 1, 10, 20, 30, 4)); 176 assertParse(parser, "T10:20:30.040", new DateTime(1970, 1, 1, 10, 20, 30, 40)); 177 assertParse(parser, "T10:20:30.400", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 178 assertParse(parser, "T10.5", new DateTime(1970, 1, 1, 10, 30, 0, 0)); 179 assertParse(parser, "T10:20:30.040+02:00", new DateTime(1970, 1, 1, 8, 20, 30, 40)); 180 assertParse(parser, "T10.5+02:00", new DateTime(1970, 1, 1, 8, 30, 0, 0)); 181 182 assertParse(parser, true, "10:20:30.040"); 183 assertParse(parser, true, "10.5"); 184 assertParse(parser, true, "10:20:30.040+02:00"); 185 assertParse(parser, true, "10.5+02:00"); 186 } 187 188 //----------------------------------------------------------------------- 189 public void test_localTimeParser() { 190 DateTimeFormatter parser = ISODateTimeFormat.localTimeParser(); 191 assertEquals(DateTimeZone.UTC, parser.getZone()); 192 assertParse(parser, false, "2006-06-09"); 193 assertParse(parser, false, "2006-W27-3"); 194 assertParse(parser, false, "2006-123"); 195 assertParse(parser, false, "2006-06-09T+02:00"); 196 assertParse(parser, false, "2006-W27-3T+02:00"); 197 assertParse(parser, false, "2006-123T+02:00"); 198 199 assertParse(parser, false, "2006-06-09T10:20:30.040"); 200 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 201 assertParse(parser, false, "2006-123T10:20:30.040"); 202 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 203 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 204 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 205 206 assertParse(parser, true, "T10:20:30.040"); 207 assertParse(parser, true, "T10.5"); 208 assertParse(parser, false, "T10:20:30.040+02:00"); 209 assertParse(parser, false, "T10.5+02:00"); 210 211 assertParse(parser, true, "10:20:30.040"); 212 assertParse(parser, true, "10.5"); 213 assertParse(parser, false, "10:20:30.040+02:00"); 214 assertParse(parser, false, "10.5+02:00"); 215 216 assertParse(parser, true, "00:00:10.512345678"); 217 assertEquals(10512, parser.parseMillis("00:00:10.512345678")); 218 } 219 220 //----------------------------------------------------------------------- 221 public void test_timeElementParser() { 222 DateTimeFormatter parser = ISODateTimeFormat.timeElementParser(); 223 assertParse(parser, false, "2006-06-09"); 224 assertParse(parser, false, "2006-W27-3"); 225 assertParse(parser, false, "2006-123"); 226 assertParse(parser, false, "2006-06-09T+02:00"); 227 assertParse(parser, false, "2006-W27-3T+02:00"); 228 assertParse(parser, false, "2006-123T+02:00"); 229 230 assertParse(parser, false, "2006-06-09T10:20:30.040"); 231 assertParse(parser, false, "2006-W27-3T10:20:30.040"); 232 assertParse(parser, false, "2006-123T10:20:30.040"); 233 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 234 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 235 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 236 237 assertParse(parser, false, "T10:20:30.040"); 238 assertParse(parser, false, "T10.5"); 239 assertParse(parser, false, "T10:20:30.040+02:00"); 240 assertParse(parser, false, "T10.5+02:00"); 241 242 assertParse(parser, true, "10:20:30.040"); 243 assertParse(parser, true, "10.5"); 244 assertParse(parser, false, "10:20:30.040+02:00"); 245 assertParse(parser, false, "10.5+02:00"); 246 247 assertParse(parser, true, "00:00:10.512345678"); 248 // result is offset by London DST in 1970-01-01 249 assertEquals(10512, parser.parseMillis("00:00:10.512345678") + DateTimeZone.getDefault().getOffset(0L)); 250 } 251 252 //----------------------------------------------------------------------- 253 public void test_dateTimeParser() { 254 DateTimeFormatter parser = ISODateTimeFormat.dateTimeParser(); 255 assertParse(parser, true, "2006-06-09"); 256 assertParse(parser, true, "2006-W27-3"); 257 assertParse(parser, true, "2006-123"); 258 assertParse(parser, true, "2006-06-09T+02:00"); 259 assertParse(parser, true, "2006-W27-3T+02:00"); 260 assertParse(parser, true, "2006-123T+02:00"); 261 262 assertParse(parser, true, "2006-06-09T10:20:30.040"); 263 assertParse(parser, true, "2006-W27-3T10:20:30.040"); 264 assertParse(parser, true, "2006-123T10:20:30.040"); 265 assertParse(parser, true, "2006-06-09T10:20:30.040+02:00"); 266 assertParse(parser, true, "2006-W27-3T10:20:30.040+02:00"); 267 assertParse(parser, true, "2006-123T10:20:30.040+02:00"); 268 269 assertParse(parser, true, "T10:20:30.040"); 270 assertParse(parser, true, "T10.5"); 271 assertParse(parser, true, "T10:20:30.040+02:00"); 272 assertParse(parser, true, "T10.5+02:00"); 273 274 assertParse(parser, false, "10:20:30.040"); 275 assertParse(parser, false, "10.5"); 276 assertParse(parser, false, "10:20:30.040+02:00"); 277 assertParse(parser, false, "10.5+02:00"); 278 } 279 280 //----------------------------------------------------------------------- 281 public void test_dateOptionalTimeParser() { 282 DateTimeFormatter parser = ISODateTimeFormat.dateOptionalTimeParser(); 283 assertParse(parser, true, "2006-06-09"); 284 assertParse(parser, true, "2006-W27-3"); 285 assertParse(parser, true, "2006-123"); 286 assertParse(parser, true, "2006-06-09T+02:00"); 287 assertParse(parser, true, "2006-W27-3T+02:00"); 288 assertParse(parser, true, "2006-123T+02:00"); 289 290 assertParse(parser, true, "2006-06-09T10:20:30.040"); 291 assertParse(parser, true, "2006-W27-3T10:20:30.040"); 292 assertParse(parser, true, "2006-123T10:20:30.040"); 293 assertParse(parser, true, "2006-06-09T10:20:30.040+02:00"); 294 assertParse(parser, true, "2006-W27-3T10:20:30.040+02:00"); 295 assertParse(parser, true, "2006-123T10:20:30.040+02:00"); 296 297 assertParse(parser, false, "T10:20:30.040"); 298 assertParse(parser, false, "T10.5"); 299 assertParse(parser, false, "T10:20:30.040+02:00"); 300 assertParse(parser, false, "T10.5+02:00"); 301 302 assertParse(parser, false, "10:20:30.040"); 303 assertParse(parser, false, "10.5"); 304 assertParse(parser, false, "10:20:30.040+02:00"); 305 assertParse(parser, false, "10.5+02:00"); 306 } 307 308 //----------------------------------------------------------------------- 309 public void test_localDateOptionalTimeParser() { 310 DateTimeFormatter parser = ISODateTimeFormat.localDateOptionalTimeParser(); 311 assertEquals(DateTimeZone.UTC, parser.getZone()); 312 assertParse(parser, true, "2006-06-09"); 313 assertParse(parser, true, "2006-W27-3"); 314 assertParse(parser, true, "2006-123"); 315 assertParse(parser, false, "2006-06-09T+02:00"); 316 assertParse(parser, false, "2006-W27-3T+02:00"); 317 assertParse(parser, false, "2006-123T+02:00"); 318 319 assertParse(parser, true, "2006-06-09T10:20:30.040"); 320 assertParse(parser, true, "2006-W27-3T10:20:30.040"); 321 assertParse(parser, true, "2006-123T10:20:30.040"); 322 assertParse(parser, false, "2006-06-09T10:20:30.040+02:00"); 323 assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00"); 324 assertParse(parser, false, "2006-123T10:20:30.040+02:00"); 325 326 assertParse(parser, false, "T10:20:30.040"); 327 assertParse(parser, false, "T10.5"); 328 assertParse(parser, false, "T10:20:30.040+02:00"); 329 assertParse(parser, false, "T10.5+02:00"); 330 331 assertParse(parser, false, "10:20:30.040"); 332 assertParse(parser, false, "10.5"); 333 assertParse(parser, false, "10:20:30.040+02:00"); 334 assertParse(parser, false, "10.5+02:00"); 335 } 336 337 //----------------------------------------------------------------------- 338 //----------------------------------------------------------------------- 339 //----------------------------------------------------------------------- 340 public void test_date() { 341 DateTimeFormatter parser = ISODateTimeFormat.date(); 342 assertParse(parser, "2006-02-04", new DateTime(2006, 2, 4, 0, 0, 0, 0)); 343 assertParse(parser, "2006-2-04", new DateTime(2006, 2, 4, 0, 0, 0, 0)); 344 assertParse(parser, "2006-02-4", new DateTime(2006, 2, 4, 0, 0, 0, 0)); 345 assertParse(parser, "2006-2-4", new DateTime(2006, 2, 4, 0, 0, 0, 0)); 346 assertParse(parser, false, "2006-02-"); 347 assertParse(parser, false, "2006-02"); 348 assertParse(parser, false, "2006--4"); 349 assertParse(parser, false, "2006-1"); 350 assertParse(parser, false, "2006"); 351 } 352 353 //----------------------------------------------------------------------- 354 public void test_time() { 355 DateTimeZone.setDefault(DateTimeZone.UTC); 356 DateTimeFormatter parser = ISODateTimeFormat.time(); 357 assertParse(parser, "10:20:30.400999999Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 358 assertParse(parser, "10:20:30.400Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 359 assertParse(parser, "10:20:30.40Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 360 assertParse(parser, "10:20:30.4Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 361 assertParse(parser, "5:6:7.8Z", new DateTime(1970, 1, 1, 5, 6, 7, 800)); 362 assertParse(parser, false, "10:20.400Z"); 363 assertParse(parser, false, "10:2.400Z"); 364 assertParse(parser, false, "10.400Z"); 365 assertParse(parser, false, "1.400Z"); 366 } 367 368 //----------------------------------------------------------------------- 369 public void test_timeNoMillis() { 370 DateTimeZone.setDefault(DateTimeZone.UTC); 371 DateTimeFormatter parser = ISODateTimeFormat.timeNoMillis(); 372 assertParse(parser, "10:20:30Z", new DateTime(1970, 1, 1, 10, 20, 30, 0)); 373 assertParse(parser, "5:6:7Z", new DateTime(1970, 1, 1, 5, 6, 7, 0)); 374 assertParse(parser, false, "10:20Z"); 375 assertParse(parser, false, "10:2Z"); 376 assertParse(parser, false, "10Z"); 377 assertParse(parser, false, "1Z"); 378 } 379 380 //----------------------------------------------------------------------- 381 public void test_tTime() { 382 DateTimeZone.setDefault(DateTimeZone.UTC); 383 DateTimeFormatter parser = ISODateTimeFormat.tTime(); 384 assertParse(parser, "T10:20:30.400999999Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 385 assertParse(parser, "T10:20:30.400Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 386 assertParse(parser, "T10:20:30.40Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 387 assertParse(parser, "T10:20:30.4Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 388 assertParse(parser, "T5:6:7.8Z", new DateTime(1970, 1, 1, 5, 6, 7, 800)); 389 assertParse(parser, false, "T10:20.400Z"); 390 assertParse(parser, false, "T102.400Z"); 391 assertParse(parser, false, "T10.400Z"); 392 assertParse(parser, false, "T1.400Z"); 393 } 394 395 //----------------------------------------------------------------------- 396 public void test_tTimeNoMillis() { 397 DateTimeZone.setDefault(DateTimeZone.UTC); 398 DateTimeFormatter parser = ISODateTimeFormat.tTimeNoMillis(); 399 assertParse(parser, "T10:20:30Z", new DateTime(1970, 1, 1, 10, 20, 30, 0)); 400 assertParse(parser, "T5:6:7Z", new DateTime(1970, 1, 1, 5, 6, 7, 0)); 401 assertParse(parser, false, "T10:20Z"); 402 assertParse(parser, false, "T10:2Z"); 403 assertParse(parser, false, "T10Z"); 404 assertParse(parser, false, "T1Z"); 405 } 406 407 //----------------------------------------------------------------------- 408 public void test_dateTime() { 409 DateTimeZone.setDefault(DateTimeZone.UTC); 410 DateTimeFormatter parser = ISODateTimeFormat.dateTime(); 411 assertParse(parser, "2006-02-04T10:20:30.400999999Z", new DateTime(2006, 2, 4, 10, 20, 30, 400)); 412 assertParse(parser, "2006-02-04T10:20:30.400Z", new DateTime(2006, 2, 4, 10, 20, 30, 400)); 413 assertParse(parser, "2006-02-04T10:20:30.40Z", new DateTime(2006, 2, 4, 10, 20, 30, 400)); 414 assertParse(parser, "2006-02-04T10:20:30.4Z", new DateTime(2006, 2, 4, 10, 20, 30, 400)); 415 assertParse(parser, "2006-02-4T10:20:30.400Z", new DateTime(2006, 2, 4, 10, 20, 30, 400)); 416 assertParse(parser, "2006-2-04T10:20:30.400Z", new DateTime(2006, 2, 4, 10, 20, 30, 400)); 417 assertParse(parser, "2006-2-4T10:20:30.400Z", new DateTime(2006, 2, 4, 10, 20, 30, 400)); 418 assertParse(parser, "2006-02-04T5:6:7.800Z", new DateTime(2006, 2, 4, 5, 6, 7, 800)); 419 assertParse(parser, false, "2006-02-T10:20:30.400Z"); 420 assertParse(parser, false, "2006-12T10:20:30.400Z"); 421 assertParse(parser, false, "2006-1T10:20:30.400Z"); 422 assertParse(parser, false, "2006T10:20:30.400Z"); 423 assertParse(parser, false, "200T10:20:30.400Z"); 424 assertParse(parser, false, "20T10:20:30.400Z"); 425 assertParse(parser, false, "2T10:20:30.400Z"); 426 assertParse(parser, false, "2006-02-04T10:20.400Z"); 427 assertParse(parser, false, "2006-02-04T10:2.400Z"); 428 assertParse(parser, false, "2006-02-04T10.400Z"); 429 assertParse(parser, false, "2006-02-04T1.400Z"); 430 } 431 432 //----------------------------------------------------------------------- 433 public void test_dateTimeNoMillis() { 434 DateTimeZone.setDefault(DateTimeZone.UTC); 435 DateTimeFormatter parser = ISODateTimeFormat.dateTimeNoMillis(); 436 assertParse(parser, "2006-02-04T10:20:30Z", new DateTime(2006, 2, 4, 10, 20, 30, 0)); 437 assertParse(parser, "2006-02-4T10:20:30Z", new DateTime(2006, 2, 4, 10, 20, 30, 0)); 438 assertParse(parser, "2006-2-04T10:20:30Z", new DateTime(2006, 2, 4, 10, 20, 30, 0)); 439 assertParse(parser, "2006-2-4T10:20:30Z", new DateTime(2006, 2, 4, 10, 20, 30, 0)); 440 assertParse(parser, "2006-02-04T5:6:7Z", new DateTime(2006, 2, 4, 5, 6, 7, 0)); 441 assertParse(parser, false, "2006-02-T10:20:30Z"); 442 assertParse(parser, false, "2006-12T10:20:30Z"); 443 assertParse(parser, false, "2006-1T10:20:30Z"); 444 assertParse(parser, false, "2006T10:20:30Z"); 445 assertParse(parser, false, "200T10:20:30Z"); 446 assertParse(parser, false, "20T10:20:30Z"); 447 assertParse(parser, false, "2T10:20:30Z"); 448 assertParse(parser, false, "2006-02-04T10:20Z"); 449 assertParse(parser, false, "2006-02-04T10:2Z"); 450 assertParse(parser, false, "2006-02-04T10Z"); 451 assertParse(parser, false, "2006-02-04T1Z"); 452 } 453 454 //----------------------------------------------------------------------- 455 public void test_ordinalDate() { 456 DateTimeFormatter parser = ISODateTimeFormat.ordinalDate(); 457 assertParse(parser, "2006-123", new DateTime(2006, 1, 1, 0, 0, 0, 0).withDayOfYear(123)); 458 assertParse(parser, "2006-12", new DateTime(2006, 1, 1, 0, 0, 0, 0).withDayOfYear(12)); 459 assertParse(parser, "2006-1", new DateTime(2006, 1, 1, 0, 0, 0, 0).withDayOfYear(1)); 460 assertParse(parser, false, "2006-"); 461 assertParse(parser, false, "2006"); 462 } 463 464 //----------------------------------------------------------------------- 465 public void test_ordinalDateTime() { 466 DateTimeZone.setDefault(DateTimeZone.UTC); 467 DateTimeFormatter parser = ISODateTimeFormat.ordinalDateTime(); 468 assertParse(parser, "2006-123T10:20:30.400999999Z", new DateTime(2006, 1, 1, 10, 20, 30, 400).withDayOfYear(123)); 469 assertParse(parser, "2006-123T10:20:30.400Z", new DateTime(2006, 1, 1, 10, 20, 30, 400).withDayOfYear(123)); 470 assertParse(parser, "2006-123T10:20:30.40Z", new DateTime(2006, 1, 1, 10, 20, 30, 400).withDayOfYear(123)); 471 assertParse(parser, "2006-123T10:20:30.4Z", new DateTime(2006, 1, 1, 10, 20, 30, 400).withDayOfYear(123)); 472 assertParse(parser, "2006-12T10:20:30.400Z", new DateTime(2006, 1, 1, 10, 20, 30, 400).withDayOfYear(12)); 473 assertParse(parser, "2006-1T10:20:30.400Z", new DateTime(2006, 1, 1, 10, 20, 30, 400).withDayOfYear(1)); 474 assertParse(parser, "2006-123T5:6:7.800Z", new DateTime(2006, 1, 1, 5, 6, 7, 800).withDayOfYear(123)); 475 assertParse(parser, false, "2006-T10:20:30.400Z"); 476 assertParse(parser, false, "2006T10:20:30.400Z"); 477 assertParse(parser, false, "2006-123T10:20.400Z"); 478 assertParse(parser, false, "2006-123T10:2.400Z"); 479 assertParse(parser, false, "2006-123T10.400Z"); 480 assertParse(parser, false, "2006-123T1.400Z"); 481 } 482 483 //----------------------------------------------------------------------- 484 public void test_ordinalDateTimeNoMillis() { 485 DateTimeZone.setDefault(DateTimeZone.UTC); 486 DateTimeFormatter parser = ISODateTimeFormat.ordinalDateTimeNoMillis(); 487 assertParse(parser, "2006-123T10:20:30Z", new DateTime(2006, 1, 1, 10, 20, 30, 0).withDayOfYear(123)); 488 assertParse(parser, "2006-12T10:20:30Z", new DateTime(2006, 1, 1, 10, 20, 30, 0).withDayOfYear(12)); 489 assertParse(parser, "2006-1T10:20:30Z", new DateTime(2006, 1, 1, 10, 20, 30, 0).withDayOfYear(1)); 490 assertParse(parser, "2006-123T5:6:7Z", new DateTime(2006, 1, 1, 5, 6, 7, 0).withDayOfYear(123)); 491 assertParse(parser, false, "2006-T10:20:30Z"); 492 assertParse(parser, false, "2006T10:20:30Z"); 493 assertParse(parser, false, "2006-123T10:20Z"); 494 assertParse(parser, false, "2006-123T10:2Z"); 495 assertParse(parser, false, "2006-123T10Z"); 496 assertParse(parser, false, "2006-123T1Z"); 497 } 498 499 //----------------------------------------------------------------------- 500 public void test_weekDate() { 501 DateTimeFormatter parser = ISODateTimeFormat.weekDate(); 502 assertParse(parser, "2006-W27-3", new DateTime(2006, 6, 1, 0, 0, 0, 0).withWeekOfWeekyear(27).withDayOfWeek(3)); 503 assertParse(parser, "2006-W2-3", new DateTime(2006, 6, 1, 0, 0, 0, 0).withWeekOfWeekyear(2).withDayOfWeek(3)); 504 assertParse(parser, false, "2006-W-3"); 505 assertParse(parser, false, "2006-W27-"); 506 assertParse(parser, false, "2006-W27"); 507 assertParse(parser, false, "2006-W2"); 508 assertParse(parser, false, "2006-W"); 509 } 510 511 //----------------------------------------------------------------------- 512 public void test_weekDateTime() { 513 DateTimeZone.setDefault(DateTimeZone.UTC); 514 DateTimeFormatter parser = ISODateTimeFormat.weekDateTime(); 515 assertParse(parser, "2006-W27-3T10:20:30.400999999Z", new DateTime(2006, 6, 1, 10, 20, 30, 400).withWeekOfWeekyear(27).withDayOfWeek(3)); 516 assertParse(parser, "2006-W27-3T10:20:30.400Z", new DateTime(2006, 6, 1, 10, 20, 30, 400).withWeekOfWeekyear(27).withDayOfWeek(3)); 517 assertParse(parser, "2006-W27-3T10:20:30.40Z", new DateTime(2006, 6, 1, 10, 20, 30, 400).withWeekOfWeekyear(27).withDayOfWeek(3)); 518 assertParse(parser, "2006-W27-3T10:20:30.4Z", new DateTime(2006, 6, 1, 10, 20, 30, 400).withWeekOfWeekyear(27).withDayOfWeek(3)); 519 assertParse(parser, "2006-W2-3T10:20:30.400Z", new DateTime(2006, 6, 1, 10, 20, 30, 400).withWeekOfWeekyear(2).withDayOfWeek(3)); 520 assertParse(parser, "2006-W27-3T5:6:7.800Z", new DateTime(2006, 6, 1, 5, 6, 7, 800).withWeekOfWeekyear(27).withDayOfWeek(3)); 521 assertParse(parser, false, "2006-W27-T10:20:30.400Z"); 522 assertParse(parser, false, "2006-W27T10:20:30.400Z"); 523 assertParse(parser, false, "2006-W2T10:20:30.400Z"); 524 assertParse(parser, false, "2006-W-3T10:20:30.400Z"); 525 assertParse(parser, false, "2006-W27-3T10:20.400Z"); 526 assertParse(parser, false, "2006-W27-3T10:2.400Z"); 527 assertParse(parser, false, "2006-W27-3T10.400Z"); 528 assertParse(parser, false, "2006-W27-3T1.400Z"); 529 } 530 531 //----------------------------------------------------------------------- 532 public void test_weekDateTimeNoMillis() { 533 DateTimeZone.setDefault(DateTimeZone.UTC); 534 DateTimeFormatter parser = ISODateTimeFormat.weekDateTimeNoMillis(); 535 assertParse(parser, "2006-W27-3T10:20:30Z", new DateTime(2006, 6, 1, 10, 20, 30, 0).withWeekOfWeekyear(27).withDayOfWeek(3)); 536 assertParse(parser, "2006-W2-3T10:20:30Z", new DateTime(2006, 6, 1, 10, 20, 30, 0).withWeekOfWeekyear(2).withDayOfWeek(3)); 537 assertParse(parser, "2006-W27-3T5:6:7Z", new DateTime(2006, 6, 1, 5, 6, 7, 0).withWeekOfWeekyear(27).withDayOfWeek(3)); 538 assertParse(parser, false, "2006-W27-T10:20:30Z"); 539 assertParse(parser, false, "2006-W27T10:20:30Z"); 540 assertParse(parser, false, "2006-W2T10:20:30Z"); 541 assertParse(parser, false, "2006-W-3T10:20:30Z"); 542 assertParse(parser, false, "2006-W27-3T10:20Z"); 543 assertParse(parser, false, "2006-W27-3T10:2Z"); 544 assertParse(parser, false, "2006-W27-3T10Z"); 545 assertParse(parser, false, "2006-W27-3T1Z"); 546 } 547 548 //----------------------------------------------------------------------- 549 //----------------------------------------------------------------------- 550 //----------------------------------------------------------------------- 551 public void test_basicDate() { 552 DateTimeFormatter parser = ISODateTimeFormat.basicDate(); 553 assertParse(parser, "20060204", new DateTime(2006, 2, 4, 0, 0, 0, 0)); 554 assertParse(parser, false, "2006024"); 555 assertParse(parser, false, "200602"); 556 assertParse(parser, false, "20061"); 557 assertParse(parser, false, "2006"); 558 } 559 560 //----------------------------------------------------------------------- 561 public void test_basicTime() { 562 DateTimeZone.setDefault(DateTimeZone.UTC); 563 DateTimeFormatter parser = ISODateTimeFormat.basicTime(); 564 assertParse(parser, "102030.400999999Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 565 assertParse(parser, "102030.400Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 566 assertParse(parser, "102030.40Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 567 assertParse(parser, "102030.4Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 568 assertParse(parser, false, "10203.400Z"); 569 assertParse(parser, false, "1020.400Z"); 570 assertParse(parser, false, "102.400Z"); 571 assertParse(parser, false, "10.400Z"); 572 assertParse(parser, false, "1.400Z"); 573 } 574 575 //----------------------------------------------------------------------- 576 public void test_basicTimeNoMillis() { 577 DateTimeZone.setDefault(DateTimeZone.UTC); 578 DateTimeFormatter parser = ISODateTimeFormat.basicTimeNoMillis(); 579 assertParse(parser, "102030Z", new DateTime(1970, 1, 1, 10, 20, 30, 0)); 580 assertParse(parser, false, "10203Z"); 581 assertParse(parser, false, "1020Z"); 582 assertParse(parser, false, "102Z"); 583 assertParse(parser, false, "10Z"); 584 assertParse(parser, false, "1Z"); 585 } 586 587 //----------------------------------------------------------------------- 588 public void test_basicTTime() { 589 DateTimeZone.setDefault(DateTimeZone.UTC); 590 DateTimeFormatter parser = ISODateTimeFormat.basicTTime(); 591 assertParse(parser, "T102030.400999999Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 592 assertParse(parser, "T102030.400Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 593 assertParse(parser, "T102030.40Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 594 assertParse(parser, "T102030.4Z", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 595 assertParse(parser, false, "T10203.400Z"); 596 assertParse(parser, false, "T1020.400Z"); 597 assertParse(parser, false, "T102.400Z"); 598 assertParse(parser, false, "T10.400Z"); 599 assertParse(parser, false, "T1.400Z"); 600 } 601 602 //----------------------------------------------------------------------- 603 public void test_basicTTimeNoMillis() { 604 DateTimeZone.setDefault(DateTimeZone.UTC); 605 DateTimeFormatter parser = ISODateTimeFormat.basicTTimeNoMillis(); 606 assertParse(parser, "T102030Z", new DateTime(1970, 1, 1, 10, 20, 30, 0)); 607 assertParse(parser, false, "T10203Z"); 608 assertParse(parser, false, "T1020Z"); 609 assertParse(parser, false, "T102Z"); 610 assertParse(parser, false, "T10Z"); 611 assertParse(parser, false, "T1Z"); 612 } 613 614 //----------------------------------------------------------------------- 615 public void test_basicDateTime() { 616 DateTimeZone.setDefault(DateTimeZone.UTC); 617 DateTimeFormatter parser = ISODateTimeFormat.basicDateTime(); 618 assertParse(parser, "20061204T102030.400999999Z", new DateTime(2006, 12, 4, 10, 20, 30, 400)); 619 assertParse(parser, "20061204T102030.400Z", new DateTime(2006, 12, 4, 10, 20, 30, 400)); 620 assertParse(parser, "20061204T102030.40Z", new DateTime(2006, 12, 4, 10, 20, 30, 400)); 621 assertParse(parser, "20061204T102030.4Z", new DateTime(2006, 12, 4, 10, 20, 30, 400)); 622 assertParse(parser, false, "2006120T102030.400Z"); 623 assertParse(parser, false, "200612T102030.400Z"); 624 assertParse(parser, false, "20061T102030.400Z"); 625 assertParse(parser, false, "2006T102030.400Z"); 626 assertParse(parser, false, "200T102030.400Z"); 627 assertParse(parser, false, "20T102030.400Z"); 628 assertParse(parser, false, "2T102030.400Z"); 629 assertParse(parser, false, "20061204T10203.400Z"); 630 assertParse(parser, false, "20061204T1020.400Z"); 631 assertParse(parser, false, "20061204T102.400Z"); 632 assertParse(parser, false, "20061204T10.400Z"); 633 assertParse(parser, false, "20061204T1.400Z"); 634 } 635 636 //----------------------------------------------------------------------- 637 public void test_basicDateTimeNoMillis() { 638 DateTimeZone.setDefault(DateTimeZone.UTC); 639 DateTimeFormatter parser = ISODateTimeFormat.basicDateTimeNoMillis(); 640 assertParse(parser, "20061204T102030Z", new DateTime(2006, 12, 4, 10, 20, 30, 0)); 641 assertParse(parser, false, "2006120T102030Z"); 642 assertParse(parser, false, "200612T102030Z"); 643 assertParse(parser, false, "20061T102030Z"); 644 assertParse(parser, false, "2006T102030Z"); 645 assertParse(parser, false, "200T102030Z"); 646 assertParse(parser, false, "20T102030Z"); 647 assertParse(parser, false, "2T102030Z"); 648 assertParse(parser, false, "20061204T10203Z"); 649 assertParse(parser, false, "20061204T1020Z"); 650 assertParse(parser, false, "20061204T102Z"); 651 assertParse(parser, false, "20061204T10Z"); 652 assertParse(parser, false, "20061204T1Z"); 653 } 654 655 //----------------------------------------------------------------------- 656 public void test_basicOrdinalDate() { 657 DateTimeFormatter parser = ISODateTimeFormat.basicOrdinalDate(); 658 assertParse(parser, "2006123", new DateTime(2006, 1, 1, 0, 0, 0, 0).withDayOfYear(123)); 659 assertParse(parser, false, "200612"); 660 assertParse(parser, false, "20061"); 661 assertParse(parser, false, "2006"); 662 } 663 664 //----------------------------------------------------------------------- 665 public void test_basicOrdinalDateTime() { 666 DateTimeZone.setDefault(DateTimeZone.UTC); 667 DateTimeFormatter parser = ISODateTimeFormat.basicOrdinalDateTime(); 668 assertParse(parser, "2006123T102030.400999999Z", new DateTime(2006, 1, 1, 10, 20, 30, 400).withDayOfYear(123)); 669 assertParse(parser, "2006123T102030.400Z", new DateTime(2006, 1, 1, 10, 20, 30, 400).withDayOfYear(123)); 670 assertParse(parser, "2006123T102030.40Z", new DateTime(2006, 1, 1, 10, 20, 30, 400).withDayOfYear(123)); 671 assertParse(parser, "2006123T102030.4Z", new DateTime(2006, 1, 1, 10, 20, 30, 400).withDayOfYear(123)); 672 assertParse(parser, false, "200612T102030.400Z"); 673 assertParse(parser, false, "20061T102030.400Z"); 674 assertParse(parser, false, "2006T102030.400Z"); 675 assertParse(parser, false, "200T102030.400Z"); 676 assertParse(parser, false, "20T102030.400Z"); 677 assertParse(parser, false, "2T102030.400Z"); 678 assertParse(parser, false, "2006123T10203.400Z"); 679 assertParse(parser, false, "2006123T1020.400Z"); 680 assertParse(parser, false, "2006123T102.400Z"); 681 assertParse(parser, false, "2006123T10.400Z"); 682 assertParse(parser, false, "2006123T1.400Z"); 683 } 684 685 //----------------------------------------------------------------------- 686 public void test_basicOrdinalDateTimeNoMillis() { 687 DateTimeZone.setDefault(DateTimeZone.UTC); 688 DateTimeFormatter parser = ISODateTimeFormat.basicOrdinalDateTimeNoMillis(); 689 assertParse(parser, "2006123T102030Z", new DateTime(2006, 1, 1, 10, 20, 30, 0).withDayOfYear(123)); 690 assertParse(parser, false, "200612T102030Z"); 691 assertParse(parser, false, "20061T102030Z"); 692 assertParse(parser, false, "2006T102030Z"); 693 assertParse(parser, false, "200T102030Z"); 694 assertParse(parser, false, "20T102030Z"); 695 assertParse(parser, false, "2T102030Z"); 696 assertParse(parser, false, "2006123T10203Z"); 697 assertParse(parser, false, "2006123T1020Z"); 698 assertParse(parser, false, "2006123T102Z"); 699 assertParse(parser, false, "2006123T10Z"); 700 assertParse(parser, false, "2006123T1Z"); 701 } 702 703 //----------------------------------------------------------------------- 704 public void test_basicWeekDate() { 705 DateTimeFormatter parser = ISODateTimeFormat.basicWeekDate(); 706 assertParse(parser, "2006W273", new DateTime(2006, 6, 1, 0, 0, 0, 0).withWeekOfWeekyear(27).withDayOfWeek(3)); 707 assertParse(parser, false, "2006W27"); 708 assertParse(parser, false, "2006W2"); 709 assertParse(parser, false, "2006W"); 710 } 711 712 //----------------------------------------------------------------------- 713 public void test_basicWeekDateTime() { 714 DateTimeZone.setDefault(DateTimeZone.UTC); 715 DateTimeFormatter parser = ISODateTimeFormat.basicWeekDateTime(); 716 assertParse(parser, "2006W273T102030.400999999Z", new DateTime(2006, 6, 1, 10, 20, 30, 400).withWeekOfWeekyear(27).withDayOfWeek(3)); 717 assertParse(parser, "2006W273T102030.400Z", new DateTime(2006, 6, 1, 10, 20, 30, 400).withWeekOfWeekyear(27).withDayOfWeek(3)); 718 assertParse(parser, "2006W273T102030.40Z", new DateTime(2006, 6, 1, 10, 20, 30, 400).withWeekOfWeekyear(27).withDayOfWeek(3)); 719 assertParse(parser, "2006W273T102030.4Z", new DateTime(2006, 6, 1, 10, 20, 30, 400).withWeekOfWeekyear(27).withDayOfWeek(3)); 720 assertParse(parser, false, "2006W27T102030.400Z"); 721 assertParse(parser, false, "2006W2T102030.400Z"); 722 assertParse(parser, false, "2006W273T10203.400Z"); 723 assertParse(parser, false, "2006W273T1020.400Z"); 724 assertParse(parser, false, "2006W273T102.400Z"); 725 assertParse(parser, false, "2006W273T10.400Z"); 726 assertParse(parser, false, "2006W273T1.400Z"); 727 } 728 729 //----------------------------------------------------------------------- 730 public void test_basicWeekDateTimeNoMillis() { 731 DateTimeZone.setDefault(DateTimeZone.UTC); 732 DateTimeFormatter parser = ISODateTimeFormat.basicWeekDateTimeNoMillis(); 733 assertParse(parser, "2006W273T102030Z", new DateTime(2006, 6, 1, 10, 20, 30, 0).withWeekOfWeekyear(27).withDayOfWeek(3)); 734 assertParse(parser, false, "2006W27T102030Z"); 735 assertParse(parser, false, "2006W2T102030Z"); 736 assertParse(parser, false, "2006W273T10203Z"); 737 assertParse(parser, false, "2006W273T1020Z"); 738 assertParse(parser, false, "2006W273T102Z"); 739 assertParse(parser, false, "2006W273T10Z"); 740 assertParse(parser, false, "2006W273T1Z"); 741 } 742 743 //----------------------------------------------------------------------- 744 //----------------------------------------------------------------------- 745 //----------------------------------------------------------------------- 746 public void test_hourMinute() { 747 DateTimeZone.setDefault(DateTimeZone.UTC); 748 DateTimeFormatter parser = ISODateTimeFormat.hourMinute(); 749 assertParse(parser, "10:20", new DateTime(1970, 1, 1, 10, 20, 0, 0)); 750 assertParse(parser, "5:6", new DateTime(1970, 1, 1, 5, 6, 0, 0)); 751 assertParse(parser, false, "10:20:30.400999999"); 752 assertParse(parser, false, "10:20:30.400"); 753 assertParse(parser, false, "10:20:30"); 754 assertParse(parser, false, "10:20.400"); 755 assertParse(parser, false, "10:2.400"); 756 assertParse(parser, false, "10.400"); 757 assertParse(parser, false, "1.400"); 758 } 759 760 //----------------------------------------------------------------------- 761 public void test_hourMinuteSecond() { 762 DateTimeZone.setDefault(DateTimeZone.UTC); 763 DateTimeFormatter parser = ISODateTimeFormat.hourMinuteSecond(); 764 assertParse(parser, "10:20:30", new DateTime(1970, 1, 1, 10, 20, 30, 0)); 765 assertParse(parser, "5:6:7", new DateTime(1970, 1, 1, 5, 6, 7, 0)); 766 assertParse(parser, false, "10:20:30.400999999"); 767 assertParse(parser, false, "10:20:30.400"); 768 assertParse(parser, false, "10:20:30.4"); 769 assertParse(parser, false, "10:20.400"); 770 assertParse(parser, false, "10:2.400"); 771 assertParse(parser, false, "10.400"); 772 assertParse(parser, false, "1.400"); 773 } 774 775 //----------------------------------------------------------------------- 776 public void test_hourMinuteSecondMillis() { 777 DateTimeZone.setDefault(DateTimeZone.UTC); 778 DateTimeFormatter parser = ISODateTimeFormat.hourMinuteSecondMillis(); 779 assertParse(parser, "10:20:30.400", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 780 assertParse(parser, "10:20:30.40", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 781 assertParse(parser, "10:20:30.4", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 782 assertParse(parser, "5:6:7.8", new DateTime(1970, 1, 1, 5, 6, 7, 800)); 783 assertParse(parser, false, "10:20:30.400999999"); 784 assertParse(parser, false, "10:20.400"); 785 assertParse(parser, false, "10:2.400"); 786 assertParse(parser, false, "10.400"); 787 assertParse(parser, false, "1.400"); 788 } 789 790 //----------------------------------------------------------------------- 791 public void test_hourMinuteSecondFraction() { 792 DateTimeZone.setDefault(DateTimeZone.UTC); 793 DateTimeFormatter parser = ISODateTimeFormat.hourMinuteSecondFraction(); 794 assertParse(parser, "10:20:30.400999999", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 795 assertParse(parser, "10:20:30.400", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 796 assertParse(parser, "10:20:30.40", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 797 assertParse(parser, "10:20:30.4", new DateTime(1970, 1, 1, 10, 20, 30, 400)); 798 assertParse(parser, "5:6:7.8", new DateTime(1970, 1, 1, 5, 6, 7, 800)); 799 assertParse(parser, false, "10:20.400"); 800 assertParse(parser, false, "10:2.400"); 801 assertParse(parser, false, "10.400"); 802 assertParse(parser, false, "1.400"); 803 } 804 805 //----------------------------------------------------------------------- 806 //----------------------------------------------------------------------- 807 //----------------------------------------------------------------------- 808 private void assertParse(DateTimeFormatter parser, boolean expected, String str) { 809 if (expected) { 810 parser.parseMillis(str); 811 } else { 812 try { 813 parser.parseMillis(str); 814 fail(); 815 } catch (IllegalArgumentException ex) { 816 // expected 817 } 818 } 819 } 820 821 private void assertParse(DateTimeFormatter parser, String str, DateTime expected) { 822 DateTime dt = parser.parseDateTime(str); 823 assertEquals(expected, dt); 824 } 825 826 }