3 class Sabre_VObject_Component_VEventTest extends PHPUnit_Framework_TestCase {
6 * @dataProvider timeRangeTestData
8 public function testInTimeRange(Sabre_VObject_Component_VEvent $vevent,$start,$end,$outcome) {
10 $this->assertEquals($outcome, $vevent->isInTimeRange($start, $end));
14 public function timeRangeTestData() {
18 $vevent = new Sabre_VObject_Component_VEvent('VEVENT');
19 $vevent->DTSTART = '20111223T120000Z';
20 $tests[] = array($vevent, new DateTime('2011-01-01'), new DateTime('2012-01-01'), true);
21 $tests[] = array($vevent, new DateTime('2011-01-01'), new DateTime('2011-11-01'), false);
23 $vevent2 = clone $vevent;
24 $vevent2->DTEND = '20111225T120000Z';
25 $tests[] = array($vevent2, new DateTime('2011-01-01'), new DateTime('2012-01-01'), true);
26 $tests[] = array($vevent2, new DateTime('2011-01-01'), new DateTime('2011-11-01'), false);
28 $vevent3 = clone $vevent;
29 $vevent3->DURATION = 'P1D';
30 $tests[] = array($vevent3, new DateTime('2011-01-01'), new DateTime('2012-01-01'), true);
31 $tests[] = array($vevent3, new DateTime('2011-01-01'), new DateTime('2011-11-01'), false);
33 $vevent4 = clone $vevent;
34 $vevent4->DTSTART = '20111225';
35 $vevent4->DTSTART['VALUE'] = 'DATE';
36 $tests[] = array($vevent4, new DateTime('2011-01-01'), new DateTime('2012-01-01'), true);
37 $tests[] = array($vevent4, new DateTime('2011-01-01'), new DateTime('2011-11-01'), false);
38 // Event with no end date should be treated as lasting the entire day.
39 $tests[] = array($vevent4, new DateTime('2011-12-25 16:00:00'), new DateTime('2011-12-25 17:00:00'), true);
42 $vevent5 = clone $vevent;
43 $vevent5->DURATION = 'P1D';
44 $vevent5->RRULE = 'FREQ=YEARLY';
45 $tests[] = array($vevent5, new DateTime('2011-01-01'), new DateTime('2012-01-01'), true);
46 $tests[] = array($vevent5, new DateTime('2011-01-01'), new DateTime('2011-11-01'), false);
47 $tests[] = array($vevent5, new DateTime('2013-12-01'), new DateTime('2013-12-31'), true);
49 $vevent6 = clone $vevent;
50 $vevent6->DTSTART = '20111225';
51 $vevent6->DTSTART['VALUE'] = 'DATE';
52 $vevent6->DTEND = '20111225';
53 $vevent6->DTEND['VALUE'] = 'DATE';
54 $tests[] = array($vevent6, new DateTime('2011-01-01'), new DateTime('2012-01-01'), true);
55 $tests[] = array($vevent6, new DateTime('2011-01-01'), new DateTime('2011-11-01'), false);
56 // Event with no end date should be treated as lasting the entire day.
57 $tests[] = array($vevent6, new DateTime('2011-12-25 16:00:00'), new DateTime('2011-12-25 17:00:00'), true);