3 namespace Sabre\VObject\Component;
7 class VEventTest extends \PHPUnit_Framework_TestCase {
10 * @dataProvider timeRangeTestData
12 public function testInTimeRange(VEvent $vevent,$start,$end,$outcome) {
14 $this->assertEquals($outcome, $vevent->isInTimeRange($start, $end));
18 public function timeRangeTestData() {
22 $vevent = new VEvent('VEVENT');
23 $vevent->DTSTART = '20111223T120000Z';
24 $tests[] = array($vevent, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
25 $tests[] = array($vevent, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
27 $vevent2 = clone $vevent;
28 $vevent2->DTEND = '20111225T120000Z';
29 $tests[] = array($vevent2, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
30 $tests[] = array($vevent2, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
32 $vevent3 = clone $vevent;
33 $vevent3->DURATION = 'P1D';
34 $tests[] = array($vevent3, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
35 $tests[] = array($vevent3, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
37 $vevent4 = clone $vevent;
38 $vevent4->DTSTART = '20111225';
39 $vevent4->DTSTART['VALUE'] = 'DATE';
40 $tests[] = array($vevent4, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
41 $tests[] = array($vevent4, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
42 // Event with no end date should be treated as lasting the entire day.
43 $tests[] = array($vevent4, new \DateTime('2011-12-25 16:00:00'), new \DateTime('2011-12-25 17:00:00'), true);
46 $vevent5 = clone $vevent;
47 $vevent5->DURATION = 'P1D';
48 $vevent5->RRULE = 'FREQ=YEARLY';
49 $tests[] = array($vevent5, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
50 $tests[] = array($vevent5, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
51 $tests[] = array($vevent5, new \DateTime('2013-12-01'), new \DateTime('2013-12-31'), true);
53 $vevent6 = clone $vevent;
54 $vevent6->DTSTART = '20111225';
55 $vevent6->DTSTART['VALUE'] = 'DATE';
56 $vevent6->DTEND = '20111225';
57 $vevent6->DTEND['VALUE'] = 'DATE';
59 $tests[] = array($vevent6, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
60 $tests[] = array($vevent6, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
62 // Added this test to ensure that recurrence rules with no DTEND also
63 // get checked for the entire day.
64 $vevent7 = clone $vevent;
65 $vevent7->DTSTART = '20120101';
66 $vevent7->DTSTART['VALUE'] = 'DATE';
67 $vevent7->RRULE = 'FREQ=MONTHLY';
68 $tests[] = array($vevent7, new \DateTime('2012-02-01 15:00:00'), new \DateTime('2012-02-02'), true);