|
@@ -6,67 +6,119 @@ use fphammerle\helpers\DateTimeHelper;
|
|
|
|
|
|
class DateTimeHelperTest extends \PHPUnit_Framework_TestCase
|
|
|
{
|
|
|
- public function testTimestampToDateTimeZero()
|
|
|
+ public function timestampToDateTimeProvider()
|
|
|
{
|
|
|
- $this->assertEquals(
|
|
|
- 0,
|
|
|
- DateTimeHelper::timestampToDateTime(0)->getTimestamp()
|
|
|
- );
|
|
|
+ return [
|
|
|
+ [null, null],
|
|
|
+ [0, new \DateTime('1970-01-01 00:00:00', new \DateTimeZone('UTC'))],
|
|
|
+ [0, new \DateTime('1970-01-01 01:00:00', new \DateTimeZone('Europe/Vienna'))],
|
|
|
+ [1234567890, new \DateTime('2009-02-13 23:31:30', new \DateTimeZone('UTC'))],
|
|
|
+ [1234567890, new \DateTime('2009-02-14 00:31:30', new \DateTimeZone('Europe/Vienna'))],
|
|
|
+ [-3600, new \DateTime('1970-01-01 00:00:00', new \DateTimeZone('Europe/Vienna'))],
|
|
|
+ ];
|
|
|
}
|
|
|
|
|
|
- public function testTimestampToDateTimeCompareUTC()
|
|
|
+ /**
|
|
|
+ * @dataProvider timestampToDateTimeProvider
|
|
|
+ */
|
|
|
+ public function testTimestampToDateTime($timestamp, $expected_datetime)
|
|
|
{
|
|
|
- $created = DateTimeHelper::timestampToDateTime(1234567890);
|
|
|
- $expected = new \DateTime('2009-02-13 23:31:30', new \DateTimeZone('UTC'));
|
|
|
- $this->assertEquals($created->getTimestamp(), $expected->getTimestamp());
|
|
|
+ $generated_datetime = DateTimeHelper::timestampToDateTime($timestamp);
|
|
|
+ $this->assertEquals($expected_datetime, $generated_datetime);
|
|
|
}
|
|
|
|
|
|
- public function testTimestampToDateTimeCompareLocal()
|
|
|
+ public function timestampToDateTimeDefaultTimezoneProvider()
|
|
|
{
|
|
|
- $created = DateTimeHelper::timestampToDateTime(1234567890);
|
|
|
- $expected = new \DateTime('2009-02-14 00:31:30', new \DateTimeZone('Europe/Vienna'));
|
|
|
- $this->assertEquals($created->getTimestamp(), $expected->getTimestamp());
|
|
|
+ return [
|
|
|
+ ['UTC', 100],
|
|
|
+ ['Europe/Vienna', 0],
|
|
|
+ ['Europe/Vienna', -100],
|
|
|
+ ['Europe/Vienna', 100],
|
|
|
+ ['Europe/London', 3600],
|
|
|
+ ['US/Pacific', 3600],
|
|
|
+ ];
|
|
|
}
|
|
|
|
|
|
- public function testTimestampToDateTimeSetLocal()
|
|
|
+ /**
|
|
|
+ * @dataProvider timestampToDateTimeDefaultTimezoneProvider
|
|
|
+ */
|
|
|
+ public function testTimestampToDateTimeDefaultTimezone($timezone, $timestamp)
|
|
|
{
|
|
|
- date_default_timezone_set('Europe/Vienna');
|
|
|
- $this->assertEquals(
|
|
|
- DateTimeHelper::timestampToDateTime(123456)->getTimestamp(),
|
|
|
- 123456
|
|
|
- );
|
|
|
+ date_default_timezone_set($timezone);
|
|
|
+ $generated_datetime = DateTimeHelper::timestampToDateTime($timestamp);
|
|
|
+ $this->assertSame($timestamp, $generated_datetime->getTimestamp());
|
|
|
}
|
|
|
|
|
|
- public function testTimestampToDateTimeSetUTC()
|
|
|
+ public function parseProvider()
|
|
|
{
|
|
|
- date_default_timezone_set('UTC');
|
|
|
- $this->assertEquals(
|
|
|
- DateTimeHelper::timestampToDateTime(123456)->getTimestamp(),
|
|
|
- 123456
|
|
|
- );
|
|
|
+ return [
|
|
|
+ [null, 'UTC', null],
|
|
|
+ [null, 'US/Pacific', null],
|
|
|
+ ['2016-08-02', 'UTC', new \DatePeriod(
|
|
|
+ new \DateTime('2016-08-02T00:00:00Z'),
|
|
|
+ new \DateInterval('P1D'),
|
|
|
+ new \DateTime('2016-08-03T00:00:00Z')
|
|
|
+ )],
|
|
|
+ ['2016-08-02', 'Europe/Vienna', new \DatePeriod(
|
|
|
+ new \DateTime('2016-08-02T00:00:00+02:00'),
|
|
|
+ new \DateInterval('P1D'),
|
|
|
+ new \DateTime('2016-08-03T00:00:00+02:00')
|
|
|
+ )],
|
|
|
+ ['2016-08-02', 'Europe/Vienna', new \DatePeriod(
|
|
|
+ new \DateTime('2016-08-01T22:00:00Z'),
|
|
|
+ new \DateInterval('P1D'),
|
|
|
+ new \DateTime('2016-08-02T22:00:00Z')
|
|
|
+ )],
|
|
|
+ ['2016-08-02 15:52:13', 'UTC', new \DatePeriod(
|
|
|
+ new \DateTime('2016-08-02T15:52:13Z'),
|
|
|
+ new \DateInterval('PT1S'),
|
|
|
+ new \DateTime('2016-08-02T15:52:14Z')
|
|
|
+ )],
|
|
|
+ ['2016-08-02 15:52:13', 'Europe/Vienna', new \DatePeriod(
|
|
|
+ new \DateTime('2016-08-02T15:52:13+02:00'),
|
|
|
+ new \DateInterval('PT1S'),
|
|
|
+ new \DateTime('2016-08-02T15:52:14+02:00')
|
|
|
+ )],
|
|
|
+ ['2016-08-02 15:52:13', 'Europe/Vienna', new \DatePeriod(
|
|
|
+ new \DateTime('2016-08-02T13:52:13Z'),
|
|
|
+ new \DateInterval('PT1S'),
|
|
|
+ new \DateTime('2016-08-02T13:52:14Z')
|
|
|
+ )],
|
|
|
+ ['2016-08-02T15:52:13', 'US/Pacific', new \DatePeriod(
|
|
|
+ new \DateTime('2016-08-02T15:52:13-07:00'),
|
|
|
+ new \DateInterval('PT1S'),
|
|
|
+ new \DateTime('2016-08-02T15:52:14-07:00')
|
|
|
+ )],
|
|
|
+ ];
|
|
|
}
|
|
|
|
|
|
- public function testTimestampToDateTimeNull()
|
|
|
+ /**
|
|
|
+ * @dataProvider parseProvider
|
|
|
+ */
|
|
|
+ public function testParse($text, $timezone, $expected)
|
|
|
{
|
|
|
- $this->assertEquals(
|
|
|
- DateTimeHelper::timestampToDateTime(null),
|
|
|
- null
|
|
|
- );
|
|
|
+ date_default_timezone_set($timezone);
|
|
|
+ $this->assertEquals($expected, DateTimeHelper::parse($text));
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * @expectedException InvalidArgumentException
|
|
|
- */
|
|
|
- public function testTimestampToDateInvalidArgumentFloat()
|
|
|
+ public function parseInvalidArgumentProvider()
|
|
|
{
|
|
|
- DateTimeHelper::timestampToDateTime(1.23);
|
|
|
+ return [
|
|
|
+ [' '],
|
|
|
+ [''],
|
|
|
+ ['2016--12'],
|
|
|
+ ['2016-10-12 08:20#01'],
|
|
|
+ [1],
|
|
|
+ [false],
|
|
|
+ ];
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @expectedException InvalidArgumentException
|
|
|
+ * @dataProvider parseInvalidArgumentProvider
|
|
|
+ * @expectedException \InvalidArgumentException
|
|
|
*/
|
|
|
- public function testTimestampToDateInvalidArgumentString()
|
|
|
+ public function testParseInvalidArgument($text)
|
|
|
{
|
|
|
- DateTimeHelper::timestampToDateTime('');
|
|
|
+ DateTimeHelper::parse($text);
|
|
|
}
|
|
|
}
|