gnu-social/extlib/Date/tests/DateTest.php

454 lines
13 KiB
PHP

<?php
// vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2003 Marshall Roch |
// +----------------------------------------------------------------------+
// | This source file is subject to the New BSD license, That is bundled |
// | with this package in the file LICENSE, and is available through |
// | the world-wide-web at |
// | http://www.opensource.org/licenses/bsd-license.php |
// | If you did not receive a copy of the new BSDlicense and are unable |
// | to obtain it through the world-wide-web, please send a note to |
// | pear-dev@lists.php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Marshall Roch <mroch@php.net> |
// +----------------------------------------------------------------------+
//
// $Id$
//
require_once 'Date.php';
require_once 'PHPUnit/Autoload.php';
class myDate extends Date
{
public function myDate($date)
{
$this->Date($date);
}
}
/**
* Test case for Date
*
* @package Date
* @author Marshall Roch <mroch@php.net>
*/
class Date_Test extends PHPUnit_Framework_TestCase
{
public $time;
public function setUp()
{
$this->time = new Date("2003-10-04 14:03:24Z");
}
public function tearDown()
{
unset($this->time);
}
public function testDateNull()
{
$time = new Date();
$this->assertEquals(
date('Y-m-d H:i:s'),
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$time->year,
$time->month,
$time->day,
$time->hour,
$time->minute,
$time->second
)
);
}
public function testAbstraction()
{
$d = new Date();
$my = new myDate($d);
$this->assertEquals($d->getDate(), $my->getDate());
}
public function testDateCopy()
{
$temp = new Date($this->time);
$this->assertEquals($temp, $this->time);
}
public function testDateISO()
{
$temp = new Date("2003-10-04 14:03:24");
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$temp->year,
$temp->month,
$temp->day,
$temp->hour,
$temp->minute,
$temp->second
)
);
}
public function testDateISOBasic()
{
$temp = new Date("20031004T140324");
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$temp->year,
$temp->month,
$temp->day,
$temp->hour,
$temp->minute,
$temp->second
)
);
}
public function testDateISOExtended()
{
$temp = new Date("2003-10-04T14:03:24");
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$temp->year,
$temp->month,
$temp->day,
$temp->hour,
$temp->minute,
$temp->second
)
);
}
public function testDateISOTimestamp()
{
$temp = new Date("20031004140324");
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$temp->year,
$temp->month,
$temp->day,
$temp->hour,
$temp->minute,
$temp->second
)
);
}
public function testDateUnixtime()
{
$temp = new Date();
$temp->setTZbyID("UTC");
$temp->setDate(strtotime("2003-10-04 14:03:24Z"));
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$temp->year,
$temp->month,
$temp->day,
$temp->hour,
$temp->minute,
$temp->second
)
);
}
public function testDateUnixtime2()
{
$temp = new Date();
$temp->setTZbyID("UTC-05:30");
$temp->setDate(strtotime("2003-10-04 14:03:24Z"));
$temp->convertTZbyID("UTC");
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$temp->year,
$temp->month,
$temp->day,
$temp->hour,
$temp->minute,
$temp->second
)
);
}
public function testDateUnixtime3()
{
$temp = new Date();
$temp->setTZbyID("America/Chicago");
$temp->setDate(strtotime("2003-10-04 14:03:24Z"));
$temp->convertTZbyID("UTC");
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$temp->year,
$temp->month,
$temp->day,
$temp->hour,
$temp->minute,
$temp->second
)
);
}
public function testDateUnixtime4()
{
$temp = new Date();
$temp->setTZbyID("Europe/London");
$temp->setDate(strtotime("2003-10-04 14:03:24Z")); // Summer time in London
$temp->setTZbyID("UTC");
$this->assertEquals(
'2003-10-04 15:03:24', // Preserves London local time (15.03)
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$temp->year,
$temp->month,
$temp->day,
$temp->hour,
$temp->minute,
$temp->second
)
);
}
public function testSetDateISO()
{
$this->time->setDate("2003-10-04 14:03:24");
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$this->time->year,
$this->time->month,
$this->time->day,
$this->time->hour,
$this->time->minute,
$this->time->second
)
);
}
public function testSetDateISOBasic()
{
$this->time->setDate("20031004T140324");
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$this->time->year,
$this->time->month,
$this->time->day,
$this->time->hour,
$this->time->minute,
$this->time->second
)
);
}
public function testSetDateISOExtended()
{
$this->time->setDate("2003-10-04T14:03:24");
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$this->time->year,
$this->time->month,
$this->time->day,
$this->time->hour,
$this->time->minute,
$this->time->second
)
);
}
public function testSetDateTimestamp()
{
$this->time->setDate("20031004140324");
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$this->time->year,
$this->time->month,
$this->time->day,
$this->time->hour,
$this->time->minute,
$this->time->second
)
);
}
public function testSetDateUnixtime()
{
$this->time->setDate(strtotime("2003-10-04 14:03:24Z"));
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$this->time->year,
$this->time->month,
$this->time->day,
$this->time->hour,
$this->time->minute,
$this->time->second
)
);
}
public function testSetDateUnixtime2()
{
$hs_oldtz = $this->time->getTZID();
$this->time->setTZbyID("UTC-05:30");
$this->time->setDate(strtotime("2003-10-04 14:03:24Z"));
$this->time->convertTZbyID($hs_oldtz);
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$this->time->year,
$this->time->month,
$this->time->day,
$this->time->hour,
$this->time->minute,
$this->time->second
)
);
}
public function testSetDateUnixtime3()
{
$hs_oldtz = $this->time->getTZID();
$this->time->setTZbyID("America/Chicago");
$this->time->setDate(strtotime("2003-10-04 14:03:24Z"));
$this->time->convertTZbyID($hs_oldtz);
$this->assertEquals(
'2003-10-04 14:03:24',
sprintf(
'%04d-%02d-%02d %02d:%02d:%02d',
$this->time->year,
$this->time->month,
$this->time->day,
$this->time->hour,
$this->time->minute,
$this->time->second
)
);
}
public function testGetDateISO()
{
$date = $this->time->getDate(DATE_FORMAT_ISO);
$this->assertEquals('2003-10-04 14:03:24', $date);
}
public function testGetDateISOBasic()
{
$date = $this->time->getDate(DATE_FORMAT_ISO_BASIC);
$this->assertEquals('20031004T140324Z', $date);
}
public function testGetDateISOExtended()
{
$date = $this->time->getDate(DATE_FORMAT_ISO_EXTENDED);
$this->assertEquals('2003-10-04T14:03:24Z', $date);
}
public function testGetDateTimestamp()
{
$date = $this->time->getDate(DATE_FORMAT_TIMESTAMP);
$this->assertEquals('20031004140324', $date);
}
public function testGetDateUnixtime()
{
$date = $this->time->getDate(DATE_FORMAT_UNIXTIME);
$this->assertEquals(strtotime('2003-10-04 14:03:24Z'), $date);
}
public function testGetDateUnixtime2()
{
$hs_oldtz = $this->time->getTZID();
$this->time->convertTZbyID("UTC-05:30");
$date = $this->time->getDate(DATE_FORMAT_UNIXTIME);
$this->assertEquals(strtotime('2003-10-04 14:03:24Z'), $date);
$this->time->convertTZbyID($hs_oldtz);
}
public function testGetDateUnixtime3()
{
$hs_oldtz = $this->time->getTZID();
$this->time->convertTZbyID("America/Chicago");
$date = $this->time->getDate(DATE_FORMAT_UNIXTIME);
$this->assertEquals(strtotime('2003-10-04 14:03:24Z'), $date);
$this->time->convertTZbyID($hs_oldtz);
}
public function testFormatLikeStrftime()
{
$codes = array(
'a' => 'Sat',
'A' => 'Saturday',
'b' => 'Oct',
'B' => 'October',
'C' => '20',
'd' => '04',
'D' => '10/04/2003',
'e' => '4',
'H' => '14',
'I' => '02',
'j' => '277',
'm' => '10',
'M' => '03',
'n' => "\n",
'O' => '+00:00',
'o' => '+00:00',
'p' => 'pm',
'P' => 'PM',
'r' => '02:03:24 PM',
'R' => '14:03',
'S' => '24',
't' => "\t",
'T' => '14:03:24',
'w' => '6',
'U' => '39',
'y' => '03',
'Y' => '2003',
'%' => '%'
);
foreach ($codes as $code => $expected) {
$this->assertEquals(
"$code: $expected",
$this->time->formatLikeStrftime("$code: %$code")
);
}
}
public function testToUTCbyOffset()
{
$this->time->setTZbyID('EST');
$this->time->toUTC();
$temp = new Date("2003-10-04 14:03:24");
$temp->toUTCbyOffset("-05:00");
$this->assertEquals($temp, $this->time);
}
}