public function testCreateTimestamp() { $this->assertSame(null, Parser::createTimestamp(null, null, null, null, null, null, null)); $this->assertSame(null, Parser::createTimestamp(null, null, null, '01', '01', '01', null)); $this->assertSame(null, Parser::createTimestamp(null, '01', '01', '01', '01', '01', null)); $this->assertSame(null, Parser::createTimestamp('1901', null, '01', '01', '01', '01', null)); $this->assertSame(null, Parser::createTimestamp('1901', '01', null, '01', '01', '01', null)); $dt = \DateTime::createFromFormat('Y-m-d H:i:s', '1901-01-01 01:01:01'); $this->assertSame($dt->getTimestamp(), Parser::createTimestamp('1901', '01', '01', '01', '01', '01', null)); $dt = \DateTime::createFromFormat('Y-m-d H:i:s', '1901-01-01 00:00:00'); $this->assertSame($dt->getTimestamp(), Parser::createTimestamp('1901', '01', '01', null, null, null, null)); $dt = \DateTime::createFromFormat('Y-m-d H:i:s', '1901-01-01 00:01:01'); $this->assertSame($dt->getTimestamp(), Parser::createTimestamp('1901', '01', '01', null, '01', '01', null)); $dt = \DateTime::createFromFormat('Y-m-d H:i:s', '1901-01-01 01:00:01'); $this->assertSame($dt->getTimestamp(), Parser::createTimestamp('1901', '01', '01', '01', null, '01', null)); $dt = \DateTime::createFromFormat('Y-m-d H:i:s', '1901-01-01 01:01:00'); $this->assertSame($dt->getTimestamp(), Parser::createTimestamp('1901', '01', '01', '01', '01', null, null)); $dt = \DateTime::createFromFormat('Y-m-d H:i:sT', '1901-01-01 01:01:01+0000'); $this->assertSame($dt->getTimestamp(), Parser::createTimestamp('1901', '01', '01', '01', '01', '01', '+0000')); $dt = \DateTime::createFromFormat('Y-m-d H:i:sT', '1901-01-01 01:01:01-0000'); $this->assertSame($dt->getTimestamp(), Parser::createTimestamp('1901', '01', '01', '01', '01', '01', '-0000')); $dt = \DateTime::createFromFormat('Y-m-d H:i:sT', '1901-01-01 01:01:01+0100'); $this->assertSame($dt->getTimestamp(), Parser::createTimestamp('1901', '01', '01', '01', '01', '01', '+0100')); $dt = \DateTime::createFromFormat('Y-m-d H:i:sT', '1901-01-01 01:01:01-0100'); $this->assertSame($dt->getTimestamp(), Parser::createTimestamp('1901', '01', '01', '01', '01', '01', '-0100')); }
/** * @depends testParseSource */ public function testImportSingleDateTime() { // full date $card = $this->importer->parseSource(<<<STR BEGIN:VCARD BDAY:19900101T010101Z BDAY:19900101T010101Z END:VCARD STR ); $birthday = $this->importer->importSingleDatetime($card->BDAY, 'Heartsentwined\\Vcard\\Entity\\Birthday'); $this->em->flush(); $this->assertCount(1, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\Birthday')->findAll()); $this->assertCount(1, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\DateTimeText')->findAll()); $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\Birthday', $birthday); $dateTimeText = $birthday->getValue(); $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\DateTimeText', $dateTimeText); $this->assertSame(Repository\DateTimeText::FULL, $dateTimeText->getFormat()); $this->assertSame(DateTimeParser::createTimestamp('1990', '01', '01', '01', '01', '01', '+0000'), $dateTimeText->getValue()->getTimestamp()); $this->assertSame('1990', $dateTimeText->getYear()); $this->assertSame('01', $dateTimeText->getMonth()); $this->assertSame('01', $dateTimeText->getDay()); $this->assertSame('01', $dateTimeText->getHour()); $this->assertSame('01', $dateTimeText->getMinute()); $this->assertSame('01', $dateTimeText->getSecond()); $this->assertSame('+0000', $dateTimeText->getTimezone()); $this->assertEmpty($dateTimeText->getValueText()); // partial date $card = $this->importer->parseSource(<<<STR BEGIN:VCARD BDAY:--0101 BDAY:--0101 END:VCARD STR ); $birthday = $this->importer->importSingleDatetime($card->BDAY, 'Heartsentwined\\Vcard\\Entity\\Birthday'); $this->em->flush(); $this->assertCount(2, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\Birthday')->findAll()); $this->assertCount(2, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\DateTimeText')->findAll()); $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\Birthday', $birthday); $dateTimeText = $birthday->getValue(); $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\DateTimeText', $dateTimeText); $this->assertSame(Repository\DateTimeText::PARTIAL, $dateTimeText->getFormat()); $this->assertEmpty($dateTimeText->getValue()); $this->assertEmpty($dateTimeText->getYear()); $this->assertSame('01', $dateTimeText->getMonth()); $this->assertSame('01', $dateTimeText->getDay()); $this->assertEmpty($dateTimeText->getHour()); $this->assertEmpty($dateTimeText->getMinute()); $this->assertEmpty($dateTimeText->getSecond()); $this->assertEmpty($dateTimeText->getTimezone()); $this->assertEmpty($dateTimeText->getValueText()); // text $card = $this->importer->parseSource(<<<STR BEGIN:VCARD BDAY;VALUE=text:foo BDAY;VALUE=text:foo END:VCARD STR ); $birthday = $this->importer->importSingleDatetime($card->BDAY, 'Heartsentwined\\Vcard\\Entity\\Birthday'); $this->em->flush(); $this->assertCount(3, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\Birthday')->findAll()); $this->assertCount(3, $this->em->getRepository('Heartsentwined\\Vcard\\Entity\\DateTimeText')->findAll()); $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\Birthday', $birthday); $dateTimeText = $birthday->getValue(); $this->assertInstanceOf('Heartsentwined\\Vcard\\Entity\\DateTimeText', $dateTimeText); $this->assertSame(Repository\DateTimeText::TEXT, $dateTimeText->getFormat()); $this->assertEmpty($dateTimeText->getValue()); $this->assertEmpty($dateTimeText->getYear()); $this->assertEmpty($dateTimeText->getMonth()); $this->assertEmpty($dateTimeText->getDay()); $this->assertEmpty($dateTimeText->getHour()); $this->assertEmpty($dateTimeText->getMinute()); $this->assertEmpty($dateTimeText->getSecond()); $this->assertEmpty($dateTimeText->getTimezone()); $this->assertSame('foo', $dateTimeText->getValueText()); }