Page MenuHomePhabricator

DateAndOrTimeTest.php
No OneTemporary

DateAndOrTimeTest.php

<?php
namespace Sabre\VObject\Property\VCard;
use
Sabre\VObject,
Sabre\VObject\Reader;
class DateAndOrTimeTest extends \PHPUnit_Framework_TestCase {
/**
* @dataProvider dates
*/
function testGetJsonValue($input, $output) {
$vcard = new VObject\Component\VCard();
$prop = $vcard->createProperty('BDAY', $input);
$this->assertEquals(array($output), $prop->getJsonValue());
}
function dates() {
return array(
array(
"19961022T140000",
"1996-10-22T14:00:00",
),
array(
"--1022T1400",
"--10-22T14:00",
),
array(
"---22T14",
"---22T14",
),
array(
"19850412",
"1985-04-12",
),
array(
"1985-04",
"1985-04",
),
array(
"1985",
"1985",
),
array(
"--0412",
"--04-12",
),
array(
"T102200",
"T10:22:00",
),
array(
"T1022",
"T10:22",
),
array(
"T10",
"T10",
),
array(
"T-2200",
"T-22:00",
),
array(
"T102200Z",
"T10:22:00Z",
),
array(
"T102200-0800",
"T10:22:00-0800",
),
array(
"T--00",
"T--00",
),
);
}
public function testSetParts() {
$vcard = new VObject\Component\VCard();
$prop = $vcard->createProperty('BDAY');
$prop->setParts(array(
new \DateTime('2014-04-02 18:37:00')
));
$this->assertEquals('20140402T183700Z', $prop->getValue());
}
/**
* @expectedException InvalidArgumentException
*/
public function testSetPartsTooMany() {
$vcard = new VObject\Component\VCard();
$prop = $vcard->createProperty('BDAY');
$prop->setParts(array(
1,
2
));
}
public function testSetPartsString() {
$vcard = new VObject\Component\VCard();
$prop = $vcard->createProperty('BDAY');
$prop->setParts(array(
"20140402T183700Z"
));
$this->assertEquals('20140402T183700Z', $prop->getValue());
}
public function testSetValueDateTime() {
$vcard = new VObject\Component\VCard();
$prop = $vcard->createProperty('BDAY');
$prop->setValue(
new \DateTime('2014-04-02 18:37:00')
);
$this->assertEquals('20140402T183700Z', $prop->getValue());
}
public function testSetDateTimeOffset() {
$vcard = new VObject\Component\VCard();
$prop = $vcard->createProperty('BDAY');
$prop->setValue(
new \DateTime('2014-04-02 18:37:00', new \DateTimeZone('America/Toronto'))
);
$this->assertEquals('20140402T183700-0400', $prop->getValue());
}
public function testGetDateTime() {
$datetime = new \DateTime('2014-04-02 18:37:00', new \DateTimeZone('America/Toronto'));
$vcard = new VObject\Component\VCard();
$prop = $vcard->createProperty('BDAY', $datetime);
$dt = $prop->getDateTime();
$this->assertEquals('2014-04-02T18:37:00-04:00', $dt->format('c'), "For some reason this one failed. Current default timezone is: " . date_default_timezone_get());
}
public function testGetDate() {
$datetime = new \DateTime('2014-04-02');
$vcard = new VObject\Component\VCard();
$prop = $vcard->createProperty('BDAY', $datetime, null, 'DATE');
$this->assertEquals('DATE', $prop->getValueType());
$this->assertEquals('BDAY:20140402', rtrim($prop->serialize()));
}
public function testGetDateIncomplete() {
$datetime = '--0407';
$vcard = new VObject\Component\VCard();
$prop = $vcard->add('BDAY', $datetime);
$dt = $prop->getDateTime();
// Note: if the year changes between the last line and the next line of
// code, this test may fail.
//
// If that happens, head outside and have a drink.
$current = new \DateTime('now');
$year = $current->format('Y');
$this->assertEquals($year . '0407', $dt->format('Ymd'));
}
public function testGetDateIncompleteFromVCard() {
$vcard = <<<VCF
BEGIN:VCARD
VERSION:4.0
BDAY:--0407
END:VCARD
VCF;
$vcard = Reader::read($vcard);
$prop = $vcard->BDAY;
$dt = $prop->getDateTime();
// Note: if the year changes between the last line and the next line of
// code, this test may fail.
//
// If that happens, head outside and have a drink.
$current = new \DateTime('now');
$year = $current->format('Y');
$this->assertEquals($year . '0407', $dt->format('Ymd'));
}
public function testValidate() {
$datetime = '--0407';
$vcard = new VObject\Component\VCard();
$prop = $vcard->add('BDAY', $datetime);
$this->assertEquals(array(), $prop->validate());
}
public function testValidateBroken() {
$datetime = '123';
$vcard = new VObject\Component\VCard();
$prop = $vcard->add('BDAY', $datetime);
$this->assertEquals(array(array(
'level' => 3,
'message' => 'The supplied value (123) is not a correct DATE-AND-OR-TIME property',
'node' => $prop,
)), $prop->validate());
}
}

File Metadata

Mime Type
text/x-php
Expires
Tue, Dec 24, 9:38 AM (20 h, 51 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
917079
Default Alt Text
DateAndOrTimeTest.php (5 KB)

Event Timeline