[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/datetime/tests/cases/ -> lmbDateTest.class.php (source)

   1  <?php
   2  /*

   3   * Limb PHP Framework

   4   *

   5   * @link http://limb-project.com

   6   * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)

   7   * @license    LGPL http://www.gnu.org/copyleft/lesser.html

   8   */
   9  lmb_require('limb/datetime/src/lmbDate.class.php');
  10  lmb_require('limb/datetime/src/lmbDateTimeZone.class.php');
  11  
  12  class lmbDateTest extends UnitTestCase
  13  {
  14    function testInvalidDate()
  15    {
  16      try
  17      {
  18        $date = new lmbDate(400, 500, 5000, 9000);
  19        $this->assertTrue(false);
  20      }
  21      catch(lmbException $e){}
  22    }
  23  
  24    function testInvalidStamp()
  25    {
  26      try
  27      {
  28        $date = new lmbDate(-1);
  29        $this->assertTrue(false);
  30      }
  31      catch(lmbException $e){}
  32    }
  33  
  34    function testInvalidTimeString()
  35    {
  36      try
  37      {
  38        $date = new lmbDate('baba-duba');
  39        $this->assertTrue(false);
  40      }
  41      catch(lmbException $e){}
  42    }
  43  
  44    function testValidate()
  45    {
  46      $this->assertTrue(lmbDate :: validate('2005-12-01 12:45:12'));
  47      $this->assertTrue(lmbDate :: validate('2005-12-01 12:45'));
  48      $this->assertTrue(lmbDate :: validate('2005-12-01'));
  49      $this->assertTrue(lmbDate :: validate('12:45:12'));
  50      $this->assertTrue(lmbDate :: validate('12:45'));
  51      $this->assertTrue(lmbDate :: validate(' 12:45:12 '));
  52    }
  53  
  54    function testValidateFalse()
  55    {
  56      $this->assertFalse(lmbDate :: validate('baba-duba'));
  57      $this->assertFalse(lmbDate :: validate('2005-12-01 12.'));
  58      $this->assertFalse(lmbDate :: validate(2006, 13, 11));
  59    }
  60  
  61    function testCreate()
  62    {
  63      $date = new lmbDate(2005, 12, 1, 12, 45, 12);
  64      $this->assertEqual(lmbDate :: create(2005, 12, 1, 12, 45, 12), $date);
  65  
  66      $this->assertEqual($date->getDay(), 1);
  67      $this->assertEqual($date->getMonth(), 12);
  68      $this->assertEqual($date->getYear(), 2005);
  69      $this->assertEqual($date->getHour(), 12);
  70      $this->assertEqual($date->getMinute(), 45);
  71      $this->assertEqual($date->getSecond(), 12);
  72    }
  73  
  74    function testGetIsoDate()
  75    {
  76      $date = new lmbDate(2005, 12, 1, 12, 45, 12);
  77      $this->assertEqual($date->getIsoDate(), '2005-12-01 12:45:12');
  78    }
  79  
  80    function testGetIsoDateWithoutSeconds()
  81    {
  82      $date = new lmbDate(2005, 12, 1, 12, 45, 12);
  83      $this->assertEqual($date->getIsoDate(false), '2005-12-01 12:45');
  84    }
  85  
  86    function testGetIsoShortDate()
  87    {
  88      $date = new lmbDate(2005, 12, 1, 12, 45, 12);
  89      $this->assertEqual($date->getIsoShortDate(), '2005-12-01');
  90    }
  91  
  92    function testGetIsoTime()
  93    {
  94      $date = new lmbDate(2005, 12, 1, 12, 45, 12);
  95      $this->assertEqual($date->getIsoTime(), '12:45:12');
  96    }
  97  
  98    function testGetIsoTimeWithoutSeconds()
  99    {
 100      $date = new lmbDate(2005, 12, 1, 12, 45, 12);
 101      $this->assertEqual($date->getIsoTime(false), '12:45');
 102    }
 103  
 104    function testGetIsoShortTimeWithoutSeconds()
 105    {
 106      $date = new lmbDate(2005, 12, 1, 12, 45, 12);
 107      $this->assertEqual($date->getIsoShortTime(), '12:45');
 108    }
 109  
 110    function testToStringReturnsIsoDate()
 111    {
 112      $date = new lmbDate(2005, 12, 1, 12, 45, 12);
 113      $this->assertEqual($date->toString(), '2005-12-01 12:45:12');
 114    }
 115  
 116    function testStrftime()
 117    {
 118      $date = new lmbDate(2005, 12, 1, 12, 45, 12);
 119      $this->assertEqual($date->strftime('%m/%d/%y'), '12/01/05');
 120    }
 121  
 122    function testDate()
 123    {
 124      $date = new lmbDate(2005, 12, 1, 12, 45, 12);
 125      $this->assertEqual($date->date('m.d.y'), '12.01.05');
 126    }
 127  
 128    function testCreateByCopy()
 129    {
 130      $date = new lmbDate($sample = new lmbDate(2005, 12, 1, 12, 45, 12));
 131      $this->assertEqual(lmbDate :: create($sample), $date);
 132  
 133      $this->assertEqual($date, $sample);
 134    }
 135  
 136    function testCreateByIso()
 137    {
 138      $date = new lmbDate('2005-12-01  12:45:12');
 139      $this->assertEqual(lmbDate :: create('2005-12-01  12:45:12'), $date);
 140  
 141      $this->assertEqual($date->getDay(), 1);
 142      $this->assertEqual($date->getMonth(), 12);
 143      $this->assertEqual($date->getYear(), 2005);
 144      $this->assertEqual($date->getHour(), 12);
 145      $this->assertEqual($date->getMinute(), 45);
 146      $this->assertEqual($date->getSecond(), 12);
 147  
 148      $this->assertEqual($date->toString(), '2005-12-01 12:45:12');
 149    }
 150  
 151    function testCreateByIsoDateOnly()
 152    {
 153      $date = new lmbDate('2005-12-01');
 154      $this->assertEqual(lmbDate :: create('2005-12-01'), $date);
 155  
 156      $this->assertEqual($date->getDay(), 1);
 157      $this->assertEqual($date->getMonth(), 12);
 158      $this->assertEqual($date->getYear(), 2005);
 159      $this->assertEqual($date->getHour(), 0);
 160      $this->assertEqual($date->getMinute(), 0);
 161      $this->assertEqual($date->getSecond(), 0);
 162  
 163      $this->assertEqual($date->toString(), '2005-12-01 00:00:00');
 164    }
 165  
 166    function testCreateByIsoTimeOnly()
 167    {
 168      $date = new lmbDate('12:45:12');
 169      $this->assertEqual(lmbDate :: create('12:45:12'), $date);
 170  
 171      $this->assertEqual($date->getDay(), 0);
 172      $this->assertEqual($date->getMonth(), 0);
 173      $this->assertEqual($date->getYear(), 0);
 174      $this->assertEqual($date->getHour(), 12);
 175      $this->assertEqual($date->getMinute(), 45);
 176      $this->assertEqual($date->getSecond(), 12);
 177  
 178      $this->assertEqual($date->toString(), '0000-00-00 12:45:12');
 179    }
 180  
 181    function testCreateByIsoTimeWithSecondsOmitted()
 182    {
 183      $date = new lmbDate('12:45');
 184      $this->assertEqual(lmbDate :: create('12:45'), $date);
 185  
 186      $this->assertEqual($date->getDay(), 0);
 187      $this->assertEqual($date->getMonth(), 0);
 188      $this->assertEqual($date->getYear(), 0);
 189      $this->assertEqual($date->getHour(), 12);
 190      $this->assertEqual($date->getMinute(), 45);
 191      $this->assertEqual($date->getSecond(), 0);
 192  
 193      $this->assertEqual($date->toString(), '0000-00-00 12:45:00');
 194    }
 195  
 196    function testStampToIso()
 197    {
 198      $stamp = mktime(21, 45, 13, 12, 1, 2005);
 199      $iso = lmbDate :: stampToIso($stamp);
 200      $this->assertEqual($iso, '2005-12-01 21:45:13');
 201    }
 202  
 203    function testCreateByStamp()
 204    {
 205      $date = new lmbDate($stamp = mktime(21, 45, 13, 12, 1, 2005));
 206      $this->assertEqual(lmbDate :: create($stamp), $date);
 207  
 208      $this->assertEqual($date->getDay(), 1);
 209      $this->assertEqual($date->getMonth(), 12);
 210      $this->assertEqual($date->getYear(), 2005);
 211      $this->assertEqual($date->getHour(), 21);
 212      $this->assertEqual($date->getMinute(), 45);
 213      $this->assertEqual($date->getSecond(), 13);
 214  
 215      $this->assertEqual($date->toString(), '2005-12-01 21:45:13');
 216    }
 217  
 218    function testCreateByDays()
 219    {
 220      $date = new lmbDate('2005-12-01');
 221      $days = $date->getDateDays();
 222      $this->assertEqual(lmbDate :: createByDays($days), $date);
 223    }
 224  
 225    function testGetStamp()
 226    {
 227      $date = new lmbDate($stamp = mktime(21, 45, 13, 12, 1, 2005));
 228      $this->assertEqual($date->getStamp(), $stamp);
 229    }
 230  
 231    function testGetPhpDayOfWeekForSunday()
 232    {
 233      $date = new lmbDate('2005-01-16');
 234      $this->assertEqual($date->getPhpDayOfWeek(), 0);
 235    }
 236  
 237    function testGetIntlDayOfWeekForSunday()
 238    {
 239      $date = new lmbDate('2005-01-16');
 240      $this->assertEqual($date->getIntlDayOfWeek(), 6);
 241    }
 242  
 243    function testGetPhpDayOfWeekForMonday()
 244    {
 245      $date = new lmbDate('2005-01-17');
 246      $this->assertEqual($date->getPhpDayOfWeek(), 1);
 247    }
 248  
 249    function testGetIntlDayOfWeekForMonday()
 250    {
 251      $date = new lmbDate('2005-01-17');
 252      $this->assertEqual($date->getIntlDayOfWeek(), 0);
 253    }
 254  
 255    function testGetPhpDayOfWeekForSuturday()
 256    {
 257      $date = new lmbDate('2005-01-15');
 258      $this->assertEqual($date->getPhpDayOfWeek(), 6);
 259    }
 260  
 261    function testGetIntlDayOfWeekForSuturday()
 262    {
 263      $date = new lmbDate('2005-01-15');
 264      $this->assertEqual($date->getIntlDayOfWeek(), 5);
 265    }
 266  
 267    //in the two tests below we're testing a boundary situtation

 268    //for day of the week which happens in February

 269    function testGetPhpDayOfWeekMonthBeforeFebruary()
 270    {
 271      $date = new lmbDate('2005-01-20');
 272      $this->assertEqual($date->getPhpDayOfWeek(), 4);
 273    }
 274  
 275    function testGetPhpDayOfWeekMonthAfterFebruary()
 276    {
 277      $date = new lmbDate('2005-08-20');
 278      $this->assertEqual($date->getPhpDayOfWeek(), 6);
 279    }
 280  
 281    function testGetBeginOfDay()
 282    {
 283      $date = new lmbDate('2005-08-20 12:24:12');
 284      $this->assertEqual($date->getBeginOfDay(), new lmbDate('2005-08-20 00:00:00'));
 285    }
 286  
 287    function testGetEndOfDay()
 288    {
 289      $date = new lmbDate('2005-08-20 12:24:12');
 290      $this->assertEqual($date->getEndOfDay(), new lmbDate('2005-08-20 23:59:59'));
 291    }
 292  
 293    function testGetBeginOfWeek()
 294    {
 295      $date = new lmbDate('2005-01-20');
 296      $this->assertEqual($date->getBeginOfWeek(), new lmbDate('2005-01-17'));
 297    }
 298  
 299    function testGetBeginOfWeekForMonday()
 300    {
 301      $date = new lmbDate('2005-01-17');
 302      $this->assertEqual($date->getBeginOfWeek(), new lmbDate('2005-01-17'));
 303    }
 304  
 305    function testGetBeginOfWeekForSunday()
 306    {
 307      $date = new lmbDate('2005-01-16');
 308      $this->assertEqual($date->getBeginOfWeek(), new lmbDate('2005-01-10'));
 309    }
 310  
 311    function testGetEndOfWeek()
 312    {
 313      $date = new lmbDate('2005-01-20');
 314      $this->assertEqual($date->getEndOfWeek(), new lmbDate('2005-01-23'));
 315    }
 316  
 317    function testGetEndOfWeekForMonday()
 318    {
 319      $date = new lmbDate('2005-01-17');
 320      $this->assertEqual($date->getEndOfWeek(), new lmbDate('2005-01-23'));
 321    }
 322  
 323    function testGetEndOfWeekForSunday()
 324    {
 325      $date = new lmbDate('2005-01-16');
 326      $this->assertEqual($date->getEndOfWeek(), new lmbDate('2005-01-16'));
 327    }
 328  
 329    function testGetBeginOfMonth()
 330    {
 331      $date = new lmbDate('2005-08-20 12:24:12');
 332      $this->assertEqual($date->getBeginOfMonth(), new lmbDate('2005-08-01 00:00:00'));
 333    }
 334  
 335    function testGetEndOfMonth()
 336    {
 337      $date = new lmbDate('2007-05-09 12:24:12');
 338      $this->assertEqual($date->getEndOfMonth(), new lmbDate('2007-05-31 23:59:59'));
 339    }
 340  
 341    function testGetBeginOfYear()
 342    {
 343      $date = new lmbDate('2005-08-20 12:24:12');
 344      $this->assertEqual($date->getBeginOfYear(), new lmbDate('2005-01-01 00:00:00'));
 345    }
 346  
 347    function testGetEndOfYear()
 348    {
 349      $date = new lmbDate('2007-05-09 12:24:12');
 350      $this->assertEqual($date->getEndOfYear(), new lmbDate('2007-12-31 23:59:59'));
 351    }
 352  
 353    function testSetYear()
 354    {
 355      $date = new lmbDate('2005-01-01');
 356      $new_date = $date->setYear(2006);
 357      $this->assertEqual($date->toString(), '2005-01-01 00:00:00');
 358      $this->assertEqual($new_date->toString(), '2006-01-01 00:00:00');
 359    }
 360  
 361    function testSetMonth()
 362    {
 363      $date = new lmbDate('2005-01-01');
 364      $new_date = $date->setMonth(2);
 365      $this->assertEqual($date->toString(), '2005-01-01 00:00:00');
 366      $this->assertEqual($new_date->toString(), '2005-02-01 00:00:00');
 367    }
 368  
 369    function testSetDay()
 370    {
 371      $date = new lmbDate('2005-01-01');
 372      $new_date = $date->setDay(2);
 373      $this->assertEqual($date->toString(), '2005-01-01 00:00:00');
 374      $this->assertEqual($new_date->toString(), '2005-01-02 00:00:00');
 375    }
 376  
 377    function testSetHour()
 378    {
 379      $date = new lmbDate('2005-01-01');
 380      $new_date = $date->setHour(2);
 381      $this->assertEqual($date->toString(), '2005-01-01 00:00:00');
 382      $this->assertEqual($new_date->toString(), '2005-01-01 02:00:00');
 383    }
 384  
 385    function testSetMinute()
 386    {
 387      $date = new lmbDate('2005-01-01');
 388      $new_date = $date->setMinute(2);
 389      $this->assertEqual($date->toString(), '2005-01-01 00:00:00');
 390      $this->assertEqual($new_date->toString(), '2005-01-01 00:02:00');
 391    }
 392  
 393    function testSetSecond()
 394    {
 395      $date = new lmbDate('2005-01-01');
 396      $new_date = $date->setSecond(20);
 397      $this->assertEqual($date->toString(), '2005-01-01 00:00:00');
 398      $this->assertEqual($new_date->toString(), '2005-01-01 00:00:20');
 399    }
 400  
 401    function TODO_testSetWeek()
 402    {
 403      $date = new lmbDate('2005-01-01');
 404      $new_date = $date->setWeek(2);
 405      $this->assertEqual($date->toString(), '2005-01-01 00:00:00');
 406      $this->assertEqual($new_date->toString(), '2005-01-08 00:00:00');//???

 407    }
 408  
 409    function testSetTimeZone()
 410    {
 411      $date = new lmbDate('2005-01-01', 'Europe/Moscow');
 412      $new_date = $date->setTimeZone('UTC');