/**
  * Test the creation methods.
  */
 function test_full_format()
 {
     $parser = new ISO8601StringParser('2005-05-23T15:25:10-04:00');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), 2005);
     $this->assertEqual($parser->month(), 5);
     $this->assertEqual($parser->day(), 23);
     $this->assertEqual($parser->hour(), 15);
     $this->assertEqual($parser->minute(), 25);
     $this->assertEqual($parser->second(), 10);
     $this->assertEqual($parser->offsetHour(), -4);
     $this->assertEqual($parser->offsetMinute(), 0);
     $this->assertEqual($parser->offsetSecond(), NULL);
     $parser = new ISO8601StringParser('2005-05-03 15:25:10-04:30');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), 2005);
     $this->assertEqual($parser->month(), 5);
     $this->assertEqual($parser->day(), 3);
     $this->assertEqual($parser->hour(), 15);
     $this->assertEqual($parser->minute(), 25);
     $this->assertEqual($parser->second(), 10);
     $this->assertEqual($parser->offsetHour(), -4);
     $this->assertEqual($parser->offsetMinute(), -30);
     $this->assertEqual($parser->offsetSecond(), NULL);
     $parser = new ISO8601StringParser('20050523152510-0400');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), 2005);
     $this->assertEqual($parser->month(), 5);
     $this->assertEqual($parser->day(), 23);
     $this->assertEqual($parser->hour(), 15);
     $this->assertEqual($parser->minute(), 25);
     $this->assertEqual($parser->second(), 10);
     $this->assertEqual($parser->offsetHour(), -4);
     $this->assertEqual($parser->offsetMinute(), 0);
     $this->assertEqual($parser->offsetSecond(), NULL);
     $parser = new ISO8601StringParser('20050523152510');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), 2005);
     $this->assertEqual($parser->month(), 5);
     $this->assertEqual($parser->day(), 23);
     $this->assertEqual($parser->hour(), 15);
     $this->assertEqual($parser->minute(), 25);
     $this->assertEqual($parser->second(), 10);
     $this->assertEqual($parser->offsetHour(), NULL);
     $this->assertEqual($parser->offsetMinute(), NULL);
     $this->assertEqual($parser->offsetSecond(), NULL);
     $parser = new ISO8601StringParser('2005-05-03 15:25:10Z');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), 2005);
     $this->assertEqual($parser->month(), 5);
     $this->assertEqual($parser->day(), 3);
     $this->assertEqual($parser->hour(), 15);
     $this->assertEqual($parser->minute(), 25);
     $this->assertEqual($parser->second(), 10);
     $this->assertEqual($parser->offsetHour(), 0);
     $this->assertEqual($parser->offsetMinute(), 0);
     $this->assertEqual($parser->offsetSecond(), 0);
     $parser = new ISO8601StringParser('2006-11-12 18:00:00');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), 2006);
     $this->assertEqual($parser->month(), 11);
     $this->assertEqual($parser->day(), 12);
     $this->assertEqual($parser->hour(), 18);
     $this->assertEqual($parser->minute(), 0);
     $this->assertEqual($parser->second(), 0);
     $this->assertEqual($parser->offsetHour(), 0);
     $this->assertEqual($parser->offsetMinute(), 0);
     $this->assertEqual($parser->offsetSecond(), 0);
     $parser = new ISO8601StringParser('2005-05-03');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), 2005);
     $this->assertEqual($parser->month(), 5);
     $this->assertEqual($parser->day(), 3);
     $this->assertEqual($parser->hour(), NULL);
     $this->assertEqual($parser->minute(), NULL);
     $this->assertEqual($parser->second(), NULL);
     $this->assertEqual($parser->offsetHour(), NULL);
     $this->assertEqual($parser->offsetMinute(), NULL);
     $this->assertEqual($parser->offsetSecond(), NULL);
     $parser = new ISO8601StringParser('20050503');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), 2005);
     $this->assertEqual($parser->month(), 5);
     $this->assertEqual($parser->day(), 3);
     $this->assertEqual($parser->hour(), NULL);
     $this->assertEqual($parser->minute(), NULL);
     $this->assertEqual($parser->second(), NULL);
     $this->assertEqual($parser->offsetHour(), NULL);
     $this->assertEqual($parser->offsetMinute(), NULL);
     $this->assertEqual($parser->offsetSecond(), NULL);
     $parser = new ISO8601StringParser('2005-05');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), 2005);
     $this->assertEqual($parser->month(), 5);
     $this->assertEqual($parser->day(), NULL);
     $this->assertEqual($parser->hour(), NULL);
     $this->assertEqual($parser->minute(), NULL);
     $this->assertEqual($parser->second(), NULL);
     $this->assertEqual($parser->offsetHour(), NULL);
     $this->assertEqual($parser->offsetMinute(), NULL);
     $this->assertEqual($parser->offsetSecond(), NULL);
     $parser = new ISO8601StringParser('200505');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), 2005);
     $this->assertEqual($parser->month(), 5);
     $this->assertEqual($parser->day(), NULL);
     $this->assertEqual($parser->hour(), NULL);
     $this->assertEqual($parser->minute(), NULL);
     $this->assertEqual($parser->second(), NULL);
     $this->assertEqual($parser->offsetHour(), NULL);
     $this->assertEqual($parser->offsetMinute(), NULL);
     $this->assertEqual($parser->offsetSecond(), NULL);
     $parser = new ISO8601StringParser('2005');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), 2005);
     $this->assertEqual($parser->month(), NULL);
     $this->assertEqual($parser->day(), NULL);
     $this->assertEqual($parser->hour(), NULL);
     $this->assertEqual($parser->minute(), NULL);
     $this->assertEqual($parser->second(), NULL);
     $this->assertEqual($parser->offsetHour(), NULL);
     $this->assertEqual($parser->offsetMinute(), NULL);
     $this->assertEqual($parser->offsetSecond(), NULL);
     $parser = new ISO8601TimeStringParser('15:25:10Z');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), NULL);
     $this->assertEqual($parser->month(), NULL);
     $this->assertEqual($parser->day(), NULL);
     $this->assertEqual($parser->hour(), 15);
     $this->assertEqual($parser->minute(), 25);
     $this->assertEqual($parser->second(), 10);
     $this->assertEqual($parser->offsetHour(), 0);
     $this->assertEqual($parser->offsetMinute(), 0);
     $this->assertEqual($parser->offsetSecond(), 0);
     $parser = new ISO8601TimeStringParser('15:25:10');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), NULL);
     $this->assertEqual($parser->month(), NULL);
     $this->assertEqual($parser->day(), NULL);
     $this->assertEqual($parser->hour(), 15);
     $this->assertEqual($parser->minute(), 25);
     $this->assertEqual($parser->second(), 10);
     $this->assertEqual($parser->offsetHour(), NULL);
     $this->assertEqual($parser->offsetMinute(), NULL);
     $this->assertEqual($parser->offsetSecond(), NULL);
     $parser = new ISO8601TimeStringParser('T152510');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), NULL);
     $this->assertEqual($parser->month(), NULL);
     $this->assertEqual($parser->day(), NULL);
     $this->assertEqual($parser->hour(), 15);
     $this->assertEqual($parser->minute(), 25);
     $this->assertEqual($parser->second(), 10);
     $this->assertEqual($parser->offsetHour(), NULL);
     $this->assertEqual($parser->offsetMinute(), NULL);
     $this->assertEqual($parser->offsetSecond(), NULL);
     $parser = new ISO8601TimeStringParser('T152510.375');
     $this->assertTrue($parser->canHandle());
     $this->assertEqual($parser->year(), NULL);
     $this->assertEqual($parser->month(), NULL);
     $this->assertEqual($parser->day(), NULL);
     $this->assertEqual($parser->hour(), 15);
     $this->assertEqual($parser->minute(), 25);
     $this->assertEqual($parser->second(), 10.375);
     $this->assertEqual($parser->offsetHour(), NULL);
     $this->assertEqual($parser->offsetMinute(), NULL);
     $this->assertEqual($parser->offsetSecond(), NULL);
 }