[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/date/tests/ -> date_api.test (source)

   1  <?php
   2  // $Id: date_api.test,v 1.5.6.7 2010/10/20 14:32:20 karens Exp $
   3  /**
   4   * Test Date API functions
   5   */
   6  class DateAPITestCase extends DrupalWebTestCase {
   7    function getInfo() {
   8      return array(
   9        'name' => t('Date API'),
  10        'description' => t('Test Date API functions.') ,
  11        'group' => t('Date'),
  12      );
  13    }
  14    
  15    /**
  16     * Implementation of setUp().
  17     */
  18    public function setUp() {
  19      // Load the date_api module.
  20      parent::setUp('date_api');
  21      variable_set('date_api_use_iso8601', FALSE);
  22      variable_set('date_first_day', 1);
  23    }
  24  
  25    function testDateAPI() {
  26  
  27      $value = '2007-12-05 23:59';
  28      $this->assertEqual(TRUE, date_part_extract($value, 'year'), "Test date_part_extract(". $value .", year), results ". date_part_extract($value, 'year'));
  29      $this->assertEqual(TRUE, date_part_extract($value, 'month'), "Test date_part_extract(". $value .", mon), results ". date_part_extract($value, 'month'));
  30      $this->assertEqual(TRUE, date_part_extract($value, 'day'), "Test date_part_extract(". $value .", mday), results ". date_part_extract($value, 'day'));
  31  
  32      $this->assertEqual(TRUE, date_is_valid($value), "Test date_is_valid(". $value .")");
  33      $value = '2007-00-00 00:00';
  34      $this->assertNotEqual(TRUE, date_is_valid($value), "Test for invalid date_is_valid(". $value .")");
  35      $value = '0000-00-00 00:00';
  36      $this->assertNotEqual(TRUE, date_is_valid($value), "Test for invalid date_is_valid(". $value .")");
  37      $value = '-100';
  38      $this->assertNotEqual(TRUE, date_is_valid($value), "Test for invalid date_is_valid(". $value .")");
  39      $value = '2007-00-01T00:00';
  40      $this->assertEqual(TRUE, date_is_valid($value, DATE_ISO), "Test ISO exception to date_is_valid(". $value .", DATE_ISO)");
  41  
  42      $dates = array(
  43        '2007-01-01 00:00:00',
  44        '1970-01-01 00:00:00',
  45        '1900-01-01 00:00:00',
  46        '1600-01-01 00:00:00',
  47        '0100-01-01 00:00:00');
  48      foreach ($dates as $date) {
  49        $unix = date_convert($date, DATE_DATETIME, DATE_UNIX);
  50        $datetime = date_convert($unix, DATE_UNIX, DATE_DATETIME);
  51        $this->assertEqual($date, $datetime, 'Test roundtrip using date_convert() from DATE_DATETIME to DATE_UNIX back to DATE_DATETIME, results '.$date.' >> '.$unix.' >> '.$datetime);
  52      }
  53  
  54      // Test date_format_date().
  55      $formatters = array(
  56        'a',
  57        'A',
  58        'B',
  59        'c',
  60        'd',
  61        'D',
  62        'e',
  63        'F',
  64        'g',
  65        'G',
  66        'h',
  67        'H',
  68        'i',
  69        'I',
  70        'j',
  71        'l',
  72        'L',
  73        'm',
  74        'M',
  75        'n',
  76        'N',
  77        'o',
  78        'O',
  79        'P',
  80        'r',
  81        'R',
  82        's',
  83        'S',
  84        't',
  85        'T',
  86        'u',
  87        'U',
  88        'w',
  89        'W',
  90        'y',
  91        'Y',
  92        'z',
  93        'Z',
  94      );
  95      foreach ($formatters as $formatter) {
  96        $date_api_format = date_format_date(date_now(), 'custom', $formatter);
  97        $php_format = date_format(date_now(), $formatter);
  98        $this->assertEqual($date_api_format, $php_format, 'Test that the "' . $formatter . '" formatter is formatted correctly by date_format_date()');
  99      }
 100    
 101      // Test the order of the weeks days for a calendar that starts on Monday and one that starts on Sunday.
 102      variable_set('date_first_day', 1);
 103      $expected = array ( 0 => t('Mon'), 1 => t('Tue'), 2 => t('Wed'), 3 => t('Thu'), 4 => t('Fri'), 5 => t('Sat'), 6 => t('Sun'), );
 104      $days = date_week_days_ordered(date_week_days_abbr(1));
 105      $this->assertEqual($expected, $days, 'Test that date_week_days_ordered() array starts on Monday when the site first day is on Monday.');
 106      variable_set('date_first_day', 0);
 107      $expected = array ( 0 => t('Sun'), 1 => t('Mon'), 2 => t('Tue'), 3 => t('Wed'), 4 => t('Thu'), 5 => t('Fri'), 6 => t('Sat'), );
 108      $days = date_week_days_ordered(date_week_days_abbr(1));
 109      $this->assertEqual($expected, $days, 'Test that date_week_days_ordered() array starts on Sunday when the site first day is on Sunday.');
 110  
 111      // Test days in February for a leap year and a non-leap year.
 112      $expected = 28;
 113      $value = date_days_in_month(2005, 2);
 114      $this->assertEqual($expected, $value, "Test date_days_in_month(2, 2005): should be $expected, found $value.");
 115      $expected = 29;
 116      $value = date_days_in_month(2004, 2);
 117      $this->assertEqual($expected, $value, "Test date_days_in_month(2, 2004): should be $expected, found $value.");
 118      
 119      // Test days in year for a leap year and a non-leap year.
 120      $expected = 365;
 121      $value = date_days_in_year('2005-06-01 00:00:00', DATE_DATETIME);
 122      $this->assertEqual($expected, $value, "Test date_days_in_year(2005-06-01, DATE_DATETIME): should be $expected, found $value.");    
 123      $expected = 366;
 124      $value = date_days_in_year('2004-06-01 00:00:00', DATE_DATETIME);
 125      $this->assertEqual($expected, $value, "Test date_days_in_year(2004-06-01, DATE_DATETIME): should be $expected, found $value.");
 126  
 127      // Test ISO weeks for a leap year and a non-leap year.
 128      $expected = 52;
 129      $value = date_iso_weeks_in_year('2008-06-01 00:00:00', DATE_DATETIME);
 130      $this->assertEqual($expected, $value, "Test date_iso_weeks_in_year(2008-06-01, DATE_DATETIME): should be $expected, found $value.");    
 131      $expected = 53;
 132      $value = date_iso_weeks_in_year('2009-06-01 00:00:00', DATE_DATETIME);
 133      $this->assertEqual($expected, $value, "Test date_iso_weeks_in_year(2009-06-01, DATE_DATETIME): should be $expected, found $value.");
 134      
 135      // Test day of week for March 1, the day after leap day.
 136      $expected = 6;
 137      $value = date_day_of_week('2008-03-01 00:00:00', DATE_DATETIME);
 138      $this->assertEqual($expected, $value, "Test date_day_of_week(2008-03-01, DATE_DATETIME): should be $expected, found $value.");    
 139      $expected = 0;
 140      $value = date_day_of_week('2009-03-01 00:00:00', DATE_DATETIME);
 141      $this->assertEqual($expected, $value, "Test date_day_of_week(2009-03-01, DATE_DATETIME): should be $expected, found $value.");
 142  
 143      // Test day of week name for March 1, the day after leap day.
 144      $expected = 'Sat';
 145      $value = date_day_of_week_name('2008-03-01 00:00:00', DATE_DATETIME);
 146      $this->assertEqual($expected, $value, "Test date_day_of_week_name(2008-03-01, DATE_DATETIME): should be $expected, found $value.");    
 147      $expected = 'Sun';
 148      $value = date_day_of_week_name('2009-03-01 00:00:00', DATE_DATETIME);
 149      $this->assertEqual($expected, $value, "Test date_day_of_week_name(2009-03-01, DATE_DATETIME): should be $expected, found $value.");
 150  
 151      // Test week range with calendar weeks.
 152      variable_set('date_first_day', 0);
 153      variable_set('date_api_use_iso8601', FALSE);
 154      $expected = '2008-01-27 to 2008-02-03';
 155      $result = date_week_range(5, 2008);
 156      $value = $result[0]->format(DATE_FORMAT_DATE) .' to '. $result[1]->format(DATE_FORMAT_DATE);
 157      $this->assertEqual($expected, $value, "Test calendar date_week_range(5, 2008): should be $expected, found $value.");    
 158      $expected = '2009-01-25 to 2009-02-01';
 159      $result = date_week_range(5, 2009);
 160      $value = $result[0]->format(DATE_FORMAT_DATE) .' to '. $result[1]->format(DATE_FORMAT_DATE);
 161      $this->assertEqual($expected, $value, "Test calendar date_week_range(5, 2009): should be $expected, found $value.");
 162  
 163      // And now with ISO weeks.
 164      variable_set('date_first_day', 1);
 165      variable_set('date_api_use_iso8601', TRUE);
 166      $expected = '2008-01-28 to 2008-02-04';
 167      $result = date_week_range(5, 2008);
 168      $value = $result[0]->format(DATE_FORMAT_DATE) .' to '. $result[1]->format(DATE_FORMAT_DATE);
 169      $this->assertEqual($expected, $value, "Test ISO date_week_range(5, 2008): should be $expected, found $value.");    
 170      $expected = '2009-01-26 to 2009-02-02';
 171      $result = date_week_range(5, 2009);
 172      $value = $result[0]->format(DATE_FORMAT_DATE) .' to '. $result[1]->format(DATE_FORMAT_DATE);
 173      $this->assertEqual($expected, $value, "Test ISO date_week_range(5, 2009): should be $expected, found $value.");
 174      variable_set('date_api_use_iso8601', FALSE);
 175      
 176      // Find calendar week for a date.
 177      variable_set('date_first_day', 0);
 178      $expected = '09';
 179      $value = date_week('2008-03-01');
 180      $this->assertEqual($expected, $value, "Test date_week(2008-03-01): should be $expected, found $value.");    
 181      $expected = '10';
 182      $value = date_week('2009-03-01');
 183      $this->assertEqual($expected, $value, "Test date_week(2009-03-01): should be $expected, found $value.");
 184      
 185      // Create date object from datetime string.
 186      $input = '2009-03-07 10:30';
 187      $timezone = 'America/Chicago';
 188      $date = date_make_date($input, $timezone);
 189      $value = date_format($date, 'c');
 190      $expected = '2009-03-07T10:30:00-06:00';
 191      $this->assertEqual($expected, $value, "Test date_make_date($input, $timezone): should be $expected, found $value.");
 192  
 193      // Same during daylight savings time.
 194      $input = '2009-06-07 10:30';
 195      $timezone = 'America/Chicago';
 196      $date = date_make_date($input, $timezone);
 197      $value = date_format($date, 'c');
 198      $expected = '2009-06-07T10:30:00-05:00';
 199      $this->assertEqual($expected, $value, "Test date_make_date($input, $timezone): should be $expected, found $value.");
 200      
 201      // Create date object from date string.
 202      $input = '2009-03-07';
 203      $timezone = 'America/Chicago';
 204      $date = date_make_date($input, $timezone);
 205      $value = date_format($date, 'c');
 206      $expected = '2009-03-07T00:00:00-06:00';
 207      $this->assertEqual($expected, $value, "Test date_make_date($input, $timezone): should be $expected, found $value.");
 208  
 209      // Same during daylight savings time.
 210      $input = '2009-06-07';
 211      $timezone = 'America/Chicago';
 212      $date = date_make_date($input, $timezone);
 213      $value = date_format($date, 'c');
 214      $expected = '2009-06-07T00:00:00-05:00';
 215      $this->assertEqual($expected, $value, "Test date_make_date($input, $timezone): should be $expected, found $value.");
 216  
 217      // Create date object from date array, date only.
 218      $input = array('year' => 2010, 'month' => 2, 'day' => 28);
 219      $timezone = 'America/Chicago';
 220      $granularity = array('year', 'month', 'day');
 221      $date = date_make_date($input, $timezone, DATE_ARRAY, $granularity);
 222      $value = date_format($date, 'c');
 223      $expected = '2010-02-28T00:00:00-06:00';
 224      $this->assertEqual($expected, $value, "Test date_make_date(array('year' => 2010, 'month' => 2, 'day' => 28), $timezone, DATE_ARRAY, array('year', 'month', 'day')): should be $expected, found $value.");
 225  
 226      // Create date object from date array with hour.
 227      $input = array('year' => 2010, 'month' => 2, 'day' => 28, 'hour' => 10);
 228      $timezone = 'America/Chicago';
 229      $granularity = array('year', 'month', 'day', 'hour');
 230      $date = date_make_date($input, $timezone, DATE_ARRAY, $granularity);
 231      $value = date_format($date, 'c');
 232      $expected = '2010-02-28T10:00:00-06:00';
 233      $this->assertEqual($expected, $value, "Test date_make_date(array('year' => 2010, 'month' => 2, 'day' => 28, 'hour' => 10), $timezone, DATE_ARRAY, array('year', 'month', 'day', 'hour')): should be $expected, found $value.");
 234  
 235      // 0 = January 1, 1970 00:00:00 (UTC);
 236      // 1000000000 = September 9, 2001 01:46:40 (UTC);
 237  
 238      // Create date object from unix timestamp and convert it to a local date.
 239      $input = 0;
 240      $timezone = 'UTC';
 241      $date = date_make_date($input, $timezone, DATE_UNIX);
 242      $value = date_format($date, 'c');
 243      $expected = '1970-01-01T00:00:00+00:00';
 244      $this->assertEqual($expected, $value, "Test date_make_date($input, $timezone, DATE_UNIX): should be $expected, found $value.");
 245      
 246      $expected = 'UTC';
 247      $value = timezone_name_get(date_timezone_get($date));
 248      $this->assertEqual($expected, $value, "The current timezone is $value: should be $expected.");    
 249      $expected = 0;
 250      $value = date_offset_get($date);
 251      $this->assertEqual($expected, $value, "The current offset is $value: should be $expected.");    
 252      
 253      $timezone = 'America/Los_Angeles';
 254      date_timezone_set($date, timezone_open($timezone));
 255      $value = date_format($date, 'c');
 256      $expected = '1969-12-31T16:00:00-08:00';
 257      $this->assertEqual($expected, $value, "Test date_timezone_set(\$date, timezone_open($timezone)): should be $expected, found $value.");
 258      
 259      $expected = 'America/Los_Angeles';
 260      $value = timezone_name_get(date_timezone_get($date));
 261      $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
 262      $expected = '-28800';
 263      $value = date_offset_get($date);
 264      $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");    
 265      
 266      // Convert the local version of a timestamp to UTC.
 267      $input = 0;
 268      $timezone = 'America/Los_Angeles';
 269      $date = date_make_date($input, $timezone, DATE_UNIX);
 270      $offset = date_offset_get($date);
 271      $value = date_format($date, 'c');
 272      $expected = '1969-12-31T16:00:00-08:00';
 273      $this->assertEqual($expected, $value, "Test date_make_date($input, $timezone, DATE_UNIX):  should be $expected, found $value.");
 274  
 275      $expected = 'America/Los_Angeles';
 276      $value = timezone_name_get(date_timezone_get($date));
 277      $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
 278      $expected = '-28800';
 279      $value = date_offset_get($date);
 280      $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");    
 281  
 282      $timezone = 'UTC';
 283      date_timezone_set($date, timezone_open($timezone));
 284      $value = date_format($date, 'c');
 285      $expected = '1970-01-01T00:00:00+00:00';
 286      $this->assertEqual($expected, $value, "Test date_timezone_set(\$date, timezone_open($timezone)): should be $expected, found $value.");
 287      
 288      $expected = 'UTC';
 289      $value = timezone_name_get(date_timezone_get($date));
 290      $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
 291      $expected = '0';
 292      $value = date_offset_get($date);
 293      $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");  
 294      
 295       // Create date object from datetime string and convert it to a local date.
 296      $input = '1970-01-01 00:00:00';
 297      $timezone = 'UTC';
 298      $date = date_make_date($input, $timezone);
 299      $value = date_format($date, 'c');
 300      $expected = '1970-01-01T00:00:00+00:00';
 301      $this->assertEqual($expected, $value, "Test date_make_date('$input', '$timezone'): should be $expected, found $value.");
 302      
 303      $expected = 'UTC';
 304      $value = timezone_name_get(date_timezone_get($date));
 305      $this->assertEqual($expected, $value, "The current timezone is $value: should be $expected.");    
 306      $expected = 0;
 307      $value = date_offset_get($date);
 308      $this->assertEqual($expected, $value, "The current offset is $value: should be $expected.");    
 309      
 310      $timezone = 'America/Los_Angeles';
 311      date_timezone_set($date, timezone_open($timezone));
 312      $value = date_format($date, 'c');
 313      $expected = '1969-12-31T16:00:00-08:00';
 314      $this->assertEqual($expected, $value, "Test date_timezone_set(timezone_open($timezone)): should be $expected, found $value.");
 315      
 316      $expected = 'America/Los_Angeles';
 317      $value = timezone_name_get(date_timezone_get($date));
 318      $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
 319      $expected = '-28800';
 320      $value = date_offset_get($date);
 321      $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");    
 322      
 323      // Convert the local version of a datetime string to UTC.
 324      $input = '1969-12-31 16:00:00';
 325      $timezone = 'America/Los_Angeles';
 326      $date = date_make_date($input, $timezone);
 327      $offset = date_offset_get($date);
 328      $value = date_format($date, 'c');
 329      $expected = '1969-12-31T16:00:00-08:00';
 330      $this->assertEqual($expected, $value, "Test date_make_date('$input', '$timezone'):  should be $expected, found $value.");
 331  
 332      $expected = 'America/Los_Angeles';
 333      $value = timezone_name_get(date_timezone_get($date));
 334      $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
 335      $expected = '-28800';
 336      $value = date_offset_get($date);
 337      $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");    
 338  
 339      $timezone = 'UTC';
 340      date_timezone_set($date, timezone_open($timezone));
 341      $value = date_format($date, 'c');
 342      $expected = '1970-01-01T00:00:00+00:00';
 343      $this->assertEqual($expected, $value, "Test date_timezone_set(\$date, timezone_open($timezone)): should be $expected, found $value.");
 344      
 345      $expected = 'UTC';
 346      $value = timezone_name_get(date_timezone_get($date));
 347      $this->assertEqual($expected, $value, "The current timezone should be $expected, found $value.");
 348      $expected = '0';
 349      $value = date_offset_get($date);
 350      $this->assertEqual($expected, $value, "The current offset should be $expected, found $value.");       
 351     
 352     }
 353   
 354     /**
 355     * Implementation of tearDown().
 356     */
 357    function tearDown() {
 358      variable_del('date_first_day');
 359      variable_del('date_api_use_iso8601');
 360      parent::tearDown();
 361    }
 362  }


Generated: Thu Mar 24 11:18:33 2011 Cross-referenced by PHPXref 0.7