function testIntersects() { $datetime1 = new A_Datetime(); $datetime1->parseDate('2001/01/01'); $datetime2 = new A_Datetime(); $datetime2->parseDate('2001/02/01'); $datetime3 = new A_Datetime(); $datetime3->parseDate('2001/03/01'); $datetime4 = new A_Datetime(); $datetime4->parseDate('2001/04/01'); $datetime5 = new A_Datetime(); $datetime5->parseDate('2001/05/01'); // not overlapping $range1 = new A_Datetime_Range($datetime1, $datetime2); $range2 = new A_Datetime_Range($datetime3, $datetime4); $this->assertFalse($range1->intersects($range2)); // range1 end date in range2 $range1 = new A_Datetime_Range($datetime1, $datetime3); $range2 = new A_Datetime_Range($datetime2, $datetime4); $this->assertTrue($range1->intersects($range2)); // range1 start date in range2 $range1 = new A_Datetime_Range($datetime3, $datetime5); $range2 = new A_Datetime_Range($datetime1, $datetime4); $this->assertTrue($range1->intersects($range2)); // range1 the same as range2 $range1 = new A_Datetime_Range($datetime2, $datetime4); $range2 = new A_Datetime_Range($datetime2, $datetime4); $this->assertTrue($range1->intersects($range2)); // range1 end date the same as range2 start date $range1 = new A_Datetime_Range($datetime1, $datetime3); $range2 = new A_Datetime_Range($datetime3, $datetime5); $this->assertTrue($range1->intersects($range2)); // range1 start date the same as range2 end date $range1 = new A_Datetime_Range($datetime3, $datetime5); $range2 = new A_Datetime_Range($datetime1, $datetime3); $this->assertTrue($range1->intersects($range2)); // range1 inside range2 $range1 = new A_Datetime_Range($datetime2, $datetime4); $range2 = new A_Datetime_Range($datetime1, $datetime5); $this->assertTrue($range1->intersects($range2)); // range2 inside range1 $range1 = new A_Datetime_Range($datetime1, $datetime5); $range2 = new A_Datetime_Range($datetime2, $datetime4); $this->assertTrue($range1->intersects($range2)); }
function testIsNotWithinRangeReturnsFalse() { $date1 = new A_Datetime(); $date1->parseDate('2008/12/20'); $date2 = new A_Datetime(); $date2->parseDate('2008/12/21'); $date3 = new A_Datetime(); $date3->parseDate('2008/12/23'); $range = new MockA_Datetime_Range(); $range->setReturnValue('getStart', $date2->getTimestamp()); $range->setReturnValue('getEnd', $date3->getTimestamp()); $this->assertFalse($date1->isWithin($range)); }