3 class Sabre_VObject_Component_VAlarmTest extends PHPUnit_Framework_TestCase {
6 * @dataProvider timeRangeTestData
8 public function testInTimeRange(Sabre_VObject_Component_VAlarm $valarm,$start,$end,$outcome) {
10 $this->assertEquals($outcome, $valarm->isInTimeRange($start, $end));
14 public function timeRangeTestData() {
19 $valarm1 = Sabre_VObject_Component::create('VALARM');
20 $valarm1->TRIGGER = '20120312T130000Z';
21 $valarm1->TRIGGER['VALUE'] = 'DATE-TIME';
23 $tests[] = array($valarm1, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
24 $tests[] = array($valarm1, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
26 // Relation to start time of event
27 $valarm2 = Sabre_VObject_Component::create('VALARM');
28 $valarm2->TRIGGER = '-P1D';
29 $valarm2->TRIGGER['VALUE'] = 'DURATION';
31 $vevent2 = Sabre_VObject_Component::create('VEVENT');
32 $vevent2->DTSTART = '20120313T130000Z';
33 $vevent2->add($valarm2);
35 $tests[] = array($valarm2, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
36 $tests[] = array($valarm2, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
38 // Relation to end time of event
39 $valarm3 = Sabre_VObject_Component::create('VALARM');
40 $valarm3->TRIGGER = '-P1D';
41 $valarm3->TRIGGER['VALUE'] = 'DURATION';
42 $valarm3->TRIGGER['RELATED']= 'END';
44 $vevent3 = Sabre_VObject_Component::create('VEVENT');
45 $vevent3->DTSTART = '20120301T130000Z';
46 $vevent3->DTEND = '20120401T130000Z';
47 $vevent3->add($valarm3);
49 $tests[] = array($valarm3, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
50 $tests[] = array($valarm3, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
52 // Relation to end time of todo
53 $valarm4 = Sabre_VObject_Component::create('VALARM');
54 $valarm4->TRIGGER = '-P1D';
55 $valarm4->TRIGGER['VALUE'] = 'DURATION';
56 $valarm4->TRIGGER['RELATED']= 'END';
58 $vtodo4 = Sabre_VObject_Component::create('VTODO');
59 $vtodo4->DTSTART = '20120301T130000Z';
60 $vtodo4->DUE = '20120401T130000Z';
61 $vtodo4->add($valarm4);
63 $tests[] = array($valarm4, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
64 $tests[] = array($valarm4, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
66 // Relation to start time of event + repeat
67 $valarm5 = Sabre_VObject_Component::create('VALARM');
68 $valarm5->TRIGGER = '-P1D';
69 $valarm5->TRIGGER['VALUE'] = 'DURATION';
70 $valarm5->REPEAT = 10;
71 $valarm5->DURATION = 'P1D';
73 $vevent5 = Sabre_VObject_Component::create('VEVENT');
74 $vevent5->DTSTART = '20120301T130000Z';
75 $vevent5->add($valarm5);
77 $tests[] = array($valarm5, new DateTime('2012-03-09 01:00:00'), new DateTime('2012-03-10 01:00:00'), true);
79 // Relation to start time of event + duration, but no repeat
80 $valarm6 = Sabre_VObject_Component::create('VALARM');
81 $valarm6->TRIGGER = '-P1D';
82 $valarm6->TRIGGER['VALUE'] = 'DURATION';
83 $valarm6->DURATION = 'P1D';
85 $vevent6 = Sabre_VObject_Component::create('VEVENT');
86 $vevent6->DTSTART = '20120313T130000Z';
87 $vevent6->add($valarm6);
89 $tests[] = array($valarm6, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
90 $tests[] = array($valarm6, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
93 // Relation to end time of event (DURATION instead of DTEND)
94 $valarm7 = Sabre_VObject_Component::create('VALARM');
95 $valarm7->TRIGGER = '-P1D';
96 $valarm7->TRIGGER['VALUE'] = 'DURATION';
97 $valarm7->TRIGGER['RELATED']= 'END';
99 $vevent7 = Sabre_VObject_Component::create('VEVENT');
100 $vevent7->DTSTART = '20120301T130000Z';
101 $vevent7->DURATION = 'P30D';
102 $vevent7->add($valarm7);
104 $tests[] = array($valarm7, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
105 $tests[] = array($valarm7, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
107 // Relation to end time of event (No DTEND or DURATION)
108 $valarm7 = Sabre_VObject_Component::create('VALARM');
109 $valarm7->TRIGGER = '-P1D';
110 $valarm7->TRIGGER['VALUE'] = 'DURATION';
111 $valarm7->TRIGGER['RELATED']= 'END';
113 $vevent7 = Sabre_VObject_Component::create('VEVENT');
114 $vevent7->DTSTART = '20120301T130000Z';
115 $vevent7->add($valarm7);
117 $tests[] = array($valarm7, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), true);
118 $tests[] = array($valarm7, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), false);
125 * @expectedException Sabre_DAV_Exception
127 public function testInTimeRangeInvalidComponent() {
129 $valarm = Sabre_VObject_Component::create('VALARM');
130 $valarm->TRIGGER = '-P1D';
131 $valarm->TRIGGER['RELATED'] = 'END';
133 $vjournal = Sabre_VObject_Component::create('VJOURNAL');
134 $vjournal->add($valarm);
136 $valarm->isInTimeRange(new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'));