19 include_once(
"./Services/PHPUnit/classes/class.ilUnitUtil.php");
22 require_once
'./Services/WorkflowEngine/classes/utils/class.ilWorkflowUtils.php';
25 require_once
'./Services/WorkflowEngine/classes/workflows/class.ilEmptyWorkflow.php';
29 require_once
'./Services/WorkflowEngine/classes/nodes/class.ilBasicNode.php';
33 $this->workflow->addNode($this->node);
35 require_once
'./Services/WorkflowEngine/classes/detectors/class.ilTimerDetector.php';
41 if ($ilSetting != NULL)
43 $ilSetting->delete(
'IL_PHPUNIT_TEST_TIME');
44 $ilSetting->delete(
'IL_PHPUNIT_TEST_MICROTIME');
57 'Construction failed with valid context passed to constructor.' 68 $detector->setTimerStart($expected);
69 $actual = $detector->getTimerStart();
72 $this->assertEquals($actual, $expected);
82 $detector->setTimerLimit($expected);
83 $actual = $detector->getTimerLimit();
86 $this->assertEquals($actual, $expected);
95 $detector->setTimerStart($timer_start);
96 $detector->setTimerLimit($timer_limit);
99 $detector->trigger(null);
102 $actual = $detector->getDetectorState();
103 $this->assertFalse($actual,
'Early trigger should not satisfy detector');
112 $detector->setTimerStart($timer_start);
113 $detector->setTimerLimit($timer_limit);
116 $detector->trigger(null);
119 $actual = $detector->getDetectorState();
120 $this->assertTrue($actual,
'Trigger should not satisfy detector');
129 $detector->setTimerStart($timer_start);
130 $detector->setTimerLimit($timer_limit);
133 $detector->trigger(null);
134 $actual = $detector->trigger(null);
137 $this->assertFalse($actual,
'Detector should be satisfied after single trigger');
146 $detector->setListeningTimeframe($timer_start, $timer_end);
149 $actual = $detector->isListening();
152 $this->assertFalse($actual,
'Detector should not be listening.');
163 $actual = $detector->isListening();
166 $this->assertTrue($actual,
'Detector should be listening.');
180 $detector->setListeningTimeframe($exp_start, $exp_end);
181 $act = $detector->getListeningTimeframe();
184 $this->assertEquals($exp_start.$exp_end, $act[
'listening_start'].$act[
'listening_end']);
193 $detector->setListeningTimeframe($timer_start, $timer_end);
196 $actual = $detector->isListening();
199 $this->assertFalse($actual,
'Detector should not be listening.');
207 $timer_end = 0; # Wildcard.
208 $detector->setListeningTimeframe($timer_start, $timer_end);
211 $actual = $detector->isListening();
214 $this->assertTrue($actual,
'Detector should not be listening.');
221 $timer_start = 0; # Wildcard.
223 $detector->setListeningTimeframe($timer_start, $timer_end);
226 $actual = $detector->isListening();
229 $this->assertTrue($actual,
'Detector should not be listening.');
236 $exp_start = 4711; # +5 Minutes from here.
240 $detector->setListeningTimeframe($exp_start, $exp_end);
241 $act = $detector->getListeningTimeframe();
244 $this->assertEquals($exp_start.$exp_end, $act[
'listening_start'].$act[
'listening_end']);
254 $detector->setDbId($expected);
255 $actual = $detector->getDbId();
258 $this->assertEquals($expected, $actual);
268 $detector->setDbId($expected);
269 $actual = $detector->hasDbId();
272 $this->assertTrue($actual);
285 $actual = $detector->getDbId();
288 $this->assertEquals($expected, $actual);
297 $actual = $detector->hasDbId();
300 $this->assertFalse($actual);
305 $this->markTestIncomplete(
306 '$ilDB throws notices during test.' 312 require_once
'./Services/Database/classes/class.ilDBMySQL.php';
313 $ilDB_mock = $this->getMock(
'ilDBMySQL',
array(
'nextID',
'quote',
'insert'),
array(),
'', FALSE);
315 $ilDB_mock->expects($this->once())->method(
'nextID')->with($this->equalTo(
'wfe_det_listening'))->will($this->returnValue(234));
316 $ilDB_mock->expects($this->any())->method(
'quote')->will($this->returnArgument(0));
317 $ilDB_mock->expects($this->any())->method(
'insert')->with(
320 'detector_id' =>
array (
'integer', 234),
321 'workflow_id' =>
array (
'integer', null),
322 'type' =>
array (
'text',
'time_passed' ),
323 'content' =>
array (
'text',
'time_passed'),
324 'subject_type' =>
array (
'text',
'none'),
325 'subject_id' =>
array (
'integer', 0),
326 'context_type' =>
array (
'text',
'none'),
327 'context_id' =>
array (
'integer', 0),
328 'listening_start' =>
array (
'integer', 0),
329 'listening_end' =>
array (
'integer', 0)
331 )->will($this->returnValue(
true));
334 $stashed_real_object = @
$GLOBALS[
'ilDB'];
336 $detector->writeDetectorToDb();
338 $actual = $detector->hasDbId();
341 $this->assertTrue($actual);
343 $GLOBALS[
'ilDB'] = $stashed_real_object;
348 $this->markTestIncomplete(
349 '$ilDB throws notices during test.' 355 require_once
'./Services/Database/classes/class.ilDBMySQL.php';
356 $ilDB_mock = $this->getMock(
'ilDBMySQL',
array(
'quote',
'manipulate'),
array(),
'', FALSE);
358 $ilDB_mock->expects($this->any())->method(
'quote')->will($this->returnValue(234));
359 $ilDB_mock->expects($this->any())->method(
'manipulate')->with(
361 FROM wfe_det_listening 362 WHERE detector_id = 234' 363 )->will($this->returnValue(
true));
365 $stashed_real_object = @
$GLOBALS[
'ilDB'];
369 $detector->setDbId(234);
370 $detector->deleteDetectorFromDb();
371 $actual = $detector->hasDbId();
374 $this->assertFalse($actual);
375 $GLOBALS[
'ilDB'] = $stashed_real_object;
380 $this->markTestIncomplete(
381 '$ilDB throws notices during test.' 387 require_once
'./Services/Database/classes/class.ilDBMySQL.php';
388 $ilDB_mock = $this->getMock(
'ilDBMySQL',
array(
'nextID',
'quote',
'insert'),
array(),
'', FALSE);
390 $ilDB_mock->expects($this->once())->method(
'nextID')->with($this->equalTo(
'wfe_det_listening'))->will($this->returnValue(234));
391 $ilDB_mock->expects($this->any())->method(
'quote')->will($this->returnArgument(0));
392 $ilDB_mock->expects($this->any())->method(
'insert')->with(
395 'detector_id' =>
array (
'integer', 234),
396 'workflow_id' =>
array (
'integer', null),
397 'type' =>
array (
'text',
'time_passed' ),
398 'content' =>
array (
'text',
'time_passed'),
399 'subject_type' =>
array (
'text',
'none'),
400 'subject_id' =>
array (
'integer', 0),
401 'context_type' =>
array (
'text',
'none'),
402 'context_id' =>
array (
'integer', 0),
403 'listening_start' =>
array (
'integer', 0),
404 'listening_end' =>
array (
'integer', 0)
406 )->will($this->returnValue(
true));
408 $stashed_real_object = @
$GLOBALS[
'ilDB'];
412 $detector->onActivate();
413 $actual = $detector->hasDbId();
417 $this->assertTrue($actual);
418 $this->assertEquals(234, $detector->getDbId());
419 $GLOBALS[
'ilDB'] = $stashed_real_object;
424 $this->markTestIncomplete(
425 '$ilDB throws notices during test.' 431 require_once
'./Services/Database/classes/class.ilDBMySQL.php';
432 $ilDB_mock = $this->getMock(
'ilDBMySQL',
array(
'quote',
'manipulate'),
array(),
'', FALSE);
434 $ilDB_mock->expects($this->any())->method(
'quote')->will($this->returnValue(234));
435 $ilDB_mock->expects($this->any())->method(
'manipulate')->with(
437 FROM wfe_det_listening 438 WHERE detector_id = 234' 439 )->will($this->returnValue(
true));
441 $stashed_real_object = @
$GLOBALS[
'ilDB'];
445 $detector->setDbId(234);
446 $detector->onDeactivate();
447 $actual = $detector->hasDbId();
450 $this->assertFalse($actual);
452 $GLOBALS[
'ilDB'] = $stashed_real_object;
459 $exp_type =
'time_passed';
460 $exp_content =
'time_passed';
465 $event = $detector->getEvent();
466 $act_type = $event[
'type'];
467 $act_content = $event[
'content'];
468 $this->assertEquals($exp_type.$exp_content, $act_type.$act_content);
481 $event = $detector->getEventSubject();
482 $act_type = $event[
'type'];
483 $act_id = $event[
'identifier'];
484 $this->assertEquals($exp_type.$exp_id, $act_type.$act_id);
497 $event = $detector->getEventContext();
498 $act_type = $event[
'type'];
499 $act_id = $event[
'identifier'];
500 $this->assertEquals($exp_type.$exp_id, $act_type.$act_id);
509 $actual = $detector->getContext();
512 if ($actual === $this->node)
514 $this->assertEquals($actual, $this->node);
516 $this->assertTrue(
false,
'Context not identical.');
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
testIsListeningWithWildcardBeginningTimeFrame()
testSetGetListeningTimeframe()
testDeleteDetectorFromDb()
testIsListeningWithWildcardEndingTimeFrame()
testIsListeningWithoutTimeFrame()
testIsListeningWithPastTimeFrame()
ilTimerDetectorTest is part of the petri net based workflow engine.
Create styles array
The data for the language used.
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
testSetGetIllegalListeningTimeframe()
ilWorkflowInvalidArgumentException
testIsListeningWithTimeFrame()
testConstructorValidContext()
testGetNonExistingDbId()
ilWorkflowObjectStateException