ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
ilTimerDetectorTest.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2014 ILIAS open source, Extended GPL, see docs/LICENSE */
3
16{
17 public function setUp()
18 {
19 include_once("./Services/PHPUnit/classes/class.ilUnitUtil.php");
20 //ilUnitUtil::performInitialisation();
21
22 require_once './Services/WorkflowEngine/classes/utils/class.ilWorkflowUtils.php';
23
24 // Empty workflow.
25 require_once './Services/WorkflowEngine/classes/workflows/class.ilEmptyWorkflow.php';
26 $this->workflow = new ilEmptyWorkflow();
27
28 // Basic node
29 require_once './Services/WorkflowEngine/classes/nodes/class.ilBasicNode.php';
30 $this->node = new ilBasicNode($this->workflow);
31
32 // Wiring up so the node is attached to the workflow.
33 $this->workflow->addNode($this->node);
34
35 require_once './Services/WorkflowEngine/classes/detectors/class.ilTimerDetector.php';
36 }
37
38 public function tearDown()
39 {
40 global $ilSetting;
41 if ($ilSetting != null) {
42 $ilSetting->delete('IL_PHPUNIT_TEST_TIME');
43 $ilSetting->delete('IL_PHPUNIT_TEST_MICROTIME');
44 }
45 }
46
48 {
49 // Act
50 $detector = new ilTimerDetector($this->node);
51
52 // Assert
53 // No exception - good
54 $this->assertTrue(
55 true,
56 'Construction failed with valid context passed to constructor.'
57 );
58 }
59
60 public function testSetGetTimerStart()
61 {
62 // Arrange
63 $detector = new ilTimerDetector($this->node);
64 $expected = ilWorkflowUtils::time();
65
66 // Act
67 $detector->setTimerStart($expected);
68 $actual = $detector->getTimerStart();
69
70 // Assert
71 $this->assertEquals($actual, $expected);
72 }
73
74 public function testSetGetTimerLimit()
75 {
76 // Arrange
77 $detector = new ilTimerDetector($this->node);
78 $expected = 5 * 60 * 60;
79
80 // Act
81 $detector->setTimerLimit($expected);
82 $actual = $detector->getTimerLimit();
83
84 // Assert
85 $this->assertEquals($actual, $expected);
86 }
87
88 public function testTriggerEarly()
89 {
90 // Arrange
91 $detector = new ilTimerDetector($this->node);
92 $timer_start = ilWorkflowUtils::time(); # +5 Minutes from here.
93 $timer_limit = 5 * 60;
94 $detector->setTimerStart($timer_start);
95 $detector->setTimerLimit($timer_limit);
96
97 // Act
98 $detector->trigger(null);
99
100 // Assert
101 $actual = $detector->getDetectorState();
102 $this->assertFalse($actual, 'Early trigger should not satisfy detector');
103 }
104
105 public function testTriggerValid()
106 {
107 // Arrange
108 $detector = new ilTimerDetector($this->node);
109 $timer_start = ilWorkflowUtils::time(); # +5 Minutes from now.
110 $timer_limit = 0;
111 $detector->setTimerStart($timer_start);
112 $detector->setTimerLimit($timer_limit);
113
114 // Act
115 $detector->trigger(null);
116
117 // Assert
118 $actual = $detector->getDetectorState();
119 $this->assertTrue($actual, 'Trigger should not satisfy detector');
120 }
121
122 public function testTriggerValidTwice()
123 {
124 // Arrange
125 $detector = new ilTimerDetector($this->node);
126 $timer_start = ilWorkflowUtils::time(); # +5 Minutes from now.
127 $timer_limit = 0;
128 $detector->setTimerStart($timer_start);
129 $detector->setTimerLimit($timer_limit);
130
131 // Act
132 $detector->trigger(null);
133 $actual = $detector->trigger(null);
134
135 // Assert
136 $this->assertFalse($actual, 'Detector should be satisfied after single trigger');
137 }
138
140 {
141 // Arrange
142 $detector = new ilTimerDetector($this->node);
143 $timer_start = ilWorkflowUtils::time() + 5 * 60; # +5 Minutes from here.
144 $timer_end = 0;
145 $detector->setListeningTimeframe($timer_start, $timer_end);
146
147 // Act
148 $actual = $detector->isListening();
149
150 // Assert
151 $this->assertFalse($actual, 'Detector should not be listening.');
152 }
153
155 {
156 // Arrange
157 $detector = new ilTimerDetector($this->node);
158 $timer_start = ilWorkflowUtils::time() + 5 * 60; # +5 Minutes from here.
159 $timer_end = 0;
160
161 // Act
162 $actual = $detector->isListening();
163
164 // Assert
165 $this->assertTrue($actual, 'Detector should be listening.');
166 }
167
172 {
173 // Arrange
174 $detector = new ilTimerDetector($this->node);
175 $exp_start = 4712;
176 $exp_end = 4711;
177
178 // Act
179 $detector->setListeningTimeframe($exp_start, $exp_end);
180 $act = $detector->getListeningTimeframe();
181
182 // Assert
183 $this->assertEquals($exp_start . $exp_end, $act['listening_start'] . $act['listening_end']);
184 }
185
187 {
188 // Arrange
189 $detector = new ilTimerDetector($this->node);
190 $timer_start = ilWorkflowUtils::time() - 5 * 60; # -5 Minutes from now.
191 $timer_end = ilWorkflowUtils::time() - 1 * 60; # -1 Minute from now.
192 $detector->setListeningTimeframe($timer_start, $timer_end);
193
194 // Act
195 $actual = $detector->isListening();
196
197 // Assert
198 $this->assertFalse($actual, 'Detector should not be listening.');
199 }
200
202 {
203 // Arrange
204 $detector = new ilTimerDetector($this->node);
205 $timer_start = ilWorkflowUtils::time() - 5 * 60; # -5 Minutes from now.
206 $timer_end = 0; # Wildcard.
207 $detector->setListeningTimeframe($timer_start, $timer_end);
208
209 // Act
210 $actual = $detector->isListening();
211
212 // Assert
213 $this->assertTrue($actual, 'Detector should not be listening.');
214 }
215
217 {
218 // Arrange
219 $detector = new ilTimerDetector($this->node);
220 $timer_start = 0; # Wildcard.
221 $timer_end = ilWorkflowUtils::time() + 5 * 60; # +5 Minutes from now.
222 $detector->setListeningTimeframe($timer_start, $timer_end);
223
224 // Act
225 $actual = $detector->isListening();
226
227 // Assert
228 $this->assertTrue($actual, 'Detector should not be listening.');
229 }
230
232 {
233 // Arrange
234 $detector = new ilTimerDetector($this->node);
235 $exp_start = 4711; # +5 Minutes from here.
236 $exp_end = 4712;
237
238 // Act
239 $detector->setListeningTimeframe($exp_start, $exp_end);
240 $act = $detector->getListeningTimeframe();
241
242 // Assert
243 $this->assertEquals($exp_start . $exp_end, $act['listening_start'] . $act['listening_end']);
244 }
245
246 public function testSetGetDbId()
247 {
248 // Arrange
249 $detector = new ilTimerDetector($this->node);
250 $expected = '1234';
251
252 // Act
253 $detector->setDbId($expected);
254 $actual = $detector->getDbId();
255
256 // Assert
257 $this->assertEquals($expected, $actual);
258 }
259
260 public function testHasDbIdSet()
261 {
262 // Arrange
263 $detector = new ilTimerDetector($this->node);
264 $expected = '1234';
265
266 // Act
267 $detector->setDbId($expected);
268 $actual = $detector->hasDbId();
269
270 // Assert
271 $this->assertTrue($actual);
272 }
273
277 public function testGetNonExistingDbId()
278 {
279 // Arrange
280 $detector = new ilTimerDetector($this->node);
281 $expected = '1234';
282
283 // Act
284 $actual = $detector->getDbId();
285
286 // Assert
287 $this->assertEquals($expected, $actual);
288 }
289
290 public function testHasDbIdUnset()
291 {
292 // Arrange
293 $detector = new ilTimerDetector($this->node);
294
295 // Act
296 $actual = $detector->hasDbId();
297
298 // Assert
299 $this->assertFalse($actual);
300 }
301
302 public function testGetEvent()
303 {
304 // Arrange
305 $detector = new ilTimerDetector($this->node);
306 $exp_type = 'time_passed';
307 $exp_content = 'time_passed';
308
309 // Act
310
311 // Assert
312 $event = $detector->getEvent();
313 $act_type = $event['type'];
314 $act_content = $event['content'];
315 $this->assertEquals($exp_type . $exp_content, $act_type . $act_content);
316 }
317
318 public function testGetEventSubject()
319 {
320 // Arrange
321 $detector = new ilTimerDetector($this->node);
322 $exp_type = 'none';
323 $exp_id = '0';
324
325 // Act
326
327 // Assert
328 $event = $detector->getEventSubject();
329 $act_type = $event['type'];
330 $act_id = $event['identifier'];
331 $this->assertEquals($exp_type . $exp_id, $act_type . $act_id);
332 }
333
334 public function testGetEventContext()
335 {
336 // Arrange
337 $detector = new ilTimerDetector($this->node);
338 $exp_type = 'none';
339 $exp_id = '0';
340
341 // Act
342
343 // Assert
344 $event = $detector->getEventContext();
345 $act_type = $event['type'];
346 $act_id = $event['identifier'];
347 $this->assertEquals($exp_type . $exp_id, $act_type . $act_id);
348 }
349
350 public function testGetContext()
351 {
352 // Arrange
353 $detector = new ilTimerDetector($this->node);
354
355 // Act
356 $actual = $detector->getContext();
357
358 // Assert
359 if ($actual === $this->node) {
360 $this->assertEquals($actual, $this->node);
361 } else {
362 $this->assertTrue(false, 'Context not identical.');
363 }
364 }
365}
An exception for terminatinating execution or to throw for unit testing.
@noinspection PhpIncludeInspection
@noinspection PhpIncludeInspection
ilTimerDetectorTest is part of the petri net based workflow engine.
testGetNonExistingDbId()
@expectedException ilWorkflowObjectStateException
testSetGetIllegalListeningTimeframe()
@expectedException ilWorkflowInvalidArgumentException
@noinspection PhpIncludeInspection
global $ilSetting
Definition: privfeed.php:17