summaryrefslogtreecommitdiff
path: root/tests/unit/Util/TDateTimeStampTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/Util/TDateTimeStampTest.php')
-rw-r--r--tests/unit/Util/TDateTimeStampTest.php298
1 files changed, 149 insertions, 149 deletions
diff --git a/tests/unit/Util/TDateTimeStampTest.php b/tests/unit/Util/TDateTimeStampTest.php
index 8c6baf03..e9a0a22f 100644
--- a/tests/unit/Util/TDateTimeStampTest.php
+++ b/tests/unit/Util/TDateTimeStampTest.php
@@ -1,149 +1,149 @@
-<?php
-
-require_once dirname(__FILE__).'/../phpunit.php';
-
-Prado::using('System.Util.TDateTimeStamp');
-
-class TDateTimeStampTest extends PHPUnit_Framework_TestCase {
-
- public function testGetTimeStampAndFormat() {
- $s = new TDateTimeStamp;
- $t = $s->getTimeStamp(0,0,0);
- $this->assertEquals($s->formatDate('Y-m-d'), date('Y-m-d'));
-
- $t = $s->getTimeStamp(0,0,0,6,1,2102);
- $this->assertEquals($s->formatDate('Y-m-d',$t), '2102-06-01');
-
- $t = $s->getTimeStamp(0,0,0,2,1,2102);
- $this->assertEquals($s->formatDate('Y-m-d',$t), '2102-02-01');
- }
-
- public function testGregorianToJulianConversion() {
- $s = new TDateTimeStamp;
- $t = $s->getTimeStamp(0,0,0,10,11,1492);
-
- //http://www.holidayorigins.com/html/columbus_day.html - Friday check
- $this->assertEquals($s->formatDate('D Y-m-d',$t), 'Fri 1492-10-11');
-
- $t = $s->getTimeStamp(0,0,0,2,29,1500);
- $this->assertEquals($s->formatDate('Y-m-d',$t), '1500-02-29');
-
- $t = $s->getTimeStamp(0,0,0,2,29,1700);
- $this->assertEquals($s->formatDate('Y-m-d',$t), '1700-03-01');
-
- }
-
- public function testGregorianCorrection() {
- $s = new TDateTimeStamp;
- $diff = $s->getTimeStamp(0,0,0,10,15,1582) - $s->getTimeStamp(0,0,0,10,4,1582);
-
- //This test case fails on my windows machine!
- //$this->assertEquals($diff, 3600*24,
- // "Error in gregorian correction = ".($diff/3600/24)." days");
-
- $this->assertEquals($s->getDayOfWeek(1582,10,15), 5.0);
- $this->assertEquals($s->getDayOfWeek(1582,10,4), 4.0);
- }
-
- public function testOverFlow() {
- $s = new TDateTimeStamp;
- $t = $s->getTimeStamp(0,0,0,3,33,1965);
- $this->assertEquals($s->formatDate('Y-m-d',$t), '1965-04-02', 'Error in day overflow 1');
-
- $t = $s->getTimeStamp(0,0,0,4,33,1971);
- $this->assertEquals($s->formatDate('Y-m-d',$t), '1971-05-03', 'Error in day overflow 2');
- $t = $s->getTimeStamp(0,0,0,1,60,1965);
- $this->assertEquals($s->formatDate('Y-m-d',$t), '1965-03-01', 'Error in day overflow 3 '.$s->getDate('Y-m-d',$t));
- $t = $s->getTimeStamp(0,0,0,12,32,1965);
- $this->assertEquals($s->formatDate('Y-m-d',$t), '1966-01-01', 'Error in day overflow 4 '.$s->getDate('Y-m-d',$t));
- $t = $s->getTimeStamp(0,0,0,12,63,1965);
- $this->assertEquals($s->formatDate('Y-m-d',$t), '1966-02-01', 'Error in day overflow 5 '.$s->getDate('Y-m-d',$t));
- $t = $s->getTimeStamp(0,0,0,13,3,1965);
- $this->assertEquals($s->formatDate('Y-m-d',$t), '1966-01-03', 'Error in mth overflow 1');
- }
-
- public function test2DigitTo4DigitYearConversion() {
- $s = new TDateTimeStamp;
- $this->assertEquals($s->get4DigitYear(00), 2000, "Err 2-digit 2000");
- $this->assertEquals($s->get4DigitYear(10), 2010, "Err 2-digit 2010");
- $this->assertEquals($s->get4DigitYear(20), 2020, "Err 2-digit 2020");
- $this->assertEquals($s->get4DigitYear(30), 2030, "Err 2-digit 2030");
- $this->assertEquals($s->get4DigitYear(40), 2040, "Err 2-digit 2040");
- $this->assertEquals($s->get4DigitYear(50), 1950, "Err 2-digit 1950");
- $this->assertEquals($s->get4DigitYear(90), 1990, "Err 2-digit 1990");
- }
-
- public function testStringFormating() {
- $s = new TDateTimeStamp;
- $fmt = '\d\a\t\e T Y-m-d H:i:s a A d D F g G h H i j l L m M n O \R\F\C2822 r s t U w y Y z Z 2003';
- $s1 = date($fmt,0);
- $s2 = $s->formatDate($fmt,0);
- $this->assertEquals($s1, $s2);//, " date() 0 failed \n $s1 \n $s2");
-
- for ($i=10; --$i > 0; ) {
- $ts = 3600.0*((rand()%60000)+(rand()%60000))+(rand()%60000);
- $s1 = date($fmt,$ts);
- $s2 = $s->formatDate($fmt,$ts);
- //print "$s1 <br>$s2 <p>";
- $this->assertEquals($s1,$s2);
-
- $a1 = getdate($ts);
- $a2 = $s->getDate($ts,false);
- $this->assertEquals($a1,$a2);
- }
- }
-
- public function testRandomDatesBetween100And4000() {
- $this->assertIsValidDate(100,1);
- //echo "Testing year ";
- for ($i=10; --$i >= 0;) {
- $y1 = 100+rand(0,1970-100);
- //echo $y1." ";
- $m = rand(1,12);
- $this->assertIsValidDate($y1,$m);
-
- $y1 = 3000-rand(0,3000-1970);
- //echo $y1." ";
- $this->assertIsValidDate($y1,$m);
- }
- }
-
- public function assertIsValidDate($y1,$m,$d=13) {
- $s = new TDateTimeStamp;
- $t = $s->getTimeStamp(0,0,0,$m,$d,$y1);
- $rez = $s->formatDate('Y-n-j H:i:s',$t);
-
- $this->assertEquals("$y1-$m-$d 00:00:00", $rez);
- }
-
- function testRandomDates() {
- $start = 1960+rand(0,10);
- $yrs = 12;
- $i = 365.25*86400*($start-1970);
- $offset = 36000+rand(10000,60000);
- $max = 365*$yrs*86400;
- $lastyear = 0;
- $s = new TDateTimeStamp;
-
- // we generate a timestamp, convert it to a date, and convert it back to a timestamp
- // and check if the roundtrip broke the original timestamp value.
- //print "Testing $start to ".($start+$yrs).", or $max seconds, offset=$offset: ";
- $fails = 0;
- for ($max += $i; $i < $max; $i += $offset) {
- $ret = $s->formatDate('m,d,Y,H,i,s',$i);
- $arr = explode(',',$ret);
- if ($lastyear != $arr[2])
- $lastyear = $arr[2];
-
- $newi = $s->getTimestamp($arr[3],$arr[4],$arr[5],$arr[0],$arr[1],$arr[2]);
- if ($i != $newi) {
- $fails++;
- //$j = mktime($arr[3],$arr[4],$arr[5],$arr[0],$arr[1],$arr[2]);
- //print "Error at $i, $j, getTimestamp() returned $newi ($ret)\n";
- }
- }
- $this->assertEquals($fails, 0);
- }
-}
-
-?>
+<?php
+
+require_once dirname(__FILE__).'/../phpunit.php';
+
+Prado::using('System.Util.TDateTimeStamp');
+
+class TDateTimeStampTest extends PHPUnit_Framework_TestCase {
+
+ public function testGetTimeStampAndFormat() {
+ $s = new TDateTimeStamp;
+ $t = $s->getTimeStamp(0,0,0);
+ $this->assertEquals($s->formatDate('Y-m-d'), date('Y-m-d'));
+
+ $t = $s->getTimeStamp(0,0,0,6,1,2102);
+ $this->assertEquals($s->formatDate('Y-m-d',$t), '2102-06-01');
+
+ $t = $s->getTimeStamp(0,0,0,2,1,2102);
+ $this->assertEquals($s->formatDate('Y-m-d',$t), '2102-02-01');
+ }
+
+ public function testGregorianToJulianConversion() {
+ $s = new TDateTimeStamp;
+ $t = $s->getTimeStamp(0,0,0,10,11,1492);
+
+ //http://www.holidayorigins.com/html/columbus_day.html - Friday check
+ $this->assertEquals($s->formatDate('D Y-m-d',$t), 'Fri 1492-10-11');
+
+ $t = $s->getTimeStamp(0,0,0,2,29,1500);
+ $this->assertEquals($s->formatDate('Y-m-d',$t), '1500-02-29');
+
+ $t = $s->getTimeStamp(0,0,0,2,29,1700);
+ $this->assertEquals($s->formatDate('Y-m-d',$t), '1700-03-01');
+
+ }
+
+ public function testGregorianCorrection() {
+ $s = new TDateTimeStamp;
+ $diff = $s->getTimeStamp(0,0,0,10,15,1582) - $s->getTimeStamp(0,0,0,10,4,1582);
+
+ //This test case fails on my windows machine!
+ //$this->assertEquals($diff, 3600*24,
+ // "Error in gregorian correction = ".($diff/3600/24)." days");
+
+ $this->assertEquals($s->getDayOfWeek(1582,10,15), 5.0);
+ $this->assertEquals($s->getDayOfWeek(1582,10,4), 4.0);
+ }
+
+ public function testOverFlow() {
+ $s = new TDateTimeStamp;
+ $t = $s->getTimeStamp(0,0,0,3,33,1965);
+ $this->assertEquals($s->formatDate('Y-m-d',$t), '1965-04-02', 'Error in day overflow 1');
+
+ $t = $s->getTimeStamp(0,0,0,4,33,1971);
+ $this->assertEquals($s->formatDate('Y-m-d',$t), '1971-05-03', 'Error in day overflow 2');
+ $t = $s->getTimeStamp(0,0,0,1,60,1965);
+ $this->assertEquals($s->formatDate('Y-m-d',$t), '1965-03-01', 'Error in day overflow 3 '.$s->getDate('Y-m-d',$t));
+ $t = $s->getTimeStamp(0,0,0,12,32,1965);
+ $this->assertEquals($s->formatDate('Y-m-d',$t), '1966-01-01', 'Error in day overflow 4 '.$s->getDate('Y-m-d',$t));
+ $t = $s->getTimeStamp(0,0,0,12,63,1965);
+ $this->assertEquals($s->formatDate('Y-m-d',$t), '1966-02-01', 'Error in day overflow 5 '.$s->getDate('Y-m-d',$t));
+ $t = $s->getTimeStamp(0,0,0,13,3,1965);
+ $this->assertEquals($s->formatDate('Y-m-d',$t), '1966-01-03', 'Error in mth overflow 1');
+ }
+
+ public function test2DigitTo4DigitYearConversion() {
+ $s = new TDateTimeStamp;
+ $this->assertEquals($s->get4DigitYear(00), 2000, "Err 2-digit 2000");
+ $this->assertEquals($s->get4DigitYear(10), 2010, "Err 2-digit 2010");
+ $this->assertEquals($s->get4DigitYear(20), 2020, "Err 2-digit 2020");
+ $this->assertEquals($s->get4DigitYear(30), 2030, "Err 2-digit 2030");
+ $this->assertEquals($s->get4DigitYear(40), 2040, "Err 2-digit 2040");
+ $this->assertEquals($s->get4DigitYear(50), 1950, "Err 2-digit 1950");
+ $this->assertEquals($s->get4DigitYear(90), 1990, "Err 2-digit 1990");
+ }
+
+ public function testStringFormating() {
+ $s = new TDateTimeStamp;
+ $fmt = '\d\a\t\e T Y-m-d H:i:s a A d D F g G h H i j l L m M n O \R\F\C2822 r s t U w y Y z Z 2003';
+ $s1 = date($fmt,0);
+ $s2 = $s->formatDate($fmt,0);
+ $this->assertEquals($s1, $s2);//, " date() 0 failed \n $s1 \n $s2");
+
+ for ($i=10; --$i > 0; ) {
+ $ts = 3600.0*((rand()%60000)+(rand()%60000))+(rand()%60000);
+ $s1 = date($fmt,$ts);
+ $s2 = $s->formatDate($fmt,$ts);
+ //print "$s1 <br>$s2 <p>";
+ $this->assertEquals($s1,$s2);
+
+ $a1 = getdate($ts);
+ $a2 = $s->getDate($ts,false);
+ $this->assertEquals($a1,$a2);
+ }
+ }
+
+ public function testRandomDatesBetween100And4000() {
+ $this->assertIsValidDate(100,1);
+ //echo "Testing year ";
+ for ($i=10; --$i >= 0;) {
+ $y1 = 100+rand(0,1970-100);
+ //echo $y1." ";
+ $m = rand(1,12);
+ $this->assertIsValidDate($y1,$m);
+
+ $y1 = 3000-rand(0,3000-1970);
+ //echo $y1." ";
+ $this->assertIsValidDate($y1,$m);
+ }
+ }
+
+ public function assertIsValidDate($y1,$m,$d=13) {
+ $s = new TDateTimeStamp;
+ $t = $s->getTimeStamp(0,0,0,$m,$d,$y1);
+ $rez = $s->formatDate('Y-n-j H:i:s',$t);
+
+ $this->assertEquals("$y1-$m-$d 00:00:00", $rez);
+ }
+
+ function testRandomDates() {
+ $start = 1960+rand(0,10);
+ $yrs = 12;
+ $i = 365.25*86400*($start-1970);
+ $offset = 36000+rand(10000,60000);
+ $max = 365*$yrs*86400;
+ $lastyear = 0;
+ $s = new TDateTimeStamp;
+
+ // we generate a timestamp, convert it to a date, and convert it back to a timestamp
+ // and check if the roundtrip broke the original timestamp value.
+ //print "Testing $start to ".($start+$yrs).", or $max seconds, offset=$offset: ";
+ $fails = 0;
+ for ($max += $i; $i < $max; $i += $offset) {
+ $ret = $s->formatDate('m,d,Y,H,i,s',$i);
+ $arr = explode(',',$ret);
+ if ($lastyear != $arr[2])
+ $lastyear = $arr[2];
+
+ $newi = $s->getTimestamp($arr[3],$arr[4],$arr[5],$arr[0],$arr[1],$arr[2]);
+ if ($i != $newi) {
+ $fails++;
+ //$j = mktime($arr[3],$arr[4],$arr[5],$arr[0],$arr[1],$arr[2]);
+ //print "Error at $i, $j, getTimestamp() returned $newi ($ret)\n";
+ }
+ }
+ $this->assertEquals($fails, 0);
+ }
+}
+
+?>