Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/core/Date.test.php')
-rw-r--r--tests/core/Date.test.php105
1 files changed, 103 insertions, 2 deletions
diff --git a/tests/core/Date.test.php b/tests/core/Date.test.php
index 07983e8868..56a1f30a8f 100644
--- a/tests/core/Date.test.php
+++ b/tests/core/Date.test.php
@@ -28,13 +28,114 @@ class Test_Piwik_Date extends UnitTestCase
function test_today()
{
$date = Piwik_Date::today();
- $this->assertEqual( strtotime(date("Y-m-d "). " 00:00:00"), $date->get());
+ $this->assertEqual( strtotime(date("Y-m-d "). " 00:00:00"), $date->getTimestamp());
+
+ // test getDatetime()
+ $this->assertEqual( $date->getDatetime(), $date->getDateStartUTC());
+ $date = $date->setTime('12:00:00');
+ $this->assertEqual( $date->getDatetime(), date('Y-m-d') . ' 12:00:00');
}
+
//create today object check that timestamp is correct (midnight)
function test_yesterday()
{
$date = Piwik_Date::yesterday();
- $this->assertEqual( strtotime(date("Y-m-d",time()-86400). " 00:00:00"), $date->get());
+ $this->assertEqual( strtotime(date("Y-m-d",strtotime('-1day')). " 00:00:00"), $date->getTimestamp());
+ }
+
+ function test_factoryTimezone()
+ {
+ // now in UTC converted to UTC+10 means adding 10 hours
+ $date = Piwik_Date::factory('now', 'UTC+10');
+ $dateExpected = Piwik_Date::now()->addHour(10);
+ $this->assertEqual($date->getDatetime(), $dateExpected->getDatetime());
+
+ // Congo is in UTC+1 all year long (no DST)
+ $date = Piwik_Date::factory('now', 'Africa/Brazzaville');
+ $dateExpected = Piwik_Date::factory('now')->addHour(1);
+ $this->assertEqual($date->getDatetime(), $dateExpected->getDatetime());
+
+ // yesterday same time in Congo is the same as today in Congo - 24 hours
+ $date = Piwik_Date::factory('yesterdaySameTime', 'Africa/Brazzaville');
+ $dateExpected = Piwik_Date::factory('now', 'Africa/Brazzaville')->subHour(24);
+ $this->assertEqual($date->getDatetime(), $dateExpected->getDatetime());
+ }
+
+ function test_setTimezone_dayInUTC()
+ {
+ $date = Piwik_Date::factory('2010-01-01');
+
+ $dayStart = '2010-01-01 00:00:00';
+ $dayEnd = '2010-01-01 23:59:59';
+ $this->assertEqual($date->getDateStartUTC(), $dayStart);
+ $this->assertEqual($date->getDateEndUTC(), $dayEnd);
+
+ $date = $date->setTimezone('UTC');
+ $this->assertEqual($date->getDateStartUTC(), $dayStart);
+ $this->assertEqual($date->getDateEndUTC(), $dayEnd);
+
+ $date = $date->setTimezone('Europe/Paris');
+ $utcDayStart = '2009-12-31 23:00:00';
+ $utcDayEnd = '2010-01-01 22:59:59';
+ $this->assertEqual($date->getDateStartUTC(), $utcDayStart);
+ $this->assertEqual($date->getDateEndUTC(), $utcDayEnd);
+
+ $date = $date->setTimezone('UTC+1');
+ $utcDayStart = '2009-12-31 23:00:00';
+ $utcDayEnd = '2010-01-01 22:59:59';
+ $this->assertEqual($date->getDateStartUTC(), $utcDayStart);
+ $this->assertEqual($date->getDateEndUTC(), $utcDayEnd);
+
+ $date = $date->setTimezone('UTC-1');
+ $utcDayStart = '2010-01-01 01:00:00';
+ $utcDayEnd = '2010-01-02 00:59:59';
+ $this->assertEqual($date->getDateStartUTC(), $utcDayStart);
+ $this->assertEqual($date->getDateEndUTC(), $utcDayEnd);
+ }
+
+ function test_modifyDate_withTimezone()
+ {
+ $date = Piwik_Date::factory('2010-01-01');
+ $date = $date->setTimezone('UTC-1');
+
+ $timestamp = $date->getTimestamp();
+ $date = $date->addHour(0)->addHour(0)->addHour(0);
+ $this->assertEqual($timestamp, $date->getTimestamp());
+
+
+ $date = Piwik_Date::factory('2010-01-01')->setTimezone('Europe/Paris');
+ $dateExpected = clone $date;
+ $date = $date->addHour(2);
+ $dateExpected = $dateExpected->addHour(1)->addHour(1)->addHour(1)->subHour(1);
+ $this->assertEqual($date->getTimestamp(), $dateExpected->getTimestamp());
+ }
+
+ function test_getDateStartUTCEnd_DuringDstTimezone()
+ {
+ $date = Piwik_Date::factory('2010-03-28');
+ $parisDayStart = '2010-03-28 00:00:00';
+ $parisDayEnd = '2010-03-28 23:59:59';
+
+ $date = $date->setTimezone('Europe/Paris');
+ $utcDayStart = '2010-03-27 23:00:00';
+ $utcDayEnd = '2010-03-28 21:59:59';
+
+ $this->assertEqual($date->getDateStartUTC(), $utcDayStart);
+ $this->assertEqual($date->getDateEndUTC(), $utcDayEnd);
+ }
+
+ function test_addHour()
+ {
+ // add partial hours
+ $dayStart = '2010-03-28 00:00:00';
+ $dayExpected = '2010-03-28 05:45:00';
+ $date = Piwik_Date::factory($dayStart)->addHour(5.75);
+ $this->assertEqual($date->getDatetime(), $dayExpected);
+
+ // remove partial hours
+ $dayExpected = '2010-03-27 18:15:00';
+ $date = Piwik_Date::factory($dayStart)->subHour(5.75);
+ $this->assertEqual($date->getDatetime(), $dayExpected);
}
}