ILIAS  release_5-2 Revision v5.2.25-18-g3f80b82851
ilCaseNodeTest Class Reference

ilCaseNodeTest is part of the petri net based workflow engine. More...

+ Inheritance diagram for ilCaseNodeTest:
+ Collaboration diagram for ilCaseNodeTest:

Public Member Functions

 setUp ()
 
 tearDown ()
 
 testConstructorValidContext ()
 
 testGetContext ()
 
 testIsActiveAndActivate ()
 
 testDeactivate ()
 
 testCheckTransitionPreconditionsValid ()
 
 testCheckTransitionPreconditionsValidOnExclusiveJoin ()
 
 testNotifyDetectorSatisfactionAndTransit ()
 
 testCheckTransitionPreconditionsInvalid ()
 
 testAttemptTransitionPreconditionsValidOnExclusiveJoin ()
 
 testExecuteTransition ()
 
 testExecuteTransitionExclusiveFork ()
 
 testExecuteActivitiesViaExecuteTransition ()
 
 testExecuteEmitterViaExecuteTransition ()
 
 testExecuteEmitterViaExecuteTransitionExclusiveFork ()
 
 testAddDetectorFirst ()
 
 testAddGetActivity ()
 

Data Fields

 $workflow
 

Detailed Description

ilCaseNodeTest is part of the petri net based workflow engine.

This class holds all tests for the class nodes/class.ilCaseNode

Author
Maximilian Becker mbeck.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Version
$Id$

/

Definition at line 15 of file ilCaseNodeTest.php.

Member Function Documentation

◆ setUp()

ilCaseNodeTest::setUp ( )

Definition at line 20 of file ilCaseNodeTest.php.

21  {
22  include_once("./Services/PHPUnit/classes/class.ilUnitUtil.php");
23  //ilUnitUtil::performInitialisation();
24 
25  // Empty workflow.
26  require_once './Services/WorkflowEngine/classes/workflows/class.ilEmptyWorkflow.php';
27  $this->workflow = new ilEmptyWorkflow();
28  }
PhpIncludeInspection

◆ tearDown()

ilCaseNodeTest::tearDown ( )

Definition at line 30 of file ilCaseNodeTest.php.

References $ilSetting.

31  {
32  global $ilSetting;
33  if ($ilSetting != NULL)
34  {
35  $ilSetting->delete('IL_PHPUNIT_TEST_TIME');
36  $ilSetting->delete('IL_PHPUNIT_TEST_MICROTIME');
37  }
38  }
global $ilSetting
Definition: privfeed.php:17

◆ testAddDetectorFirst()

ilCaseNodeTest::testAddDetectorFirst ( )

Definition at line 326 of file ilCaseNodeTest.php.

327  {
328  // Arrange
329  $node = new ilCaseNode($this->workflow);
330  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
331  $detector = new ilSimpleDetector($node);
332 
333  // Act
334  $node->addDetector($detector);
335  $detectors = $node->getDetectors();
336 
337  // Assert
338  $this->assertEquals($detector, $detectors[0]);
339  }
PhpIncludeInspection
PhpIncludeInspection

◆ testAddGetActivity()

ilCaseNodeTest::testAddGetActivity ( )

Definition at line 341 of file ilCaseNodeTest.php.

342  {
343  // Arrange
344  $node = new ilCaseNode( $this->workflow );
345  require_once './Services/WorkflowEngine/classes/activities/class.ilLoggingActivity.php';
346  $activity = new ilLoggingActivity( $node );
347 
348  // Act
349  $node->addActivity( $activity );
350  $activities = $node->getActivities();
351 
352  // Assert
353  $this->assertEquals( $activity, $activities[0] );
354  }
PhpIncludeInspection
PhpIncludeInspection

◆ testAttemptTransitionPreconditionsValidOnExclusiveJoin()

ilCaseNodeTest::testAttemptTransitionPreconditionsValidOnExclusiveJoin ( )

Definition at line 183 of file ilCaseNodeTest.php.

References $success.

184  {
185  // Arrange
186  $node = new ilCaseNode($this->workflow);
187  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
188  $detector1 = new ilSimpleDetector($node);
189  $node->addDetector($detector1);
190  $detector2 = new ilSimpleDetector($node);
191  $node->addDetector($detector2);
192  $node->setIsExclusiveJoin(true);
193  $detector1->trigger(null);
194  $detector2->trigger(null);
195 
196  // Act
197  $success = $node->attemptTransition();
198 
199  // Assert
200  $this->assertTrue($success);
201  }
PhpIncludeInspection
$success
Definition: Utf8Test.php:86
PhpIncludeInspection

◆ testCheckTransitionPreconditionsInvalid()

ilCaseNodeTest::testCheckTransitionPreconditionsInvalid ( )

Definition at line 163 of file ilCaseNodeTest.php.

164  {
165  // Arrange
166  $node = new ilCaseNode($this->workflow);
167  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
168  $detector1 = new ilSimpleDetector($node);
169  $node->addDetector($detector1);
170  $detector2 = new ilSimpleDetector($node);
171  $node->addDetector($detector2);
172 
173  $detector1->trigger(null);
174  //$detector2->trigger(null);
175 
176  // Act
177  $preconditions = $node->checkTransitionPreconditions();
178 
179  // Assert
180  $this->assertFalse($preconditions);
181  }
PhpIncludeInspection
PhpIncludeInspection

◆ testCheckTransitionPreconditionsValid()

ilCaseNodeTest::testCheckTransitionPreconditionsValid ( )

Definition at line 104 of file ilCaseNodeTest.php.

105  {
106  // Arrange
107  $node = new ilCaseNode($this->workflow);
108  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
109  $detector1 = new ilSimpleDetector($node);
110  $node->addDetector($detector1);
111  $detector2 = new ilSimpleDetector($node);
112  $node->addDetector($detector2);
113 
114  $detector1->trigger(null);
115  $detector2->trigger(null);
116 
117  // Act
118  $preconditions = $node->checkTransitionPreconditions();
119 
120  // Assert
121  $this->assertTrue($preconditions);
122  }
PhpIncludeInspection
PhpIncludeInspection

◆ testCheckTransitionPreconditionsValidOnExclusiveJoin()

ilCaseNodeTest::testCheckTransitionPreconditionsValidOnExclusiveJoin ( )

Definition at line 124 of file ilCaseNodeTest.php.

125  {
126  // Arrange
127  $node = new ilCaseNode($this->workflow);
128  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
129  $detector1 = new ilSimpleDetector($node);
130  $node->addDetector($detector1);
131  $detector2 = new ilSimpleDetector($node);
132  $node->addDetector($detector2);
133  $node->setIsExclusiveJoin(true);
134  $detector1->trigger(null);
135  $detector2->trigger(null);
136 
137  // Act
138  $preconditions = $node->checkTransitionPreconditions();
139 
140  // Assert
141  $this->assertTrue($preconditions);
142  }
PhpIncludeInspection
PhpIncludeInspection

◆ testConstructorValidContext()

ilCaseNodeTest::testConstructorValidContext ( )

Definition at line 40 of file ilCaseNodeTest.php.

41  {
42  // Act
43  $node = new ilCaseNode($this->workflow);
44 
45  // Assert
46  // No exception - good
47  $this->assertTrue(
48  true,
49  'Construction failed with valid context passed to constructor.'
50  );
51  }
PhpIncludeInspection

◆ testDeactivate()

ilCaseNodeTest::testDeactivate ( )

Definition at line 86 of file ilCaseNodeTest.php.

87  {
88  // Arrange
89  $node = new ilCaseNode($this->workflow);
90  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
91  $detector = new ilSimpleDetector($node);
92  $node->addDetector($detector);
93 
94  // Act
95  $node->activate();
96  $was_activated = $node->isActive();
97  $node->deactivate();
98  $was_deactivated = !$node->isActive();
99 
100  // Assert
101  $this->assertEquals($was_activated, $was_deactivated);
102  }
PhpIncludeInspection
PhpIncludeInspection

◆ testExecuteActivitiesViaExecuteTransition()

ilCaseNodeTest::testExecuteActivitiesViaExecuteTransition ( )

Definition at line 238 of file ilCaseNodeTest.php.

239  {
240  // Arrange
241  $node = new ilCaseNode($this->workflow);
242  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
243  $detector = new ilSimpleDetector($node);
244  $node->addDetector($detector);
245 
246  require_once './Services/WorkflowEngine/classes/activities/class.ilLoggingActivity.php';
247  $activity = new ilLoggingActivity($node);
248  $activity->setLogFile('ilTransitionLog.txt');
249  $activity->setLogLevel('MESSAGE');
250  $activity->setLogMessage('TEST');
251  $node->addActivity($activity);
252 
253  // Act
254  $node->activate();
255  $node->executeTransition();
256 
257  // Assert
258  $expected = ' :: MESSAGE :: TEST';
259  $fp = fopen('ilTransitionLog.txt', r);
260  $line = fgets($fp);
261  $actual = substr($line, 25, strlen($line)-27);
262  @unlink('ilTransitionLog.txt'); // TODO: Use vfsStrream
263  $this->assertEquals(
264  $expected,
265  $actual
266  );
267  }
PhpIncludeInspection
PhpIncludeInspection
PhpIncludeInspection

◆ testExecuteEmitterViaExecuteTransition()

ilCaseNodeTest::testExecuteEmitterViaExecuteTransition ( )

Definition at line 269 of file ilCaseNodeTest.php.

270  {
271  // Arrange
272  $node = new ilCaseNode($this->workflow);
273  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
274  $detector = new ilSimpleDetector($node);
275  $node->addDetector($detector);
276 
277  require_once './Services/WorkflowEngine/classes/emitters/class.ilActivationEmitter.php';
278  $t_node = new ilBasicNode($this->workflow);
279  $t_detector = new ilSimpleDetector($t_node);
280  $t_node->addDetector($t_detector);
281  $foo_detector = new ilSimpleDetector($t_node);
282  $t_node->addDetector($foo_detector);
283  // again a foo_detector to keep the t_node from transitting
284 
285  $emitter = new ilActivationEmitter($node);
286  $emitter->setTargetDetector($t_detector);
287  $node->addEmitter($emitter);
288 
289  // Act
290  $node->activate();
291  $node->executeTransition();
292 
293  // Assert
294  $this->assertTrue($t_node->isActive());
295  }
PhpIncludeInspection
PhpIncludeInspection
PhpIncludeInspection

◆ testExecuteEmitterViaExecuteTransitionExclusiveFork()

ilCaseNodeTest::testExecuteEmitterViaExecuteTransitionExclusiveFork ( )

Definition at line 297 of file ilCaseNodeTest.php.

298  {
299  // Arrange
300  $node = new ilCaseNode($this->workflow);
301  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
302  $detector = new ilSimpleDetector($node);
303  $node->addDetector($detector);
304 
305  require_once './Services/WorkflowEngine/classes/emitters/class.ilActivationEmitter.php';
306  $t_node = new ilBasicNode($this->workflow);
307  $t_detector = new ilSimpleDetector($t_node);
308  $t_node->addDetector($t_detector);
309  $foo_detector = new ilSimpleDetector($t_node);
310  $t_node->addDetector($foo_detector);
311  // again a foo_detector to keep the t_node from transitting
312 
313  $emitter = new ilActivationEmitter($node);
314  $emitter->setTargetDetector($t_detector);
315  $node->addEmitter($emitter);
316  $node->setIsExclusiveFork(true);
317 
318  // Act
319  $node->activate();
320  $node->executeTransition();
321 
322  // Assert
323  $this->assertTrue($t_node->isActive());
324  }
PhpIncludeInspection
PhpIncludeInspection
PhpIncludeInspection

◆ testExecuteTransition()

ilCaseNodeTest::testExecuteTransition ( )

Definition at line 203 of file ilCaseNodeTest.php.

204  {
205  // Arrange
206  $node = new ilCaseNode($this->workflow);
207  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
208  $detector = new ilSimpleDetector($node);
209  $node->addDetector($detector);
210  $node->activate();
211 
212  // Act
213  $node->executeTransition();
214  $state = $node->isActive();
215 
216  // Assert
217  $this->assertFalse($state);
218  }
PhpIncludeInspection
PhpIncludeInspection

◆ testExecuteTransitionExclusiveFork()

ilCaseNodeTest::testExecuteTransitionExclusiveFork ( )

Definition at line 220 of file ilCaseNodeTest.php.

221  {
222  // Arrange
223  $node = new ilCaseNode($this->workflow);
224  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
225  $detector = new ilSimpleDetector($node);
226  $node->addDetector($detector);
227  $node->activate();
228  $node->setIsExclusiveFork(true);
229 
230  // Act
231  $node->executeTransition();
232  $state = $node->isActive();
233 
234  // Assert
235  $this->assertFalse($state);
236  }
PhpIncludeInspection
PhpIncludeInspection

◆ testGetContext()

ilCaseNodeTest::testGetContext ( )

Definition at line 53 of file ilCaseNodeTest.php.

54  {
55  // Arrange
56  $node = new ilCaseNode($this->workflow);
57 
58  // Act
59  $actual = $node->getContext();
60 
61  // Assert
62  if ($actual === $this->workflow)
63  {
64  $this->assertEquals($actual, $this->workflow);
65  } else {
66  $this->assertTrue(false, 'Context not identical.');
67  }
68  }
PhpIncludeInspection

◆ testIsActiveAndActivate()

ilCaseNodeTest::testIsActiveAndActivate ( )

Definition at line 70 of file ilCaseNodeTest.php.

71  {
72  // Arrange
73  $node = new ilCaseNode($this->workflow);
74  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
75  $detector = new ilSimpleDetector($node);
76  $node->addDetector($detector);
77 
78  // Act
79  $node->activate();
80 
81  // Assert
82  $actual = $node->isActive();
83  $this->assertTrue($actual);
84  }
PhpIncludeInspection
PhpIncludeInspection

◆ testNotifyDetectorSatisfactionAndTransit()

ilCaseNodeTest::testNotifyDetectorSatisfactionAndTransit ( )

Definition at line 144 of file ilCaseNodeTest.php.

145  {
146  // Arrange
147  $node = new ilCaseNode($this->workflow);
148  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
149  $detector1 = new ilSimpleDetector($node);
150  $node->addDetector($detector1);
151  $detector2 = new ilSimpleDetector($node);
152  $node->addDetector($detector2);
153 
154  // Act
155  $node->activate();
156  $this->assertTrue($node->isActive());
157  $detector1->trigger(null);
158  $detector2->trigger(null);
159  // TODO: Assert something more meaningful here.
160  $this->assertFalse($node->isActive());
161  }
PhpIncludeInspection
PhpIncludeInspection

Field Documentation

◆ $workflow

ilCaseNodeTest::$workflow

Definition at line 18 of file ilCaseNodeTest.php.


The documentation for this class was generated from the following file: