3 namespace Sabre\VObject\Component;
5 use Sabre\VObject\Component;
8 class VAlarmTest extends \PHPUnit_Framework_TestCase {
11 * @dataProvider timeRangeTestData
13 public function testInTimeRange(VAlarm $valarm,$start,$end,$outcome) {
15 $this->assertEquals($outcome, $valarm->isInTimeRange($start, $end));
19 public function timeRangeTestData() {
24 $valarm1 = Component::create('VALARM');
25 $valarm1->TRIGGER = '20120312T130000Z';
26 $valarm1->TRIGGER['VALUE'] = 'DATE-TIME';
28 $tests[] = array($valarm1, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
29 $tests[] = array($valarm1, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
31 // Relation to start time of event
32 $valarm2 = Component::create('VALARM');
33 $valarm2->TRIGGER = '-P1D';
34 $valarm2->TRIGGER['VALUE'] = 'DURATION';
36 $vevent2 = Component::create('VEVENT');
37 $vevent2->DTSTART = '20120313T130000Z';
38 $vevent2->add($valarm2);
40 $tests[] = array($valarm2, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
41 $tests[] = array($valarm2, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
43 // Relation to end time of event
44 $valarm3 = Component::create('VALARM');
45 $valarm3->TRIGGER = '-P1D';
46 $valarm3->TRIGGER['VALUE'] = 'DURATION';
47 $valarm3->TRIGGER['RELATED']= 'END';
49 $vevent3 = Component::create('VEVENT');
50 $vevent3->DTSTART = '20120301T130000Z';
51 $vevent3->DTEND = '20120401T130000Z';
52 $vevent3->add($valarm3);
54 $tests[] = array($valarm3, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
55 $tests[] = array($valarm3, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
57 // Relation to end time of todo
58 $valarm4 = Component::create('VALARM');
59 $valarm4->TRIGGER = '-P1D';
60 $valarm4->TRIGGER['VALUE'] = 'DURATION';
61 $valarm4->TRIGGER['RELATED']= 'END';
63 $vtodo4 = Component::create('VTODO');
64 $vtodo4->DTSTART = '20120301T130000Z';
65 $vtodo4->DUE = '20120401T130000Z';
66 $vtodo4->add($valarm4);
68 $tests[] = array($valarm4, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
69 $tests[] = array($valarm4, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
71 // Relation to start time of event + repeat
72 $valarm5 = Component::create('VALARM');
73 $valarm5->TRIGGER = '-P1D';
74 $valarm5->TRIGGER['VALUE'] = 'DURATION';
75 $valarm5->REPEAT = 10;
76 $valarm5->DURATION = 'P1D';
78 $vevent5 = Component::create('VEVENT');
79 $vevent5->DTSTART = '20120301T130000Z';
80 $vevent5->add($valarm5);
82 $tests[] = array($valarm5, new DateTime('2012-03-09 01:00:00'), new DateTime('2012-03-10 01:00:00'), true);
84 // Relation to start time of event + duration, but no repeat
85 $valarm6 = Component::create('VALARM');
86 $valarm6->TRIGGER = '-P1D';
87 $valarm6->TRIGGER['VALUE'] = 'DURATION';
88 $valarm6->DURATION = 'P1D';
90 $vevent6 = Component::create('VEVENT');
91 $vevent6->DTSTART = '20120313T130000Z';
92 $vevent6->add($valarm6);
94 $tests[] = array($valarm6, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
95 $tests[] = array($valarm6, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
98 // Relation to end time of event (DURATION instead of DTEND)
99 $valarm7 = Component::create('VALARM');
100 $valarm7->TRIGGER = '-P1D';
101 $valarm7->TRIGGER['VALUE'] = 'DURATION';
102 $valarm7->TRIGGER['RELATED']= 'END';
104 $vevent7 = Component::create('VEVENT');
105 $vevent7->DTSTART = '20120301T130000Z';
106 $vevent7->DURATION = 'P30D';
107 $vevent7->add($valarm7);
109 $tests[] = array($valarm7, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
110 $tests[] = array($valarm7, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
112 // Relation to end time of event (No DTEND or DURATION)
113 $valarm7 = Component::create('VALARM');
114 $valarm7->TRIGGER = '-P1D';
115 $valarm7->TRIGGER['VALUE'] = 'DURATION';
116 $valarm7->TRIGGER['RELATED']= 'END';
118 $vevent7 = Component::create('VEVENT');
119 $vevent7->DTSTART = '20120301T130000Z';
120 $vevent7->add($valarm7);
122 $tests[] = array($valarm7, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), true);
123 $tests[] = array($valarm7, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), false);
130 * @expectedException LogicException
132 public function testInTimeRangeInvalidComponent() {
134 $valarm = Component::create('VALARM');
135 $valarm->TRIGGER = '-P1D';
136 $valarm->TRIGGER['RELATED'] = 'END';
138 $vjournal = Component::create('VJOURNAL');
139 $vjournal->add($valarm);
141 $valarm->isInTimeRange(new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'));