TimeLibTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. App::uses('TimeLib', 'Tools.Utility');
  3. App::uses('MyCakeTestCase', 'Tools.Lib');
  4. class TimeLibTest extends MyCakeTestCase {
  5. public $TimeLib = null;
  6. public function startTest() {
  7. //$this->TimeLib = new TimeLib();
  8. }
  9. public function testParseDate() {
  10. echo $this->_header(__FUNCTION__);
  11. $tests = array(
  12. '2010-12-11' => 1292022000,
  13. '2010-01-02' => 1262386800,
  14. '10-01-02' => 1262386800,
  15. '2.1.2010' => 1262386800,
  16. '2.1.10' => 1262386800,
  17. '02.01.10' => 1262386800,
  18. '02.01.2010' => 1262386800,
  19. '02.01.2010 22:11' => 1262386800,
  20. '2010-01-02 22:11' => 1262386800,
  21. );
  22. foreach ($tests as $was => $expected) {
  23. $is = TimeLib::parseDate($was);
  24. //pr($is);
  25. pr(date(FORMAT_NICE_YMDHMS, $is));
  26. $this->assertSame($expected, $is); //, null, $was
  27. }
  28. }
  29. public function testParseTime() {
  30. echo $this->_header(__FUNCTION__);
  31. $tests = array(
  32. '2:4' => 7440,
  33. '2:04' => 7440,
  34. '2' => 7200,
  35. '1,5' => 3600+1800,
  36. '1.5' => 3600+1800,
  37. '1.50' => 3600+1800,
  38. '1.01' => 3660,
  39. ':4' => 240,
  40. ':04' => 240,
  41. ':40' => 40*MINUTE,
  42. '1:2:4' => 1*HOUR+2*MINUTE+4*SECOND,
  43. '01:2:04' => 1*HOUR+2*MINUTE+4*SECOND,
  44. '0:2:04' => 2*MINUTE+4*SECOND,
  45. '::4' => 4*SECOND,
  46. '::04' => 4*SECOND,
  47. '::40' => 40*SECOND,
  48. '2011-11-12 10:10:10' => 10*HOUR+10*MINUTE+10*SECOND,
  49. );
  50. # positive
  51. foreach ($tests as $was => $expected) {
  52. $is = TimeLib::parseTime($was);
  53. //pr($is);
  54. $this->assertEquals($expected, $is); //null, $was
  55. }
  56. unset($tests['2011-11-12 10:10:10']);
  57. # negative
  58. foreach ($tests as $was => $expected) {
  59. $is = TimeLib::parseTime('-'.$was);
  60. //pr($is);
  61. $this->assertEquals($is, -$expected); //, null, '-'.$was.' ['.$is.' => '.(-$expected).']'
  62. }
  63. }
  64. public function testBuildTime() {
  65. echo $this->_header(__FUNCTION__);
  66. $tests = array(
  67. 7440 => '2:04',
  68. 7220 => '2:00', # 02:00:20 => rounded to 2:00:00
  69. 5400 => '1:30',
  70. 3660 => '1:01',
  71. );
  72. # positive
  73. foreach ($tests as $was => $expected) {
  74. $is = TimeLib::buildTime($was);
  75. pr($is);
  76. $this->assertEquals($expected, $is);
  77. }
  78. # negative
  79. foreach ($tests as $was => $expected) {
  80. $is = TimeLib::buildTime(-$was);
  81. pr($is);
  82. $this->assertEquals($is, '-'.$expected);
  83. }
  84. }
  85. public function testBuildDefaultTime() {
  86. echo $this->_header(__FUNCTION__);
  87. $tests = array(
  88. 7440 => '02:04:00',
  89. 7220 => '02:00:20',
  90. 5400 => '01:30:00',
  91. 3660 => '01:01:00',
  92. 1*HOUR+2*MINUTE+4*SECOND => '01:02:04',
  93. );
  94. foreach ($tests as $was => $expected) {
  95. $is = TimeLib::buildDefaultTime($was);
  96. pr($is);
  97. $this->assertEquals($expected, $is);
  98. }
  99. }
  100. /**
  101. * basic
  102. */
  103. public function testStandardDecimal() {
  104. echo $this->_header(__FUNCTION__);
  105. $value = '9.30';
  106. $is = TimeLib::standardToDecimalTime($value);
  107. $this->assertEquals(round($is, 2), '9.50');
  108. $value = '9.3';
  109. $is = TimeLib::standardToDecimalTime($value);
  110. $this->assertEquals(round($is, 2), '9.50');
  111. }
  112. public function testDecimalStandard() {
  113. echo $this->_header(__FUNCTION__);
  114. $value = '9.50';
  115. $is = TimeLib::decimalToStandardTime($value);
  116. $this->assertEquals(round($is, 2), '9.3');
  117. $value = '9.5';
  118. $is = TimeLib::decimalToStandardTime($value);
  119. pr($is);
  120. $this->assertEquals($is, '9.3');
  121. $is = TimeLib::decimalToStandardTime($value, 2);
  122. pr($is);
  123. $this->assertEquals($is, '9.30');
  124. $is = TimeLib::decimalToStandardTime($value, 2, ':');
  125. pr($is);
  126. $this->assertEquals($is, '9:30');
  127. }
  128. }