annotate vendor/sabre/vobject/tests/VObject/Component/VAlarmTest.php @ 7:430dbd5346f7

vendor sabre as distributed
author Charlie Root
date Sat, 13 Jan 2018 09:06:10 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
1 <?php
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
2
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
3 namespace Sabre\VObject\Component;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
4
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
5 use Sabre\VObject\Component;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
6 use DateTime;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
7 use Sabre\VObject\Reader;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
8
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
9 class VAlarmTest extends \PHPUnit_Framework_TestCase {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
10
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
11 /**
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
12 * @dataProvider timeRangeTestData
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
13 */
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
14 public function testInTimeRange(VAlarm $valarm,$start,$end,$outcome) {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
15
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
16 $this->assertEquals($outcome, $valarm->isInTimeRange($start, $end));
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
17
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
18 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
19
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
20 public function timeRangeTestData() {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
21
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
22 $tests = array();
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
23
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
24 $calendar = new VCalendar();
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
25
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
26 // Hard date and time
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
27 $valarm1 = $calendar->createComponent('VALARM');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
28 $valarm1->add(
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
29 $calendar->createProperty('TRIGGER', '20120312T130000Z', array('VALUE' => 'DATE-TIME'))
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
30 );
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
31
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
32 $tests[] = array($valarm1, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
33 $tests[] = array($valarm1, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
34
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
35 // Relation to start time of event
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
36 $valarm2 = $calendar->createComponent('VALARM');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
37 $valarm2->add(
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
38 $calendar->createProperty('TRIGGER', '-P1D', array('VALUE' => 'DURATION'))
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
39 );
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
40
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
41 $vevent2 = $calendar->createComponent('VEVENT');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
42 $vevent2->DTSTART = '20120313T130000Z';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
43 $vevent2->add($valarm2);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
44
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
45 $tests[] = array($valarm2, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
46 $tests[] = array($valarm2, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
47
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
48 // Relation to end time of event
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
49 $valarm3 = $calendar->createComponent('VALARM');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
50 $valarm3->add( $calendar->createProperty('TRIGGER', '-P1D', array('VALUE'=>'DURATION', 'RELATED' => 'END')) );
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
51
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
52 $vevent3 = $calendar->createComponent('VEVENT');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
53 $vevent3->DTSTART = '20120301T130000Z';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
54 $vevent3->DTEND = '20120401T130000Z';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
55 $vevent3->add($valarm3);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
56
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
57 $tests[] = array($valarm3, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
58 $tests[] = array($valarm3, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
59
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
60 // Relation to end time of todo
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
61 $valarm4 = $calendar->createComponent('VALARM');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
62 $valarm4->TRIGGER = '-P1D';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
63 $valarm4->TRIGGER['VALUE'] = 'DURATION';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
64 $valarm4->TRIGGER['RELATED']= 'END';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
65
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
66 $vtodo4 = $calendar->createComponent('VTODO');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
67 $vtodo4->DTSTART = '20120301T130000Z';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
68 $vtodo4->DUE = '20120401T130000Z';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
69 $vtodo4->add($valarm4);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
70
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
71 $tests[] = array($valarm4, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
72 $tests[] = array($valarm4, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
73
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
74 // Relation to start time of event + repeat
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
75 $valarm5 = $calendar->createComponent('VALARM');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
76 $valarm5->TRIGGER = '-P1D';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
77 $valarm5->TRIGGER['VALUE'] = 'DURATION';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
78 $valarm5->REPEAT = 10;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
79 $valarm5->DURATION = 'P1D';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
80
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
81 $vevent5 = $calendar->createComponent('VEVENT');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
82 $vevent5->DTSTART = '20120301T130000Z';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
83 $vevent5->add($valarm5);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
84
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
85 $tests[] = array($valarm5, new DateTime('2012-03-09 01:00:00'), new DateTime('2012-03-10 01:00:00'), true);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
86
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
87 // Relation to start time of event + duration, but no repeat
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
88 $valarm6 = $calendar->createComponent('VALARM');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
89 $valarm6->TRIGGER = '-P1D';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
90 $valarm6->TRIGGER['VALUE'] = 'DURATION';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
91 $valarm6->DURATION = 'P1D';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
92
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
93 $vevent6 = $calendar->createComponent('VEVENT');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
94 $vevent6->DTSTART = '20120313T130000Z';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
95 $vevent6->add($valarm6);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
96
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
97 $tests[] = array($valarm6, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
98 $tests[] = array($valarm6, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
99
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
100
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
101 // Relation to end time of event (DURATION instead of DTEND)
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
102 $valarm7 = $calendar->createComponent('VALARM');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
103 $valarm7->TRIGGER = '-P1D';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
104 $valarm7->TRIGGER['VALUE'] = 'DURATION';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
105 $valarm7->TRIGGER['RELATED']= 'END';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
106
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
107 $vevent7 = $calendar->createComponent('VEVENT');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
108 $vevent7->DTSTART = '20120301T130000Z';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
109 $vevent7->DURATION = 'P30D';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
110 $vevent7->add($valarm7);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
111
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
112 $tests[] = array($valarm7, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
113 $tests[] = array($valarm7, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
114
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
115 // Relation to end time of event (No DTEND or DURATION)
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
116 $valarm7 = $calendar->createComponent('VALARM');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
117 $valarm7->TRIGGER = '-P1D';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
118 $valarm7->TRIGGER['VALUE'] = 'DURATION';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
119 $valarm7->TRIGGER['RELATED']= 'END';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
120
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
121 $vevent7 = $calendar->createComponent('VEVENT');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
122 $vevent7->DTSTART = '20120301T130000Z';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
123 $vevent7->add($valarm7);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
124
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
125 $tests[] = array($valarm7, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), true);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
126 $tests[] = array($valarm7, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), false);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
127
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
128
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
129 return $tests;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
130 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
131
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
132 /**
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
133 * @expectedException LogicException
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
134 */
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
135 public function testInTimeRangeInvalidComponent() {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
136
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
137 $calendar = new VCalendar();
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
138 $valarm = $calendar->createComponent('VALARM');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
139 $valarm->TRIGGER = '-P1D';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
140 $valarm->TRIGGER['RELATED'] = 'END';
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
141
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
142 $vjournal = $calendar->createComponent('VJOURNAL');
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
143 $vjournal->add($valarm);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
144
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
145 $valarm->isInTimeRange(new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'));
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
146
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
147 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
148
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
149 /**
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
150 * This bug was found and reported on the mailing list.
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
151 */
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
152 public function testInTimeRangeBuggy() {
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
153
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
154 $input = <<<BLA
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
155 BEGIN:VCALENDAR
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
156 BEGIN:VTODO
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
157 DTSTAMP:20121003T064931Z
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
158 UID:b848cb9a7bb16e464a06c222ca1f8102@examle.com
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
159 STATUS:NEEDS-ACTION
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
160 DUE:20121005T000000Z
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
161 SUMMARY:Task 1
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
162 CATEGORIES:AlarmCategory
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
163 BEGIN:VALARM
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
164 TRIGGER:-PT10M
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
165 ACTION:DISPLAY
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
166 DESCRIPTION:Task 1
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
167 END:VALARM
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
168 END:VTODO
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
169 END:VCALENDAR
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
170 BLA;
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
171
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
172 $vobj = Reader::read($input);
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
173
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
174 $this->assertTrue($vobj->VTODO->VALARM->isInTimeRange(new \DateTime('2012-10-01 00:00:00'), new \DateTime('2012-11-01 00:00:00')));
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
175
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
176 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
177
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
178 }
430dbd5346f7 vendor sabre as distributed
Charlie Root
parents:
diff changeset
179