]> git.mxchange.org Git - friendica-addons.git/blob - dav/sabre-vobject/tests/Sabre/VObject/Component/VAlarmTest.php
Second part of refactoring; should be runnable again, yet not thoroughly tested
[friendica-addons.git] / dav / sabre-vobject / tests / Sabre / VObject / Component / VAlarmTest.php
1 <?php
2
3 namespace Sabre\VObject\Component;
4
5 use Sabre\VObject\Component;
6 use DateTime;
7
8 class VAlarmTest extends \PHPUnit_Framework_TestCase {
9
10     /**
11      * @dataProvider timeRangeTestData
12      */
13     public function testInTimeRange(VAlarm $valarm,$start,$end,$outcome) {
14
15         $this->assertEquals($outcome, $valarm->isInTimeRange($start, $end));
16
17     }
18
19     public function timeRangeTestData() {
20
21         $tests = array();
22
23         // Hard date and time        
24         $valarm1 = Component::create('VALARM');
25         $valarm1->TRIGGER = '20120312T130000Z';
26         $valarm1->TRIGGER['VALUE'] = 'DATE-TIME';
27
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);
30
31         // Relation to start time of event
32         $valarm2 = Component::create('VALARM');
33         $valarm2->TRIGGER = '-P1D';
34         $valarm2->TRIGGER['VALUE'] = 'DURATION';
35
36         $vevent2 = Component::create('VEVENT');
37         $vevent2->DTSTART = '20120313T130000Z';
38         $vevent2->add($valarm2);
39
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);
42
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';
48
49         $vevent3 = Component::create('VEVENT');
50         $vevent3->DTSTART = '20120301T130000Z';
51         $vevent3->DTEND = '20120401T130000Z';
52         $vevent3->add($valarm3);
53
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);
56
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';
62
63         $vtodo4 = Component::create('VTODO');
64         $vtodo4->DTSTART = '20120301T130000Z';
65         $vtodo4->DUE = '20120401T130000Z';
66         $vtodo4->add($valarm4);
67
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);
70
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';
77
78         $vevent5 = Component::create('VEVENT');
79         $vevent5->DTSTART = '20120301T130000Z';
80         $vevent5->add($valarm5);
81
82         $tests[] = array($valarm5, new DateTime('2012-03-09 01:00:00'), new DateTime('2012-03-10 01:00:00'), true);
83
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';
89
90         $vevent6 = Component::create('VEVENT');
91         $vevent6->DTSTART = '20120313T130000Z';
92         $vevent6->add($valarm6);
93
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);
96
97
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';
103
104         $vevent7 = Component::create('VEVENT');
105         $vevent7->DTSTART = '20120301T130000Z';
106         $vevent7->DURATION = 'P30D';
107         $vevent7->add($valarm7);
108
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);
111
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';
117
118         $vevent7 = Component::create('VEVENT');
119         $vevent7->DTSTART = '20120301T130000Z';
120         $vevent7->add($valarm7);
121
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);
124
125
126         return $tests;
127     }
128
129     /**
130      * @expectedException LogicException
131      */
132     public function testInTimeRangeInvalidComponent() {
133
134         $valarm = Component::create('VALARM');
135         $valarm->TRIGGER = '-P1D';
136         $valarm->TRIGGER['RELATED'] = 'END';
137
138         $vjournal = Component::create('VJOURNAL');
139         $vjournal->add($valarm);
140
141         $valarm->isInTimeRange(new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'));
142
143     }
144
145 }
146