- <?php
- * @file
- * Test Date API functions
- */
-
- class DateAPITestCase extends BackdropUnitTestCase {
- function setUp() {
- parent::setUp();
- require_once(BACKDROP_ROOT . '/core/includes/date.inc');
- require_once(BACKDROP_ROOT . '/core/includes/date.class.inc');
- }
-
- public function testDateAPI() {
-
- $formatters = array(
- 'a',
- 'A',
- 'B',
- 'c',
- 'd',
- 'D',
- 'e',
- 'F',
- 'g',
- 'G',
- 'h',
- 'H',
- 'i',
- 'I',
- 'j',
- 'l',
- 'L',
- 'm',
- 'M',
- 'n',
- 'N',
- 'o',
- 'O',
- 'P',
- 'r',
- 'R',
- 's',
- 'S',
- 't',
- 'T',
- 'u',
- 'U',
- 'w',
- 'W',
- 'y',
- 'Y',
- 'z',
- 'Z',
- );
- foreach ($formatters as $formatter) {
- $date_format = date_format_date(date_now(), 'custom', $formatter);
- $php_format = date_format(date_now(), $formatter);
- $this->assertEqual($date_format, $php_format, 'Test that the "' . $formatter . '" formatter is formatted correctly by date_format_date()');
- }
-
-
-
- config_set('system.date','first_day', 1);
- $expected = array(0 => t('Mon'), 1 => t('Tue'), 2 => t('Wed'), 3 => t('Thu'), 4 => t('Fri'), 5 => t('Sat'), 6 => t('Sun'));
- $days = date_week_days_ordered(date_week_days_abbr(1));
- $this->assertEqual($expected, $days, 'Test that date_week_days_ordered() array starts on Monday when the site first day is on Monday.');
- config_set('system.date','first_day', 0);
- $expected = array(0 => t('Sun'), 1 => t('Mon'), 2 => t('Tue'), 3 => t('Wed'), 4 => t('Thu'), 5 => t('Fri'), 6 => t('Sat'));
- $days = date_week_days_ordered(date_week_days_abbr(1));
- $this->assertEqual($expected, $days, 'Test that date_week_days_ordered() array starts on Sunday when the site first day is on Sunday.');
-
-
- $expected = 28;
- $value = date_days_in_month(2005, 2);
- $this->assertEqual($expected, $value, "Test date_days_in_month(2, 2005): should be $expected, found $value.");
- $expected = 29;
- $value = date_days_in_month(2004, 2);
- $this->assertEqual($expected, $value, "Test date_days_in_month(2, 2004): should be $expected, found $value.");
-
-
- $expected = 365;
- $value = date_days_in_year('2005-06-01 00:00:00');
- $this->assertEqual($expected, $value, "Test date_days_in_year(2005-06-01): should be $expected, found $value.");
- $expected = 366;
- $value = date_days_in_year('2004-06-01 00:00:00');
- $this->assertEqual($expected, $value, "Test date_days_in_year(2004-06-01): should be $expected, found $value.");
-
-
- $expected = 52;
- $value = date_iso_weeks_in_year('2008-06-01 00:00:00');
- $this->assertEqual($expected, $value, "Test date_iso_weeks_in_year(2008-06-01): should be $expected, found $value.");
- $expected = 53;
- $value = date_iso_weeks_in_year('2009-06-01 00:00:00');
- $this->assertEqual($expected, $value, "Test date_iso_weeks_in_year(2009-06-01): should be $expected, found $value.");
-
-
- $expected = 6;
- $value = date_day_of_week('2008-03-01 00:00:00');
- $this->assertEqual($expected, $value, "Test date_day_of_week(2008-03-01): should be $expected, found $value.");
- $expected = 0;
- $value = date_day_of_week('2009-03-01 00:00:00');
- $this->assertEqual($expected, $value, "Test date_day_of_week(2009-03-01): should be $expected, found $value.");
-
-
- $expected = 'Sat';
- $value = date_day_of_week_name('2008-03-01 00:00:00');
- $this->assertEqual($expected, $value, "Test date_day_of_week_name(2008-03-01): should be $expected, found $value.");
- $expected = 'Sun';
- $value = date_day_of_week_name('2009-03-01 00:00:00');
- $this->assertEqual($expected, $value, "Test date_day_of_week_name(2009-03-01): should be $expected, found $value.");
-
-
- config_set('system.date','first_day', 0);
- $expected = '2008-01-27 to 2008-02-02';
- $result = date_week_range(5, 2008);
- $value = $result[0]->format(DATE_FORMAT_DATE) . ' to ' . $result[1]->format(DATE_FORMAT_DATE);
- $this->assertEqual($expected, $value, "Test calendar date_week_range(5, 2008): should be $expected, found $value.");
- $expected = '2009-01-25 to 2009-01-31';
- $result = date_week_range(5, 2009);
- $value = $result[0]->format(DATE_FORMAT_DATE) . ' to ' . $result[1]->format(DATE_FORMAT_DATE);
- $this->assertEqual($expected, $value, "Test calendar date_week_range(5, 2009): should be $expected, found $value.");
-
-
- config_set('system.date','first_day', 1);
- $expected = '2008-01-28 to 2008-02-03';
- $result = date_week_range(5, 2008);
- $value = $result[0]->format(DATE_FORMAT_DATE) . ' to ' . $result[1]->format(DATE_FORMAT_DATE);
- $this->assertEqual($expected, $value, "Test ISO date_week_range(5, 2008): should be $expected, found $value.");
- $expected = '2009-01-26 to 2009-02-01';
- $result = date_week_range(5, 2009);
- $value = $result[0]->format(DATE_FORMAT_DATE) . ' to ' . $result[1]->format(DATE_FORMAT_DATE);
- $this->assertEqual($expected, $value, "Test ISO date_week_range(5, 2009): should be $expected, found $value.");
-
-
- config_set('system.date','first_day', 0);
- $expected = '09';
- $value = date_week('2008-03-01');
- $this->assertEqual($expected, $value, "Test date_week(2008-03-01): should be $expected, found $value.");
- $expected = '10';
- $value = date_week('2009-03-01');
- $this->assertEqual($expected, $value, "Test date_week(2009-03-01): should be $expected, found $value.");
-
-
- $input = '2009-03-07 10:30';
- $timezone = 'America/Chicago';
- $date = new BackdropDateTime($input, $timezone);
- $value = $date->format('c');
- $expected = '2009-03-07T10:30:00-06:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime($input, $timezone): should be $expected, found $value.");
-
-
- $input = '2009-06-07 10:30';
- $timezone = 'America/Chicago';
- $date = new BackdropDateTime($input, $timezone);
- $value = $date->format('c');
- $expected = '2009-06-07T10:30:00-05:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime($input, $timezone): should be $expected, found $value.");
-
-
- $input = '2009-03-07';
- $timezone = 'America/Chicago';
- $date = new BackdropDateTime($input, $timezone);
- $value = $date->format('c');
- $expected = '2009-03-07T00:00:00-06:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime($input, $timezone): should be $expected, found $value.");
-
-
- $input = '2009-06-07';
- $timezone = 'America/Chicago';
- $date = new BackdropDateTime($input, $timezone);
- $value = $date->format('c');
- $expected = '2009-06-07T00:00:00-05:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime($input, $timezone): should be $expected, found $value.");
-
-
- $input = array('year' => 2010, 'month' => 2, 'day' => 28);
- $timezone = 'America/Chicago';
- $date = new BackdropDateTime($input, $timezone);
- $value = $date->format('c');
- $expected = '2010-02-28T00:00:00-06:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime(array('year' => 2010, 'month' => 2, 'day' => 28), $timezone): should be $expected, found $value.");
-
-
- $input = array('year' => 2010, 'month' => 2, 'day' => 28, 'hour' => 10);
- $timezone = 'America/Chicago';
- $date = new BackdropDateTime($input, $timezone);
- $value = $date->format('c');
- $expected = '2010-02-28T10:00:00-06:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime(array('year' => 2010, 'month' => 2, 'day' => 28, 'hour' => 10), $timezone): should be $expected, found $value.");
-
-
-
-
- $input = 0;
- $timezone = 'UTC';
- $date = new BackdropDateTime($input, $timezone);
- $value = $date->format('c');
- $expected = '1970-01-01T00:00:00+00:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime($input, $timezone): should be $expected, found $value.");
-
- $expected = 'UTC';
- $value = $date->getTimeZone()->getName();
- $this->assertEqual($expected, $value, "The current timezone is $value: should be $expected.");
- $expected = 0;
- $value = $date->getOffset();
- $this->assertEqual($expected, $value, "The current offset is $value: should be $expected.");
-
- $timezone = 'America/Los_Angeles';
- $date->setTimezone(new DateTimeZone($timezone));
- $value = $date->format('c');
- $expected = '1969-12-31T16:00:00-08:00';
- $this->assertEqual($expected, $value, "Test \$date->setTimezone(new DateTimeZone($timezone)): should be $expected, found $value.");
-
- $expected = 'America/Los_Angeles';
- $value = $date->getTimeZone()->getName();
- $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
- $expected = '-28800';
- $value = $date->getOffset();
- $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");
-
-
- $input = 0;
- $timezone = 'America/Los_Angeles';
- $date = new BackdropDateTime($input, $timezone);
- $offset = $date->getOffset();
- $value = $date->format('c');
- $expected = '1969-12-31T16:00:00-08:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime($input, $timezone): should be $expected, found $value.");
-
- $expected = 'America/Los_Angeles';
- $value = $date->getTimeZone()->getName();
- $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
- $expected = '-28800';
- $value = $date->getOffset();
- $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");
-
- $timezone = 'UTC';
- $date->setTimezone(new DateTimeZone($timezone));
- $value = $date->format('c');
- $expected = '1970-01-01T00:00:00+00:00';
- $this->assertEqual($expected, $value, "Test \$date->setTimezone(new DateTimeZone($timezone)): should be $expected, found $value.");
-
- $expected = 'UTC';
- $value = $date->getTimeZone()->getName();
- $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
- $expected = '0';
- $value = $date->getOffset();
- $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");
-
-
- $input = '1970-01-01 00:00:00';
- $timezone = 'UTC';
- $date = new BackdropDateTime($input, $timezone);
- $value = $date->format('c');
- $expected = '1970-01-01T00:00:00+00:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime('$input', '$timezone'): should be $expected, found $value.");
-
- $expected = 'UTC';
- $value = $date->getTimeZone()->getName();
- $this->assertEqual($expected, $value, "The current timezone is $value: should be $expected.");
- $expected = 0;
- $value = $date->getOffset();
- $this->assertEqual($expected, $value, "The current offset is $value: should be $expected.");
-
- $timezone = 'America/Los_Angeles';
- $date->setTimezone(new DateTimeZone($timezone));
- $value = $date->format('c');
- $expected = '1969-12-31T16:00:00-08:00';
- $this->assertEqual($expected, $value, "Test \$date->setTimezone(new DateTimeZone($timezone)): should be $expected, found $value.");
-
- $expected = 'America/Los_Angeles';
- $value = $date->getTimeZone()->getName();
- $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
- $expected = '-28800';
- $value = $date->getOffset();
- $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");
-
-
- $input = '1969-12-31 16:00:00';
- $timezone = 'America/Los_Angeles';
- $date = new BackdropDateTime($input, $timezone);
- $offset = $date->getOffset();
- $value = $date->format('c');
- $expected = '1969-12-31T16:00:00-08:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime('$input', '$timezone'): should be $expected, found $value.");
-
- $expected = 'America/Los_Angeles';
- $value = $date->getTimeZone()->getName();
- $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
- $expected = '-28800';
- $value = $date->getOffset();
- $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");
-
- $timezone = 'UTC';
- $date->setTimezone(new DateTimeZone($timezone));
- $value = $date->format('c');
- $expected = '1970-01-01T00:00:00+00:00';
- $this->assertEqual($expected, $value, "Test \$date->setTimezone(new DateTimeZone($timezone)): should be $expected, found $value.");
-
- $expected = 'UTC';
- $value = $date->getTimeZone()->getName();
- $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
- $expected = '0';
- $value = $date->getOffset();
- $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");
-
-
- $input = '2009';
- $timezone = NULL;
- $format = 'Y';
- $date = new BackdropDateTime($input, $timezone, $format);
- $value = $date->format('Y');
- $expected = '2009';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime($input, $timezone, $format): should be $expected, found $value.");
-
-
- $input = '2009-10';
- $timezone = NULL;
- $format = 'Y-m';
- $date = new BackdropDateTime($input, $timezone, $format);
- $value = $date->format('Y-m');
- $expected = '2009-10';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime($input, $timezone, $format): should be $expected, found $value.");
-
-
- $input = '0000-00-00T10:30:00';
- $timezone = NULL;
- $format = 'Y-m-d\TH:i:s';
- $date = new BackdropDateTime($input, $timezone, $format);
- $value = $date->format('H:i:s');
- $expected = '10:30:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime($input, $timezone, $format): should be $expected, found $value.");
-
-
- $input = '10:30:00';
- $timezone = NULL;
- $format = 'H:i:s';
- $date = new BackdropDateTime($input, $timezone, $format);
- $value = $date->format('H:i:s');
- $expected = '10:30:00';
- $this->assertEqual($expected, $value, "Test new BackdropDateTime($input, $timezone, $format): should be $expected, found $value.");
-
-
- $valid = array(
- '-20:+20',
- '-1:+0',
- '-10:-5',
- '2000:2020',
- '-10:2010',
- '1980:-10',
- '1920:+20',
- );
- $invalid = array(
- 'abc',
- 'abc:+20',
- '1920:+20a',
- '+-20:+-30',
- '12:12',
- '0:+20',
- '-20:0',
- );
- foreach ($valid as $range) {
- $this->assertTrue(date_range_valid($range), "$range recognized as a valid date range.");
- }
- foreach ($invalid as $range) {
- $this->assertFalse(date_range_valid($range), "$range recognized as an invalid date range.");
- }
-
-
- $input = '23 abc 2012';
- $timezone = NULL;
- $format = 'd M Y';
- $date = new BackdropDateTime($input, $timezone, $format);
- $this->assertNotEqual(count($date->errors), 0, '23 abc 2012 should be an invalid date');
-
-
- $input = '2005-06-01 10:30:45';
- $timezone = NULL;
- $format = 'Y-m-d H:i:s';
-
- $date = new BackdropDateTime($input, $timezone, $format);
- $date->removeGranularity('hour');
- $date->removeGranularity('second');
- $date->removeGranularity('minute');
-
- $value = $date->format($format);
- $expected = '2005-06-01';
- $this->assertEqual($expected, $value, "The date with removed granularity should be $expected, found $value.");
-
- $date->addGranularity('hour');
- $date->addGranularity('second');
- $date->addGranularity('minute');
-
- $value = $date->format($format);
- $expected = '2005-06-01 10:30:45';
-
- $this->assertEqual($expected, $value, "The date with added granularity should be $expected, found $value.");
- }
- }