ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
VTodoTest.php
Go to the documentation of this file.
1 <?php
2 
4 
8 
9 class VTodoTest extends TestCase {
10 
14  function testInTimeRange(VTodo $vtodo, $start, $end, $outcome) {
15 
16  $this->assertEquals($outcome, $vtodo->isInTimeRange($start, $end));
17 
18  }
19 
20  function timeRangeTestData() {
21 
22  $tests = [];
23 
24  $calendar = new VCalendar();
25 
26  $vtodo = $calendar->createComponent('VTODO');
27  $vtodo->DTSTART = '20111223T120000Z';
28  $tests[] = [$vtodo, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true];
29  $tests[] = [$vtodo, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false];
30 
31  $vtodo2 = clone $vtodo;
32  $vtodo2->DURATION = 'P1D';
33  $tests[] = [$vtodo2, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true];
34  $tests[] = [$vtodo2, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false];
35 
36  $vtodo3 = clone $vtodo;
37  $vtodo3->DUE = '20111225';
38  $tests[] = [$vtodo3, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true];
39  $tests[] = [$vtodo3, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false];
40 
41  $vtodo4 = $calendar->createComponent('VTODO');
42  $vtodo4->DUE = '20111225';
43  $tests[] = [$vtodo4, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true];
44  $tests[] = [$vtodo4, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false];
45 
46  $vtodo5 = $calendar->createComponent('VTODO');
47  $vtodo5->COMPLETED = '20111225';
48  $tests[] = [$vtodo5, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true];
49  $tests[] = [$vtodo5, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false];
50 
51  $vtodo6 = $calendar->createComponent('VTODO');
52  $vtodo6->CREATED = '20111225';
53  $tests[] = [$vtodo6, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true];
54  $tests[] = [$vtodo6, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false];
55 
56  $vtodo7 = $calendar->createComponent('VTODO');
57  $vtodo7->CREATED = '20111225';
58  $vtodo7->COMPLETED = '20111226';
59  $tests[] = [$vtodo7, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true];
60  $tests[] = [$vtodo7, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false];
61 
62  $vtodo7 = $calendar->createComponent('VTODO');
63  $tests[] = [$vtodo7, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true];
64  $tests[] = [$vtodo7, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), true];
65 
66  return $tests;
67 
68  }
69 
70  function testValidate() {
71 
72  $input = <<<HI
73 BEGIN:VCALENDAR
74 VERSION:2.0
75 PRODID:YoYo
76 BEGIN:VTODO
77 UID:1234-21355-123156
78 DTSTAMP:20140402T183400Z
79 END:VTODO
80 END:VCALENDAR
81 HI;
82 
83  $obj = Reader::read($input);
84 
85  $warnings = $obj->validate();
86  $messages = [];
87  foreach ($warnings as $warning) {
88  $messages[] = $warning['message'];
89  }
90 
91  $this->assertEquals([], $messages);
92 
93  }
94 
95  function testValidateInvalid() {
96 
97  $input = <<<HI
98 BEGIN:VCALENDAR
99 VERSION:2.0
100 PRODID:YoYo
101 BEGIN:VTODO
102 END:VTODO
103 END:VCALENDAR
104 HI;
105 
106  $obj = Reader::read($input);
107 
108  $warnings = $obj->validate();
109  $messages = [];
110  foreach ($warnings as $warning) {
111  $messages[] = $warning['message'];
112  }
113 
114  $this->assertEquals([
115  "UID MUST appear exactly once in a VTODO component",
116  "DTSTAMP MUST appear exactly once in a VTODO component",
117  ], $messages);
118 
119  }
120 
122 
123  $input = <<<HI
124 BEGIN:VCALENDAR
125 VERSION:2.0
126 PRODID:YoYo
127 BEGIN:VTODO
128 UID:FOO
129 DTSTART;VALUE=DATE-TIME:20140520T131600Z
130 DUE;VALUE=DATE:20140520
131 DTSTAMP;VALUE=DATE-TIME:20140520T131600Z
132 END:VTODO
133 END:VCALENDAR
134 HI;
135 
136  $obj = Reader::read($input);
137 
138  $warnings = $obj->validate();
139  $messages = [];
140  foreach ($warnings as $warning) {
141  $messages[] = $warning['message'];
142  }
143 
144  $this->assertEquals([
145  "The value type (DATE or DATE-TIME) must be identical for DUE and DTSTART",
146  ], $messages);
147 
148  }
149 
151 
152  $input = <<<HI
153 BEGIN:VCALENDAR
154 VERSION:2.0
155 PRODID:YoYo
156 BEGIN:VTODO
157 UID:FOO
158 DTSTART;VALUE=DATE:20140520
159 DUE;VALUE=DATE:20140518
160 DTSTAMP;VALUE=DATE-TIME:20140520T131600Z
161 END:VTODO
162 END:VCALENDAR
163 HI;
164 
165  $obj = Reader::read($input);
166 
167  $warnings = $obj->validate();
168  $messages = [];
169  foreach ($warnings as $warning) {
170  $messages[] = $warning['message'];
171  }
172 
173  $this->assertEquals([
174  "DUE must occur after DTSTART",
175  ], $messages);
176 
177  }
178 
179 }
if($argc< 3) $input
isInTimeRange(DateTimeInterface $start, DateTimeInterface $end)
Returns true or false depending on if the event falls in the specified time-range.
Definition: VTodo.php:31
The VCalendar component.
Definition: VCalendar.php:23
$start
Definition: bench.php:8
$messages
Definition: en.php:5
VTodo component.
Definition: VTodo.php:17
testInTimeRange(VTodo $vtodo, $start, $end, $outcome)
timeRangeTestData
Definition: VTodoTest.php:14
$tests
Definition: bench.php:104
$warning
Definition: X509warning.php:13
static read($data, $options=0, $charset='UTF-8')
Parses a vCard or iCalendar object, and returns the top component.
Definition: Reader.php:42