[limb-svn] r5834 - in 3.x/trunk/limb/datetime: src tests/cases
svn at limb-project.com
svn at limb-project.com
Tue May 8 16:34:32 MSD 2007
Author: pachanga
Date: 2007-05-08 16:34:32 +0400 (Tue, 08 May 2007)
New Revision: 5834
URL: http://fisheye.limb-project.com/changelog/limb/?cs=5834
Added:
3.x/trunk/limb/datetime/src/lmbMonth.class.php
3.x/trunk/limb/datetime/tests/cases/lmbMonthTest.class.php
Removed:
3.x/trunk/limb/datetime/src/lmbMonthCalendar.class.php
3.x/trunk/limb/datetime/tests/cases/lmbMonthCalendarTest.class.php
Log:
-- lmbMonthCalendar => lmbMonth
Copied: 3.x/trunk/limb/datetime/src/lmbMonth.class.php (from rev 5832, 3.x/trunk/limb/datetime/src/lmbMonthCalendar.class.php)
===================================================================
--- 3.x/trunk/limb/datetime/src/lmbMonth.class.php (rev 0)
+++ 3.x/trunk/limb/datetime/src/lmbMonth.class.php 2007-05-08 12:34:32 UTC (rev 5834)
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Limb Web Application Framework
+ *
+ * @link http://limb-project.com
+ *
+ * @copyright Copyright © 2004-2007 BIT
+ * @license LGPL http://www.gnu.org/copyleft/lesser.html
+ * @version $Id: lmbDate.class.php 5824 2007-05-07 13:44:24Z pachanga $
+ * @package datetime
+ */
+lmb_require('limb/datetime/src/lmbDate.class.php');
+
+class lmbMonth
+{
+ protected $start_date;
+ protected $end_date;
+
+ function __construct($year, $month)
+ {
+ $tmp_date = new lmbDate(0, 0, 0, 0, $month, $year);
+ $this->start_date = $tmp_date->setDay(1);
+ $this->end_date = $this->start_date->addMonth(1)->addDay(-1);
+ }
+
+ function getStartDate()
+ {
+ return $this->start_date;
+ }
+
+ function getEndDate()
+ {
+ return $this->end_date;
+ }
+
+ function getNumberOfDays()
+ {
+ return $this->end_date->getDay();
+ }
+
+ function getNumberOfWeeks()
+ {
+ $dof = $this->start_date->getDayOfWeek();
+ if(lmbDate :: getFirstDayOfWeek() == 1 && $dof == 0)
+ {
+ $first_week_days = 7 - $dof + lmbDate :: getFirstDayOfWeek();
+ $weeks = 1;
+ }
+ elseif(lmbDate :: getFirstDayOfWeek() == 0 && $dof == 6)
+ {
+ $first_week_days = 7 - $dof + lmbDate :: getFirstDayOfWeek();
+ $weeks = 1;
+ }
+ else
+ {
+ $first_week_days = lmbDate :: getFirstDayOfWeek() - $dof;
+ $weeks = 0;
+ }
+
+ $first_week_days %= 7;
+ return ceil(($this->getNumberOfDays() - $first_week_days) / 7) + $weeks;
+ }
+
+ function getWeek($n)
+ {
+ if($n < 0 || $n > $this->getNumberOfWeeks()-1)
+ return null;
+
+ $week_array = array();
+ $curr_day = ($n * 7) + $this->start_date->getBeginOfWeek()->getDateDays();
+
+ for($i=0;$i<=6;$i++)
+ {
+ $week_array[$i] = lmbDate :: createByDays($curr_day);
+ $curr_day++;
+ }
+ return $week_array;
+ }
+
+ function getAllWeeks()
+ {
+ $weeks = array();
+ for($i = 0; $i < $this->getNumberOfWeeks(); $i++)
+ $weeks[$i] = $this->getWeek($i);
+ return $weeks;
+ }
+
+ function getNextMonth()
+ {
+ $date = $this->end_date->addDay(1);
+ return new lmbMonth($date->getYear(), $date->getMonth());
+ }
+
+ function getPrevMonth()
+ {
+ $date = $this->start_date->addDay(-1);
+ return new lmbMonth($date->getYear(), $date->getMonth());
+ }
+}
+?>
\ No newline at end of file
Deleted: 3.x/trunk/limb/datetime/src/lmbMonthCalendar.class.php
===================================================================
--- 3.x/trunk/limb/datetime/src/lmbMonthCalendar.class.php 2007-05-08 12:33:07 UTC (rev 5833)
+++ 3.x/trunk/limb/datetime/src/lmbMonthCalendar.class.php 2007-05-08 12:34:32 UTC (rev 5834)
@@ -1,100 +0,0 @@
-<?php
-/**
- * Limb Web Application Framework
- *
- * @link http://limb-project.com
- *
- * @copyright Copyright © 2004-2007 BIT
- * @license LGPL http://www.gnu.org/copyleft/lesser.html
- * @version $Id: lmbDate.class.php 5824 2007-05-07 13:44:24Z pachanga $
- * @package datetime
- */
-lmb_require('limb/datetime/src/lmbDate.class.php');
-
-class lmbMonthCalendar
-{
- protected $start_date;
- protected $end_date;
-
- function __construct($year, $month)
- {
- $tmp_date = new lmbDate(0, 0, 0, 0, $month, $year);
- $this->start_date = $tmp_date->setDay(1);
- $this->end_date = $this->start_date->addMonth(1)->addDay(-1);
- }
-
- function getStartDate()
- {
- return $this->start_date;
- }
-
- function getEndDate()
- {
- return $this->end_date;
- }
-
- function getNumberOfDays()
- {
- return $this->end_date->getDay();
- }
-
- function getNumberOfWeeks()
- {
- $dof = $this->start_date->getDayOfWeek();
- if(lmbDate :: getFirstDayOfWeek() == 1 && $dof == 0)
- {
- $first_week_days = 7 - $dof + lmbDate :: getFirstDayOfWeek();
- $weeks = 1;
- }
- elseif(lmbDate :: getFirstDayOfWeek() == 0 && $dof == 6)
- {
- $first_week_days = 7 - $dof + lmbDate :: getFirstDayOfWeek();
- $weeks = 1;
- }
- else
- {
- $first_week_days = lmbDate :: getFirstDayOfWeek() - $dof;
- $weeks = 0;
- }
-
- $first_week_days %= 7;
- return ceil(($this->getNumberOfDays() - $first_week_days) / 7) + $weeks;
- }
-
- function getWeek($n)
- {
- if($n < 0 || $n > $this->getNumberOfWeeks()-1)
- return null;
-
- $week_array = array();
- $curr_day = ($n * 7) + $this->start_date->getBeginOfWeek()->getDateDays();
-
- for($i=0;$i<=6;$i++)
- {
- $week_array[$i] = lmbDate :: createByDays($curr_day);
- $curr_day++;
- }
- return $week_array;
- }
-
- function getAllWeeks()
- {
- $weeks = array();
- for($i = 0; $i < $this->getNumberOfWeeks(); $i++)
- $weeks[$i] = $this->getWeek($i);
- return $weeks;
- }
-
- function getNextMonth()
- {
- $date = $this->end_date->addDay(1);
- return new lmbMonthCalendar($date->getYear(), $date->getMonth());
- }
-
- function getPrevMonth()
- {
- $date = $this->start_date->addDay(-1);
- return new lmbMonthCalendar($date->getYear(), $date->getMonth());
- }
-}
-?>
\ No newline at end of file
Deleted: 3.x/trunk/limb/datetime/tests/cases/lmbMonthCalendarTest.class.php
===================================================================
--- 3.x/trunk/limb/datetime/tests/cases/lmbMonthCalendarTest.class.php 2007-05-08 12:33:07 UTC (rev 5833)
+++ 3.x/trunk/limb/datetime/tests/cases/lmbMonthCalendarTest.class.php 2007-05-08 12:34:32 UTC (rev 5834)
@@ -1,161 +0,0 @@
-<?php
-/**
- * Limb Web Application Framework
- *
- * @link http://limb-project.com
- *
- * @copyright Copyright © 2004-2007 BIT
- * @license LGPL http://www.gnu.org/copyleft/lesser.html
- * @version $Id: lmbDateTest.class.php 5824 2007-05-07 13:44:24Z pachanga $
- * @package datetime
- */
-lmb_require('limb/datetime/src/lmbMonthCalendar.class.php');
-
-class lmbMonthCalendarTest extends UnitTestCase
-{
- function testGetBoundaries()
- {
- $c = new lmbMonthCalendar(2007, 5);
- $this->assertEqual(new lmbDate('2007-05-01'), $c->getStartDate());
- $this->assertEqual(new lmbDate('2007-05-31'), $c->getEndDate());
- }
-
- function testGetNumberOfDays()
- {
- $c = new lmbMonthCalendar(2007, 5);
- $this->assertEqual($c->getNumberOfDays(), 31);
- }
-
- function testGetNumberOfDaysForLeapYear()
- {
- $c1 = new lmbMonthCalendar(2005, 2);
- $this->assertEqual($c1->getNumberOfDays(), 28);
-
- $c2 = new lmbMonthCalendar(2004, 2);
- $this->assertEqual($c2->getNumberOfDays(), 29);
- }
-
- function testGetNumberOfWeeks()
- {
- $c1 = new lmbMonthCalendar(1999, 2);
- $this->assertEqual($c1->getNumberOfWeeks(), 4);
-
- $c2 = new lmbMonthCalendar(2007, 2);
- $this->assertEqual($c2->getNumberOfWeeks(), 5);
-
- $c3 = new lmbMonthCalendar(2010, 5);
- $this->assertEqual($c3->getNumberOfWeeks(), 6);
- }
-
- function testGetWeekFailed()
- {
- $c = new lmbMonthCalendar(1999, 2);
- $this->assertNull($c->getWeek(4));
- $this->assertNull($c->getWeek(10));
- $this->assertNull($c->getWeek(-1));
- }
-
- function testGetIdealWeek()
- {
- $c = new lmbMonthCalendar(1999, 2);
- $week0 = $c->getWeek(0);
- $week1 = $c->getWeek(1);
- $week2 = $c->getWeek(2);
- $week3 = $c->getWeek(3);
-
- $expected0 = array();
- $expected1 = array();
- $expected2 = array();
- $expected3 = array();
-
- for($i=0;$i<7;$i++)
- $expected0[] = new lmbDate(sprintf("1999-02-%02d", $i+1));
- for($i=7;$i<14;$i++)
- $expected1[] = new lmbDate(sprintf("1999-02-%02d", $i+1));
- for($i=14;$i<21;$i++)
- $expected2[] = new lmbDate(sprintf("1999-02-%02d", $i+1));
- for($i=21;$i<28;$i++)
- $expected3[] = new lmbDate(sprintf("1999-02-%02d", $i+1));
-
- $this->assertEqual($week0, $expected0);
- $this->assertEqual($week1, $expected1);
- $this->assertEqual($week2, $expected2);
- $this->assertEqual($week3, $expected3);
- }
-
- function testGetWeekWithDaysFromBoundaryMonths()
- {
- $c = new lmbMonthCalendar(2007, 2);
- $week0 = $c->getWeek(0);
- $week1 = $c->getWeek(1);
- $week2 = $c->getWeek(2);
- $week3 = $c->getWeek(3);
- $week4 = $c->getWeek(4);
-
- $expected0 = array();
- $expected1 = array();
- $expected2 = array();
- $expected3 = array();
- $expected4 = array();
-
- for($i=29;$i<32;$i++)
- $expected0[] = new lmbDate(sprintf("2007-01-%02d", $i));
- for($i=1;$i<5;$i++)
- $expected0[] = new lmbDate(sprintf("2007-02-%02d", $i));
-
- for($i=5;$i<12;$i++)
- $expected1[] = new lmbDate(sprintf("2007-02-%02d", $i));
- for($i=12;$i<19;$i++)
- $expected2[] = new lmbDate(sprintf("2007-02-%02d", $i));
- for($i=19;$i<26;$i++)
- $expected3[] = new lmbDate(sprintf("2007-02-%02d", $i));
-
- for($i=26;$i<29;$i++)
- $expected4[] = new lmbDate(sprintf("2007-02-%02d", $i));
- for($i=1;$i<5;$i++)
- $expected4[] = new lmbDate(sprintf("2007-03-%02d", $i));
-
- $this->assertEqual($week0, $expected0);
- $this->assertEqual($week1, $expected1);
- $this->assertEqual($week2, $expected2);
- $this->assertEqual($week3, $expected3);
- $this->assertEqual($week4, $expected4);
- }
-
- function testGetAllWeeks()
- {
- $c = new lmbMonthCalendar(2007, 2);
- $weeks = $c->getAllWeeks();
- $this->assertEqual($weeks, array($c->getWeek(0), $c->getWeek(1), $c->getWeek(2),
- $c->getWeek(3), $c->getWeek(4)));
- }
-
- function testGetNextMonth()
- {
- $c = new lmbMonthCalendar(2007, 2);
- $next = $c->getNextMonth();
- $this->assertEqual(new lmbMonthCalendar(2007, 3), $next);
- }
-
- function testGetNextMothFromDecember()
- {
- $c = new lmbMonthCalendar(2007, 12);
- $next = $c->getNextMonth();
- $this->assertEqual(new lmbMonthCalendar(2008, 1), $next);
- }
-
- function testGetPrevMonth()
- {
- $c = new lmbMonthCalendar(2007, 2);
- $prev = $c->getPrevMonth();
- $this->assertEqual(new lmbMonthCalendar(2007, 1), $prev);
- }
-
- function testGetPrevMonthFromJanuary()
- {
- $c = new lmbMonthCalendar(2007, 1);
- $prev = $c->getPrevMonth();
- $this->assertEqual(new lmbMonthCalendar(2006, 12), $prev);
- }
-}
-?>
\ No newline at end of file
Copied: 3.x/trunk/limb/datetime/tests/cases/lmbMonthTest.class.php (from rev 5832, 3.x/trunk/limb/datetime/tests/cases/lmbMonthCalendarTest.class.php)
===================================================================
--- 3.x/trunk/limb/datetime/tests/cases/lmbMonthTest.class.php (rev 0)
+++ 3.x/trunk/limb/datetime/tests/cases/lmbMonthTest.class.php 2007-05-08 12:34:32 UTC (rev 5834)
@@ -0,0 +1,161 @@
+<?php
+/**
+ * Limb Web Application Framework
+ *
+ * @link http://limb-project.com
+ *
+ * @copyright Copyright © 2004-2007 BIT
+ * @license LGPL http://www.gnu.org/copyleft/lesser.html
+ * @version $Id: lmbDateTest.class.php 5824 2007-05-07 13:44:24Z pachanga $
+ * @package datetime
+ */
+lmb_require('limb/datetime/src/lmbMonth.class.php');
+
+class lmbMonthTest extends UnitTestCase
+{
+ function testGetBoundaries()
+ {
+ $c = new lmbMonth(2007, 5);
+ $this->assertEqual(new lmbDate('2007-05-01'), $c->getStartDate());
+ $this->assertEqual(new lmbDate('2007-05-31'), $c->getEndDate());
+ }
+
+ function testGetNumberOfDays()
+ {
+ $c = new lmbMonth(2007, 5);
+ $this->assertEqual($c->getNumberOfDays(), 31);
+ }
+
+ function testGetNumberOfDaysForLeapYear()
+ {
+ $c1 = new lmbMonth(2005, 2);
+ $this->assertEqual($c1->getNumberOfDays(), 28);
+
+ $c2 = new lmbMonth(2004, 2);
+ $this->assertEqual($c2->getNumberOfDays(), 29);
+ }
+
+ function testGetNumberOfWeeks()
+ {
+ $c1 = new lmbMonth(1999, 2);
+ $this->assertEqual($c1->getNumberOfWeeks(), 4);
+
+ $c2 = new lmbMonth(2007, 2);
+ $this->assertEqual($c2->getNumberOfWeeks(), 5);
+
+ $c3 = new lmbMonth(2010, 5);
+ $this->assertEqual($c3->getNumberOfWeeks(), 6);
+ }
+
+ function testGetWeekFailed()
+ {
+ $c = new lmbMonth(1999, 2);
+ $this->assertNull($c->getWeek(4));
+ $this->assertNull($c->getWeek(10));
+ $this->assertNull($c->getWeek(-1));
+ }
+
+ function testGetIdealWeek()
+ {
+ $c = new lmbMonth(1999, 2);
+ $week0 = $c->getWeek(0);
+ $week1 = $c->getWeek(1);
+ $week2 = $c->getWeek(2);
+ $week3 = $c->getWeek(3);
+
+ $expected0 = array();
+ $expected1 = array();
+ $expected2 = array();
+ $expected3 = array();
+
+ for($i=0;$i<7;$i++)
+ $expected0[] = new lmbDate(sprintf("1999-02-%02d", $i+1));
+ for($i=7;$i<14;$i++)
+ $expected1[] = new lmbDate(sprintf("1999-02-%02d", $i+1));
+ for($i=14;$i<21;$i++)
+ $expected2[] = new lmbDate(sprintf("1999-02-%02d", $i+1));
+ for($i=21;$i<28;$i++)
+ $expected3[] = new lmbDate(sprintf("1999-02-%02d", $i+1));
+
+ $this->assertEqual($week0, $expected0);
+ $this->assertEqual($week1, $expected1);
+ $this->assertEqual($week2, $expected2);
+ $this->assertEqual($week3, $expected3);
+ }
+
+ function testGetWeekWithDaysFromBoundaryMonths()
+ {
+ $c = new lmbMonth(2007, 2);
+ $week0 = $c->getWeek(0);
+ $week1 = $c->getWeek(1);
+ $week2 = $c->getWeek(2);
+ $week3 = $c->getWeek(3);
+ $week4 = $c->getWeek(4);
+
+ $expected0 = array();
+ $expected1 = array();
+ $expected2 = array();
+ $expected3 = array();
+ $expected4 = array();
+
+ for($i=29;$i<32;$i++)
+ $expected0[] = new lmbDate(sprintf("2007-01-%02d", $i));
+ for($i=1;$i<5;$i++)
+ $expected0[] = new lmbDate(sprintf("2007-02-%02d", $i));
+
+ for($i=5;$i<12;$i++)
+ $expected1[] = new lmbDate(sprintf("2007-02-%02d", $i));
+ for($i=12;$i<19;$i++)
+ $expected2[] = new lmbDate(sprintf("2007-02-%02d", $i));
+ for($i=19;$i<26;$i++)
+ $expected3[] = new lmbDate(sprintf("2007-02-%02d", $i));
+
+ for($i=26;$i<29;$i++)
+ $expected4[] = new lmbDate(sprintf("2007-02-%02d", $i));
+ for($i=1;$i<5;$i++)
+ $expected4[] = new lmbDate(sprintf("2007-03-%02d", $i));
+
+ $this->assertEqual($week0, $expected0);
+ $this->assertEqual($week1, $expected1);
+ $this->assertEqual($week2, $expected2);
+ $this->assertEqual($week3, $expected3);
+ $this->assertEqual($week4, $expected4);
+ }
+
+ function testGetAllWeeks()
+ {
+ $c = new lmbMonth(2007, 2);
+ $weeks = $c->getAllWeeks();
+ $this->assertEqual($weeks, array($c->getWeek(0), $c->getWeek(1), $c->getWeek(2),
+ $c->getWeek(3), $c->getWeek(4)));
+ }
+
+ function testGetNextMonth()
+ {
+ $c = new lmbMonth(2007, 2);
+ $next = $c->getNextMonth();
+ $this->assertEqual(new lmbMonth(2007, 3), $next);
+ }
+
+ function testGetNextMothFromDecember()
+ {
+ $c = new lmbMonth(2007, 12);
+ $next = $c->getNextMonth();
+ $this->assertEqual(new lmbMonth(2008, 1), $next);
+ }
+
+ function testGetPrevMonth()
+ {
+ $c = new lmbMonth(2007, 2);
+ $prev = $c->getPrevMonth();
+ $this->assertEqual(new lmbMonth(2007, 1), $prev);
+ }
+
+ function testGetPrevMonthFromJanuary()
+ {
+ $c = new lmbMonth(2007, 1);
+ $prev = $c->getPrevMonth();
+ $this->assertEqual(new lmbMonth(2006, 12), $prev);
+ }
+}
+?>
\ No newline at end of file
More information about the limb-svn
mailing list