| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Limb PHP Framework 4 * 5 * @link http://limb-project.com 6 * @copyright Copyright © 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');