]> git.mxchange.org Git - friendica-addons.git/blob - dav/SabreDAV/tests/Sabre/VObject/Component/VAlarmTest.php
5229de72b98ca44ec059b3d3c0b042b1ef0ea09f
[friendica-addons.git] / dav / SabreDAV / tests / Sabre / VObject / Component / VAlarmTest.php
1 <?php
2
3 class Sabre_VObject_Component_VAlarmTest extends PHPUnit_Framework_TestCase {
4
5     /**
6      * @dataProvider timeRangeTestData
7      */
8     public function testInTimeRange(Sabre_VObject_Component_VAlarm $valarm,$start,$end,$outcome) {
9
10         $this->assertEquals($outcome, $valarm->isInTimeRange($start, $end));
11
12     }
13
14     public function timeRangeTestData() {
15
16         $tests = array();
17
18         // Hard date and time        
19         $valarm1 = Sabre_VObject_Component::create('VALARM');
20         $valarm1->TRIGGER = '20120312T130000Z';
21         $valarm1->TRIGGER['VALUE'] = 'DATE-TIME';
22
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);
25
26         // Relation to start time of event
27         $valarm2 = Sabre_VObject_Component::create('VALARM');
28         $valarm2->TRIGGER = '-P1D';
29         $valarm2->TRIGGER['VALUE'] = 'DURATION';
30
31         $vevent2 = Sabre_VObject_Component::create('VEVENT');
32         $vevent2->DTSTART = '20120313T130000Z';
33         $vevent2->add($valarm2);
34
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);
37
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';
43
44         $vevent3 = Sabre_VObject_Component::create('VEVENT');
45         $vevent3->DTSTART = '20120301T130000Z';
46         $vevent3->DTEND = '20120401T130000Z';
47         $vevent3->add($valarm3);
48
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);
51
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';
57
58         $vtodo4 = Sabre_VObject_Component::create('VTODO');
59         $vtodo4->DTSTART = '20120301T130000Z';
60         $vtodo4->DUE = '20120401T130000Z';
61         $vtodo4->add($valarm4);
62
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);
65
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';
72
73         $vevent5 = Sabre_VObject_Component::create('VEVENT');
74         $vevent5->DTSTART = '20120301T130000Z';
75         $vevent5->add($valarm5);
76
77         $tests[] = array($valarm5, new DateTime('2012-03-09 01:00:00'), new DateTime('2012-03-10 01:00:00'), true);
78
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';
84
85         $vevent6 = Sabre_VObject_Component::create('VEVENT');
86         $vevent6->DTSTART = '20120313T130000Z';
87         $vevent6->add($valarm6);
88
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);
91
92
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';
98
99         $vevent7 = Sabre_VObject_Component::create('VEVENT');
100         $vevent7->DTSTART = '20120301T130000Z';
101         $vevent7->DURATION = 'P30D';
102         $vevent7->add($valarm7);
103
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);
106
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';
112
113         $vevent7 = Sabre_VObject_Component::create('VEVENT');
114         $vevent7->DTSTART = '20120301T130000Z';
115         $vevent7->add($valarm7);
116
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);
119
120
121         return $tests;
122     }
123
124     /**
125      * @expectedException Sabre_DAV_Exception
126      */
127     public function testInTimeRangeInvalidComponent() {
128
129         $valarm = Sabre_VObject_Component::create('VALARM');
130         $valarm->TRIGGER = '-P1D';
131         $valarm->TRIGGER['RELATED'] = 'END';
132
133         $vjournal = Sabre_VObject_Component::create('VJOURNAL');
134         $vjournal->add($valarm);
135
136         $valarm->isInTimeRange(new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'));
137
138     }
139
140 }
141