Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: *///// +----------------------------------------------------------------------+// | Copyright (c) 1997-2005 Daniel Convissor <danielc@php.net> |// +----------------------------------------------------------------------+// | 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: Daniel Convissor <danielc@php.net> |// +----------------------------------------------------------------------+/*** Tests for the Date_Calc class** Any individual tests that fail will have their name, expected result* and actual result printed out. So seeing no output when executing* this file is a good thing.** Can be run via CLI or a web server.** This test senses whether it is from an installation of PEAR::Date or if* it's from CVS or a .tar file. If it's an installed version, use the* installed version of Date_Calc. Otherwise, use the local development* copy of Date_Calc.** @category Date and Time* @package Date* @author Daniel Convissor <danielc@php.net>* @copyright 2005 The PHP Group* @license http://www.php.net/license/3_0.txt PHP License* @version CVS: $Id: calc.php,v 1.8 2005/11/15 00:16:40 pajoye Exp $* @link http://pear.php.net/package/Date* @since File available since Release 1.5*/if ('@include_path@' != '@'.'include_path'.'@') {ini_set('include_path', ini_get('include_path'). PATH_SEPARATOR . '.');} else {ini_set('include_path', realpath(dirname(__FILE__) . '/../'). PATH_SEPARATOR . '.' . PATH_SEPARATOR. ini_get('include_path'));}/*** Get the needed class*/require_once 'Date/Calc.php';/*** Compare the test result to the expected result** If the test fails, echo out the results.** @param mixed $expect the scalar or array you expect from the test* @param mixed $actual the scalar or array results from the test* @param string $test_name the name of the test** @return void*/function compare($expect, $actual, $test_name) {if (is_array($expect)) {if (count(array_diff($actual, $expect))) {echo "$test_name failed. Expect:\n";print_r($expect);echo "Actual:\n";print_r($actual);}} else {if ($expect != $actual) {echo "$test_name failed. Expect: $expect. Actual: $actual\n";}}}if (php_sapi_name() != 'cli') {echo "<pre>\n";}compare('20001122', Date_Calc::dateFormat(22, 11, 2000, '%Y%m%d'), 'dateFormat');compare('20001122', Date_Calc::dateFormat('22', '11', '2000', '%Y%m%d'), 'dateFormat str');compare('2001', Date_Calc::defaultCentury('1'), 'defaultCentury 1 str');compare('2001', Date_Calc::defaultCentury(1), 'defaultCentury 1');compare('1960', Date_Calc::defaultCentury(60), 'defaultCentury 2');compare('2010', Date_Calc::defaultCentury(10), 'defaultCentury 3');compare(2451871, Date_Calc::dateToDays('22', '11', '2000'), 'dateToDays str');compare(2451871, Date_Calc::dateToDays(22, 11, 2000), 'dateToDays');compare('20001122', Date_Calc::daysToDate(2451871), 'daysToDate');compare('2000-47-3', Date_Calc::gregorianToISO('22', '11', '2000'), 'gregorianToISO str');compare('2000-47-3', Date_Calc::gregorianToISO(22, 11, 2000), 'gregorianToISO');compare(2451716.56767, Date_Calc::dateSeason('SUMMERSOLSTICE', 2000), 'dateSeason');compare(date('Ymd'), Date_Calc::dateNow(), 'dateNow');compare(date('Y'), Date_Calc::getYear(), 'getYear');compare(date('m'), Date_Calc::getMonth(), 'getMonth');compare(date('d'), Date_Calc::getDay(), 'getDay');compare(327, Date_Calc::julianDate(22, 11, 2000), 'julianDate');compare('November', Date_Calc::getMonthFullname(11), 'getMonthFullname');compare('Nov', Date_Calc::getMonthAbbrname(11), 'getMonthAbbrname');compare('Saturday', Date_Calc::getWeekdayFullname(1, 1, 2005), 'getWeekdayFullname');compare('Sat', Date_Calc::getWeekdayAbbrname(1, 1, 2005), 'getWeekdayAbbrname');compare(11, Date_Calc::getMonthFromFullName('November'), 'getMonthFromFullName');compare(327, Date_Calc::julianDate('22', '11', '2000'), 'julianDate str');compare('November', Date_Calc::getMonthFullname('11'), 'getMonthFullname str');compare('Nov', Date_Calc::getMonthAbbrname('11'), 'getMonthAbbrname str');compare('Saturday', Date_Calc::getWeekdayFullname('01', '01', '2005'), 'getWeekdayFullname str');compare('Sat', Date_Calc::getWeekdayAbbrname('01', '01', '2005'), 'getWeekdayAbbrname str');$exp = array('January','February','March','April','May','June','July','August','September','October','November','December');compare($exp, Date_Calc::getMonthNames(), 'getMonthNames');$exp = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');compare($exp, Date_Calc::getWeekDays(), 'getWeekDays');compare(3, Date_Calc::dayOfWeek(22, 11, 2000), 'dayOfWeek');compare(47, Date_Calc::weekOfYear(22, 11, 2000), 'weekOfYear');compare(4, Date_Calc::quarterOfYear(22, 11, 2000), 'quarterOfYear');compare(3, Date_Calc::dayOfWeek('22', '11', '2000'), 'dayOfWeek str');compare(47, Date_Calc::weekOfYear('22', '11', '2000'), 'weekOfYear str');compare(4, Date_Calc::quarterOfYear('22', '11', '2000'), 'quarterOfYear str');compare(28, Date_Calc::daysInMonth(2, 1900), 'daysInMonth 1');compare(29, Date_Calc::daysInMonth(2, 1996), 'daysInMonth 2');compare(29, Date_Calc::daysInMonth(2, 2000), 'daysInMonth 3');compare(28, Date_Calc::daysInMonth(2, 2001), 'daysInMonth 4');compare(30, Date_Calc::daysInMonth(11, 2000), 'daysInMonth 5');compare(28, Date_Calc::daysInMonth('02', 1900), 'daysInMonth 1 str');compare(29, Date_Calc::daysInMonth('02', 1996), 'daysInMonth 2 str');compare(29, Date_Calc::daysInMonth('02', 2000), 'daysInMonth 3 str');compare(28, Date_Calc::daysInMonth('02', 2001), 'daysInMonth 4 str');compare(30, Date_Calc::daysInMonth('11', '2000'), 'daysInMonth 5 str');compare(5, Date_Calc::weeksInMonth(11, 2000), 'weeksInMonth');compare(5, Date_Calc::weeksInMonth('11', '2000'), 'weeksInMonth str');$exp = array('19000226','19000227','19000228','19000301','19000302','19000303','19000304',);compare($exp, Date_Calc::getCalendarWeek(27, 2, 1900), 'getCalendarWeek 1');$exp = array('20000228','20000229','20000301','20000302','20000303','20000304','20000305',);compare($exp, Date_Calc::getCalendarWeek(28, 2, 2000), 'getCalendarWeek 2');$exp = array('20001127','20001128','20001129','20001130','20001201','20001202','20001203');compare($exp, Date_Calc::getCalendarWeek(27, 11, 2000), 'getCalendarWeek 3');compare($exp, Date_Calc::getCalendarWeek('27', '11', '2000'), 'getCalendarWeek 3 str');$exp = array(array('20001030','20001031','20001101','20001102','20001103','20001104',),array('20001105','20001106','20001107','20001108','20001109','20001110','20001111',),array('20001112','20001113','20001114','20001115','20001116','20001117','20001118',),array('20001119','20001121','20001122','20001123','20001124','20001125','20001126',),array('20001127','20001128','20001129','20001130','20001201','20001202','20001203'));compare($exp, Date_Calc::getCalendarMonth(11, 2000), 'getCalendarMonth');compare($exp, Date_Calc::getCalendarMonth('11', '2000'), 'getCalendarMonth str');// I don't feel like dealing with this right now...//compare('', Date_Calc::getCalendarYear(2000), 'getCalendarYear');compare('20001121', Date_Calc::prevDay(22, 11, 2000), 'prevDay');compare('20001123', Date_Calc::nextDay(22, 11, 2000), 'nextDay');compare('20001121', Date_Calc::prevDay(22, 11, 2000), 'prevDay str');compare('20001123', Date_Calc::nextDay('22', '11', '2000'), 'nextDay str');compare('20001117', Date_Calc::prevWeekday('19', '11', '2000'), 'prevWeekday 1 str');compare('20001117', Date_Calc::prevWeekday(19, 11, 2000), 'prevWeekday 1');compare('20001121', Date_Calc::prevWeekday(22, 11, 2000), 'prevWeekday 2');compare('20001123', Date_Calc::nextWeekday(22, 11, 2000), 'nextWeekday 1');compare('20001127', Date_Calc::nextWeekday(24, 11, 2000), 'nextWeekday 2');compare('20001127', Date_Calc::nextWeekday('24', '11', '2000'), 'nextWeekday 2 str');compare('20001121', Date_Calc::prevDayOfWeek('2', '22', '11', '2000'), 'prevDayOfWeek 1 str');compare('20001121', Date_Calc::prevDayOfWeek(2, 22, 11, 2000), 'prevDayOfWeek 1');compare('20001115', Date_Calc::prevDayOfWeek(3, 22, 11, 2000), 'prevDayOfWeek 2');compare('20001122', Date_Calc::prevDayOfWeek(3, 22, 11, 2000, '%Y%m%d', true), 'prevDayOfWeek 3');compare('20001122', Date_Calc::nextDayOfWeek(3, 22, 11, 2000, '%Y%m%d', true), 'nextDayOfWeek 1');compare('20001129', Date_Calc::nextDayOfWeek(3, 22, 11, 2000), 'nextDayOfWeek 2');compare('20001123', Date_Calc::nextDayOfWeek(4, 22, 11, 2000), 'nextDayOfWeek 3');compare('20001123', Date_Calc::nextDayOfWeek('4', '22', '11', '2000'), 'nextDayOfWeek 3 str');compare('20001121', Date_Calc::prevDayOfWeekOnOrBefore('2', '22', '11', '2000'), 'prevDayOfWeekOnOrBefore 1 str');compare('20001121', Date_Calc::prevDayOfWeekOnOrBefore(2, 22, 11, 2000), 'prevDayOfWeekOnOrBefore 1');compare('20001122', Date_Calc::prevDayOfWeekOnOrBefore(3, 22, 11, 2000), 'prevDayOfWeekOnOrBefore 2');compare('20001122', Date_Calc::nextDayOfWeekOnOrAfter(3, 22, 11, 2000), 'nextDayOfWeekOnOrAfter 1');compare('20001123', Date_Calc::nextDayOfWeekOnOrAfter(4, 22, 11, 2000), 'nextDayOfWeekOnOrAfter 2');compare('20001123', Date_Calc::nextDayOfWeekOnOrAfter('4', '22', '11', '2000'), 'nextDayOfWeekOnOrAfter 2 str');compare('20001120', Date_Calc::beginOfWeek('22', '11', '2000'), 'beginOfWeek str');compare('20001120', Date_Calc::beginOfWeek(22, 11, 2000), 'beginOfWeek');compare('20001126', Date_Calc::endOfWeek(22, 11, 2000), 'endOfWeek');compare('20001126', Date_Calc::endOfWeek('22', '11', '2000'), 'endOfWeek str');compare('20001113', Date_Calc::beginOfPrevWeek(22, 11, 2000), 'beginOfPrevWeek');compare('20001127', Date_Calc::beginOfNextWeek(22, 11, 2000), 'beginOfNextWeek');compare('20001113', Date_Calc::beginOfPrevWeek('22', '11', '2000'), 'beginOfPrevWeek str');compare('20001127', Date_Calc::beginOfNextWeek('22', '11', '2000'), 'beginOfNextWeek str');compare('20001101', Date_Calc::beginOfMonth(11, 2000), 'beginOfMonth');compare('20001101', Date_Calc::beginOfMonth('11', '2000'), 'beginOfMonth str');compare('20001001', Date_Calc::beginOfPrevMonth(22, 11, 2000), 'beginOfPrevMonth');compare('20001031', Date_Calc::endOfPrevMonth(22, 11, 2000), 'endOfPrevMonth');compare('20001001', Date_Calc::beginOfPrevMonth('22', '11', '2000'), 'beginOfPrevMonth str');compare('20001031', Date_Calc::endOfPrevMonth('22', '11', '2000'), 'endOfPrevMonth str');compare('20001201', Date_Calc::beginOfNextMonth(22, 11, 2000), 'beginOfNextMonth');compare('20001231', Date_Calc::endOfNextMonth(22, 11, 2000), 'endOfNextMonth');compare('20001201', Date_Calc::beginOfNextMonth('22', '11', '2000'), 'beginOfNextMonth str');compare('20001231', Date_Calc::endOfNextMonth('22', '11', '2000'), 'endOfNextMonth str');compare('19991001', Date_Calc::beginOfMonthBySpan(-13, 11, 2000), 'beginOfMonthBySpan 1');compare('20001001', Date_Calc::beginOfMonthBySpan(-1, 11, 2000), 'beginOfMonthBySpan 2');compare('20001101', Date_Calc::beginOfMonthBySpan(0, 11, 2000), 'beginOfMonthBySpan 3');compare('20001201', Date_Calc::beginOfMonthBySpan(1, 11, 2000), 'beginOfMonthBySpan 4');compare('20011201', Date_Calc::beginOfMonthBySpan(13, 11, 2000), 'beginOfMonthBySpan 5');compare('19990101', Date_Calc::beginOfMonthBySpan('-13', '02', '2000'), 'beginOfMonthBySpan 6 str');compare('19990101', Date_Calc::beginOfMonthBySpan(-13, 2, 2000), 'beginOfMonthBySpan 6');compare('20000101', Date_Calc::beginOfMonthBySpan(-1, 2, 2000), 'beginOfMonthBySpan 7');compare('20000201', Date_Calc::beginOfMonthBySpan(0, 2, 2000), 'beginOfMonthBySpan 8');compare('20000301', Date_Calc::beginOfMonthBySpan(1, 2, 2000), 'beginOfMonthBySpan 9');compare('20010301', Date_Calc::beginOfMonthBySpan(13, 2, 2000), 'beginOfMonthBySpan 10');compare('20010301', Date_Calc::beginOfMonthBySpan('13', '02', '2000'), 'beginOfMonthBySpan 10 str');compare('19991031', Date_Calc::endOfMonthBySpan(-13, 11, 2000), 'endOfMonthBySpan 1');compare('20001031', Date_Calc::endOfMonthBySpan(-1, 11, 2000), 'endOfMonthBySpan 2');compare('20001130', Date_Calc::endOfMonthBySpan(0, 11, 2000), 'endOfMonthBySpan 3');compare('20001231', Date_Calc::endOfMonthBySpan(1, 11, 2000), 'endOfMonthBySpan 4');compare('20011231', Date_Calc::endOfMonthBySpan(13, 11, 2000), 'endOfMonthBySpan 5');compare('19990131', Date_Calc::endOfMonthBySpan('-13', '02', '2000'), 'endOfMonthBySpan 6 str');compare('19990131', Date_Calc::endOfMonthBySpan(-13, 2, 2000), 'endOfMonthBySpan 6');compare('20000131', Date_Calc::endOfMonthBySpan(-1, 2, 2000), 'endOfMonthBySpan 7');compare('20000229', Date_Calc::endOfMonthBySpan(0, 2, 2000), 'endOfMonthBySpan 8');compare('20000331', Date_Calc::endOfMonthBySpan(1, 2, 2000), 'endOfMonthBySpan 9');compare('20010331', Date_Calc::endOfMonthBySpan(13, 2, 2000), 'endOfMonthBySpan 10');compare('20010331', Date_Calc::endOfMonthBySpan('13', '02', '2000'), 'endOfMonthBySpan 10 str');compare(3, Date_Calc::firstOfMonthWeekday(11, 2000), 'firstOfMonthWeekday');compare(3, Date_Calc::firstOfMonthWeekday('11', '2000'), 'firstOfMonthWeekday str');compare('20050101', Date_Calc::NWeekdayOfMonth(1, 6, 1, 2005), 'NWeekdayOfMonth 161');compare('20050102', Date_Calc::NWeekdayOfMonth(1, 0, 1, 2005), 'NWeekdayOfMonth 101');compare('20050103', Date_Calc::NWeekdayOfMonth(1, 1, 1, 2005), 'NWeekdayOfMonth 111');compare('20050104', Date_Calc::NWeekdayOfMonth(1, 2, 1, 2005), 'NWeekdayOfMonth 121');compare('20050105', Date_Calc::NWeekdayOfMonth(1, 3, 1, 2005), 'NWeekdayOfMonth 131');compare('20050106', Date_Calc::NWeekdayOfMonth(1, 4, 1, 2005), 'NWeekdayOfMonth 141');compare('20050107', Date_Calc::NWeekdayOfMonth(1, 5, 1, 2005), 'NWeekdayOfMonth 151');compare('20050108', Date_Calc::NWeekdayOfMonth('2', '6', '01', '2005'), 'NWeekdayOfMonth 261');compare('20050109', Date_Calc::NWeekdayOfMonth('2', '0', '01', '2005'), 'NWeekdayOfMonth 201');compare('20050110', Date_Calc::NWeekdayOfMonth('2', '1', '01', '2005'), 'NWeekdayOfMonth 211');compare('20050111', Date_Calc::NWeekdayOfMonth('2', '2', '01', '2005'), 'NWeekdayOfMonth 221');compare('20050112', Date_Calc::NWeekdayOfMonth('2', '3', '01', '2005'), 'NWeekdayOfMonth 231');compare('20050113', Date_Calc::NWeekdayOfMonth('2', '4', '01', '2005'), 'NWeekdayOfMonth 241');compare('20050114', Date_Calc::NWeekdayOfMonth('2', '5', '01', '2005'), 'NWeekdayOfMonth 251');compare('20050131', Date_Calc::NWeekdayOfMonth('last', 1, 1, 2005), 'NWeekdayOfMonth l11');compare('20050130', Date_Calc::NWeekdayOfMonth('last', 0, 1, 2005), 'NWeekdayOfMonth l01');compare('20050129', Date_Calc::NWeekdayOfMonth('last', 6, 1, 2005), 'NWeekdayOfMonth l61');compare('20050128', Date_Calc::NWeekdayOfMonth('last', 5, 1, 2005), 'NWeekdayOfMonth l51');compare('20050127', Date_Calc::NWeekdayOfMonth('last', 4, 1, 2005), 'NWeekdayOfMonth l41');compare('20050126', Date_Calc::NWeekdayOfMonth('last', 3, 1, 2005), 'NWeekdayOfMonth l31');compare('20050125', Date_Calc::NWeekdayOfMonth('last', 2, 1, 2005), 'NWeekdayOfMonth l21');compare('20050331', Date_Calc::NWeekdayOfMonth('last', 4, 3, 2005), 'NWeekdayOfMonth l43');compare('20050330', Date_Calc::NWeekdayOfMonth('last', 3, 3, 2005), 'NWeekdayOfMonth l33');compare('20050329', Date_Calc::NWeekdayOfMonth('last', 2, 3, 2005), 'NWeekdayOfMonth l23');compare('20050328', Date_Calc::NWeekdayOfMonth('last', 1, 3, 2005), 'NWeekdayOfMonth l13');compare('20050327', Date_Calc::NWeekdayOfMonth('last', 0, 3, 2005), 'NWeekdayOfMonth l03');compare('20050326', Date_Calc::NWeekdayOfMonth('last', 6, 3, 2005), 'NWeekdayOfMonth l63');compare('20050325', Date_Calc::NWeekdayOfMonth('last', 5, 3, 2005), 'NWeekdayOfMonth l53');compare(false, Date_Calc::isValidDate(29, 2, 1900), 'isValidDate 1');compare(true, Date_Calc::isValidDate(29, 2, 2000), 'isValidDate 2');compare(true, Date_Calc::isValidDate('29', '02', '2000'), 'isValidDate 2 str');compare(false, Date_Calc::isLeapYear(1900), 'isLeapYear 1');compare(true, Date_Calc::isLeapYear(1996), 'isLeapYear 2');compare(true, Date_Calc::isLeapYear(2000), 'isLeapYear 3');compare(false, Date_Calc::isLeapYear(2001), 'isLeapYear 4');compare(false, Date_Calc::isLeapYear('2001'), 'isLeapYear 4 str');compare(false, Date_Calc::isFutureDate('22', '11', '2000'), 'isFutureDate 1 str');compare(false, Date_Calc::isFutureDate(22, 11, 2000), 'isFutureDate 1');compare(true, Date_Calc::isFutureDate(22, 11, date('Y') + 1), 'isFutureDate 2');compare(false, Date_Calc::isPastDate(22, 11, date('Y') + 1), 'isPastDate 1');compare(true, Date_Calc::isPastDate(22, 11, 2000), 'isPastDate 2');compare(true, Date_Calc::isPastDate('22', '11', '2000'), 'isPastDate 2 str');compare(10, Date_Calc::dateDiff(22, 11, 2000, 12, 11, 2000), 'dateDiff 1');compare(10, Date_Calc::dateDiff(12, 11, 2000, 22, 11, 2000), 'dateDiff 2');compare(61, Date_Calc::dateDiff(22, 11, 2000, 22, 1, 2001), 'dateDiff 3');compare(61, Date_Calc::dateDiff('22', '11', '2000', '22', '01', '2001'), 'dateDiff 3 str');compare(-1, Date_Calc::compareDates(12, 11, 2000, 22, 11, 2000), 'compareDates 1');compare(0, Date_Calc::compareDates(22, 11, 2000, 22, 11, 2000), 'compareDates 2');compare(1, Date_Calc::compareDates(22, 11, 2000, 12, 11, 2000), 'compareDates 3');compare(1, Date_Calc::compareDates('22', '11', '2000', '12', '11', '2000'), 'compareDates 3 str');