2009-06-18 00:10:02 +00:00
|
|
|
<?php
|
|
|
|
/**
|
API CHANGE: Renamed conflicting classes to have an "SS_" namespace, and renamed existing "SS" namespace to "SS_". The affected classes are: HTTPRequest, HTTPResponse, Query, Database, SSBacktrace, SSCli, SSDatetime, SSDatetimeTest, SSLog, SSLogTest, SSLogEmailWriter, SSLogErrorEmailFormatter, SSLogErrorFileFormatter, SSLogFileWriter and SSZendLog.
MINOR: Replaced usage of renamed classes with the new namespaced name.
From: Andrew Short <andrewjshort@gmail.com>
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@90075 467b73ca-7a2a-4603-9d3b-597d59a354a9
2009-10-26 03:06:31 +00:00
|
|
|
* Tests for {@link SS_Datetime} class.
|
2009-06-18 00:10:02 +00:00
|
|
|
*
|
|
|
|
* @todo Current date comparisons are slightly dodgy, as they only compare
|
|
|
|
* the current date (not hour, minute, second) and assume that the date
|
|
|
|
* doesn't switch throughout the test execution. This means tests might
|
|
|
|
* fail when run at 23:59:59.
|
|
|
|
*
|
2012-04-12 18:02:46 +12:00
|
|
|
* @package framework
|
2009-06-18 00:10:02 +00:00
|
|
|
* @subpackage tests
|
|
|
|
*/
|
API CHANGE: Renamed conflicting classes to have an "SS_" namespace, and renamed existing "SS" namespace to "SS_". The affected classes are: HTTPRequest, HTTPResponse, Query, Database, SSBacktrace, SSCli, SSDatetime, SSDatetimeTest, SSLog, SSLogTest, SSLogEmailWriter, SSLogErrorEmailFormatter, SSLogErrorFileFormatter, SSLogFileWriter and SSZendLog.
MINOR: Replaced usage of renamed classes with the new namespaced name.
From: Andrew Short <andrewjshort@gmail.com>
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@90075 467b73ca-7a2a-4603-9d3b-597d59a354a9
2009-10-26 03:06:31 +00:00
|
|
|
class SS_DatetimeTest extends SapphireTest {
|
2009-06-18 00:10:02 +00:00
|
|
|
function testNowWithSystemDate() {
|
2012-03-27 17:57:42 +13:00
|
|
|
$systemDatetime = DBField::create_field('SS_Datetime', date('Y-m-d H:i:s'));
|
API CHANGE: Renamed conflicting classes to have an "SS_" namespace, and renamed existing "SS" namespace to "SS_". The affected classes are: HTTPRequest, HTTPResponse, Query, Database, SSBacktrace, SSCli, SSDatetime, SSDatetimeTest, SSLog, SSLogTest, SSLogEmailWriter, SSLogErrorEmailFormatter, SSLogErrorFileFormatter, SSLogFileWriter and SSZendLog.
MINOR: Replaced usage of renamed classes with the new namespaced name.
From: Andrew Short <andrewjshort@gmail.com>
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@90075 467b73ca-7a2a-4603-9d3b-597d59a354a9
2009-10-26 03:06:31 +00:00
|
|
|
$nowDatetime = SS_Datetime::now();
|
2009-06-18 00:10:02 +00:00
|
|
|
|
|
|
|
$this->assertEquals($systemDatetime->Date(), $nowDatetime->Date());
|
|
|
|
}
|
|
|
|
|
|
|
|
function testNowWithMockDate() {
|
|
|
|
// Test setting
|
|
|
|
$mockDate = '2001-12-31 22:10:59';
|
API CHANGE: Renamed conflicting classes to have an "SS_" namespace, and renamed existing "SS" namespace to "SS_". The affected classes are: HTTPRequest, HTTPResponse, Query, Database, SSBacktrace, SSCli, SSDatetime, SSDatetimeTest, SSLog, SSLogTest, SSLogEmailWriter, SSLogErrorEmailFormatter, SSLogErrorFileFormatter, SSLogFileWriter and SSZendLog.
MINOR: Replaced usage of renamed classes with the new namespaced name.
From: Andrew Short <andrewjshort@gmail.com>
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@90075 467b73ca-7a2a-4603-9d3b-597d59a354a9
2009-10-26 03:06:31 +00:00
|
|
|
SS_Datetime::set_mock_now($mockDate);
|
2012-03-27 17:57:42 +13:00
|
|
|
$systemDatetime = DBField::create_field('SS_Datetime', date('Y-m-d H:i:s'));
|
API CHANGE: Renamed conflicting classes to have an "SS_" namespace, and renamed existing "SS" namespace to "SS_". The affected classes are: HTTPRequest, HTTPResponse, Query, Database, SSBacktrace, SSCli, SSDatetime, SSDatetimeTest, SSLog, SSLogTest, SSLogEmailWriter, SSLogErrorEmailFormatter, SSLogErrorFileFormatter, SSLogFileWriter and SSZendLog.
MINOR: Replaced usage of renamed classes with the new namespaced name.
From: Andrew Short <andrewjshort@gmail.com>
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@90075 467b73ca-7a2a-4603-9d3b-597d59a354a9
2009-10-26 03:06:31 +00:00
|
|
|
$nowDatetime = SS_Datetime::now();
|
2009-06-18 00:10:02 +00:00
|
|
|
$this->assertNotEquals($systemDatetime->Date(), $nowDatetime->Date());
|
|
|
|
$this->assertEquals($nowDatetime->getValue(), $mockDate);
|
|
|
|
|
|
|
|
// Test clearing
|
API CHANGE: Renamed conflicting classes to have an "SS_" namespace, and renamed existing "SS" namespace to "SS_". The affected classes are: HTTPRequest, HTTPResponse, Query, Database, SSBacktrace, SSCli, SSDatetime, SSDatetimeTest, SSLog, SSLogTest, SSLogEmailWriter, SSLogErrorEmailFormatter, SSLogErrorFileFormatter, SSLogFileWriter and SSZendLog.
MINOR: Replaced usage of renamed classes with the new namespaced name.
From: Andrew Short <andrewjshort@gmail.com>
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@90075 467b73ca-7a2a-4603-9d3b-597d59a354a9
2009-10-26 03:06:31 +00:00
|
|
|
SS_Datetime::clear_mock_now();
|
2012-03-27 17:57:42 +13:00
|
|
|
$systemDatetime = DBField::create_field('SS_Datetime', date('Y-m-d H:i:s'));
|
API CHANGE: Renamed conflicting classes to have an "SS_" namespace, and renamed existing "SS" namespace to "SS_". The affected classes are: HTTPRequest, HTTPResponse, Query, Database, SSBacktrace, SSCli, SSDatetime, SSDatetimeTest, SSLog, SSLogTest, SSLogEmailWriter, SSLogErrorEmailFormatter, SSLogErrorFileFormatter, SSLogFileWriter and SSZendLog.
MINOR: Replaced usage of renamed classes with the new namespaced name.
From: Andrew Short <andrewjshort@gmail.com>
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@90075 467b73ca-7a2a-4603-9d3b-597d59a354a9
2009-10-26 03:06:31 +00:00
|
|
|
$nowDatetime = SS_Datetime::now();
|
2009-06-18 00:10:02 +00:00
|
|
|
$this->assertEquals($systemDatetime->Date(), $nowDatetime->Date());
|
|
|
|
}
|
2012-02-24 16:18:36 +13:00
|
|
|
|
|
|
|
function testSetNullAndZeroValues() {
|
2012-03-27 17:57:42 +13:00
|
|
|
$date = DBField::create_field('SS_Datetime', '');
|
2012-02-24 16:18:36 +13:00
|
|
|
$this->assertNull($date->getValue(), 'Empty string evaluates to NULL');
|
|
|
|
|
2012-03-27 17:57:42 +13:00
|
|
|
$date = DBField::create_field('SS_Datetime', null);
|
2012-02-24 16:18:36 +13:00
|
|
|
$this->assertNull($date->getValue(), 'NULL is set as NULL');
|
|
|
|
|
2012-03-27 17:57:42 +13:00
|
|
|
$date = DBField::create_field('SS_Datetime', false);
|
2012-02-24 16:18:36 +13:00
|
|
|
$this->assertNull($date->getValue(), 'Boolean FALSE evaluates to NULL');
|
|
|
|
|
2012-03-27 17:57:42 +13:00
|
|
|
$date = DBField::create_field('SS_Datetime', '0');
|
2012-03-09 15:34:16 -08:00
|
|
|
$this->assertEquals('1970-01-01 00:00:00', $date->getValue(), 'String zero is UNIX epoch time');
|
2012-02-24 16:18:36 +13:00
|
|
|
|
2012-03-27 17:57:42 +13:00
|
|
|
$date = DBField::create_field('SS_Datetime', 0);
|
2012-03-09 15:34:16 -08:00
|
|
|
$this->assertEquals('1970-01-01 00:00:00', $date->getValue(), 'Numeric zero is UNIX epoch time');
|
2012-02-24 16:18:36 +13:00
|
|
|
}
|
2012-05-16 00:36:24 +09:00
|
|
|
|
|
|
|
function testExtendedDateTimes() {
|
|
|
|
$date = DBField::create_field('SS_Datetime', '1500-10-10 15:32:24');
|
|
|
|
$this->assertEquals('10 Oct 1500 15 32 24', $date->Format('d M Y H i s'));
|
|
|
|
|
|
|
|
$date = DBField::create_field('SS_Datetime', '3000-10-10 15:32:24');
|
|
|
|
$this->assertEquals('10 Oct 3000 15 32 24', $date->Format('d M Y H i s'));
|
|
|
|
}
|
|
|
|
|
|
|
|
function testNice() {
|
|
|
|
$date = DBField::create_field('SS_Datetime', '2001-12-31 22:10:59');
|
|
|
|
$this->assertEquals('31/12/2001 10:10pm', $date->Nice());
|
|
|
|
}
|
|
|
|
|
|
|
|
function testNice24() {
|
|
|
|
$date = DBField::create_field('SS_Datetime', '2001-12-31 22:10:59');
|
|
|
|
$this->assertEquals('31/12/2001 22:10', $date->Nice24());
|
|
|
|
}
|
|
|
|
|
|
|
|
function testDate() {
|
|
|
|
$date = DBField::create_field('SS_Datetime', '2001-12-31 22:10:59');
|
|
|
|
$this->assertEquals('31/12/2001', $date->Date());
|
|
|
|
}
|
|
|
|
|
|
|
|
function testTime() {
|
|
|
|
$date = DBField::create_field('SS_Datetime', '2001-12-31 22:10:59');
|
|
|
|
$this->assertEquals('10:10pm', $date->Time());
|
|
|
|
}
|
|
|
|
|
|
|
|
function testTime24() {
|
|
|
|
$date = DBField::create_field('SS_Datetime', '2001-12-31 22:10:59');
|
|
|
|
$this->assertEquals('22:10', $date->Time24());
|
|
|
|
}
|
|
|
|
|
|
|
|
function testURLDateTime(){
|
|
|
|
$date = DBField::create_field('SS_Datetime', '2001-12-31 22:10:59');
|
|
|
|
$this->assertEquals('2001-12-31%2022:10:59', $date->URLDateTime());
|
|
|
|
}
|
2012-02-24 16:18:36 +13:00
|
|
|
|
|
|
|
}
|