ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
ilBasicNodeTest Class Reference

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

+ Inheritance diagram for ilBasicNodeTest:
+ Collaboration diagram for ilBasicNodeTest:

Public Member Functions

 setUp ()
 
 tearDown ()
 
 testConstructorValidContext ()
 
 testGetContext ()
 
 testIsActiveAndActivate ()
 
 testDeactivate ()
 
 testCheckTransitionPreconditionsValid ()
 
 testCheckTransitionPreconditionsInvalid ()
 
 testAttemptTransitionValid ()
 
 testAttemptTransitionInvalid ()
 
 testExecuteTransition ()
 
 testExecuteActivitiesViaExecuteTransition ()
 
 testExecuteEmitterViaExecuteTransition ()
 
 testAddDetector ()
 
 testAddEmitter ()
 
 testAddActivity ()
 
 testNotifyDetectorSatisfaction ()
 
 testSetGetIsForwardConditionNode ()
 

Detailed Description

ilBasicNodeTest is part of the petri net based workflow engine.

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

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

/

Definition at line 15 of file ilBasicNodeTest.php.

Member Function Documentation

◆ setUp()

ilBasicNodeTest::setUp ( )

Definition at line 17 of file ilBasicNodeTest.php.

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

◆ tearDown()

ilBasicNodeTest::tearDown ( )

Definition at line 27 of file ilBasicNodeTest.php.

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

References $ilSetting.

◆ testAddActivity()

ilBasicNodeTest::testAddActivity ( )

Definition at line 272 of file ilBasicNodeTest.php.

273 {
274 // Arrange
275 $node = new ilBasicNode($this->workflow);
276 require_once './Services/WorkflowEngine/classes/activities/class.ilLoggingActivity.php';
277 $activity = new ilLoggingActivity($node);
278
279 // Act
280 $node->addActivity($activity);
281 $activities = $node->getActivities();
282
283 // Assert
284 $this->assertEquals($activity, $activities[0]);
285 }
@noinspection PhpIncludeInspection
@noinspection PhpIncludeInspection

◆ testAddDetector()

ilBasicNodeTest::testAddDetector ( )

Definition at line 242 of file ilBasicNodeTest.php.

243 {
244 // Arrange
245 $node = new ilBasicNode($this->workflow);
246 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
247 $detector = new ilSimpleDetector($node);
248
249 // Act
250 $node->addDetector($detector);
251 $detectors = $node->getDetectors();
252
253 // Assert
254 $this->assertEquals($detector, $detectors[0]);
255 }
@noinspection PhpIncludeInspection

◆ testAddEmitter()

ilBasicNodeTest::testAddEmitter ( )

Definition at line 257 of file ilBasicNodeTest.php.

258 {
259 // Arrange
260 $node = new ilBasicNode($this->workflow);
261 require_once './Services/WorkflowEngine/classes/emitters/class.ilSimpleEmitter.php';
262 $emitter = new ilSimpleEmitter($node);
263
264 // Act
265 $node->addEmitter($emitter);
266 $emitters = $node->getEmitters();
267
268 // Assert
269 $this->assertEquals($emitter, $emitters[0]);
270 }
@noinspection PhpIncludeInspection

◆ testAttemptTransitionInvalid()

ilBasicNodeTest::testAttemptTransitionInvalid ( )

Definition at line 149 of file ilBasicNodeTest.php.

150 {
151 // Arrange
152 $node = new ilBasicNode($this->workflow);
153 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
154 $detector = new ilSimpleDetector($node);
155 $node->addDetector($detector);
156
157 // Act
158 $result = $node->attemptTransition();
159
160 // Assert
161 $this->assertFalse($result);
162 }
$result

References $result.

◆ testAttemptTransitionValid()

ilBasicNodeTest::testAttemptTransitionValid ( )

Definition at line 133 of file ilBasicNodeTest.php.

134 {
135 // Arrange
136 $node = new ilBasicNode($this->workflow);
137 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
138 $detector = new ilSimpleDetector($node);
139 $node->addDetector($detector);
140
141 // Act
142 $detector->trigger(array());
143 $result = $node->attemptTransition();
144
145 // Assert
146 $this->assertTrue($result);
147 }

References $result.

◆ testCheckTransitionPreconditionsInvalid()

ilBasicNodeTest::testCheckTransitionPreconditionsInvalid ( )

Definition at line 117 of file ilBasicNodeTest.php.

118 {
119 // Arrange
120 $node = new ilBasicNode($this->workflow);
121 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
122 $detector = new ilSimpleDetector($node);
123 $node->addDetector($detector);
124
125
126 // Act
127 $preconditions = $node->checkTransitionPreconditions();
128
129 // Assert
130 $this->assertFalse($preconditions);
131 }

◆ testCheckTransitionPreconditionsValid()

ilBasicNodeTest::testCheckTransitionPreconditionsValid ( )

Definition at line 101 of file ilBasicNodeTest.php.

102 {
103 // Arrange
104 $node = new ilBasicNode($this->workflow);
105 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
106 $detector = new ilSimpleDetector($node);
107 $node->addDetector($detector);
108
109 // Act
110 $detector->trigger(array());
111 $preconditions = $node->checkTransitionPreconditions();
112
113 // Assert
114 $this->assertTrue($preconditions);
115 }

◆ testConstructorValidContext()

ilBasicNodeTest::testConstructorValidContext ( )

Definition at line 37 of file ilBasicNodeTest.php.

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

◆ testDeactivate()

ilBasicNodeTest::testDeactivate ( )

Definition at line 83 of file ilBasicNodeTest.php.

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

◆ testExecuteActivitiesViaExecuteTransition()

ilBasicNodeTest::testExecuteActivitiesViaExecuteTransition ( )

Definition at line 183 of file ilBasicNodeTest.php.

184 {
185 // Arrange
186 $node = new ilBasicNode($this->workflow);
187 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
188 $detector = new ilSimpleDetector($node);
189 $node->addDetector($detector);
190
191 require_once './Services/WorkflowEngine/classes/activities/class.ilLoggingActivity.php';
192 $activity = new ilLoggingActivity($node);
193 $activity->setLogFile('ilTransitionLog.txt');
194 $activity->setLogLevel('MESSAGE');
195 $activity->setLogMessage('TEST');
196 $node->addActivity($activity);
197
198 // Act
199 $node->activate();
200 $node->executeTransition();
201
202 // Assert
203 $expected = ' :: MESSAGE :: TEST';
204 $fp = fopen('ilTransitionLog.txt', r);
205 $line = fgets($fp);
206 $actual = substr($line, 25, strlen($line)-27);
207 @unlink('ilTransitionLog.txt'); // TODO: Use vfsStream
208 $this->assertEquals(
209 $actual,
210 $expected
211 );
212 }

◆ testExecuteEmitterViaExecuteTransition()

ilBasicNodeTest::testExecuteEmitterViaExecuteTransition ( )

Definition at line 214 of file ilBasicNodeTest.php.

215 {
216 // Arrange
217 $node = new ilBasicNode($this->workflow);
218 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
219 $detector = new ilSimpleDetector($node);
220 $node->addDetector($detector);
221
222 require_once './Services/WorkflowEngine/classes/emitters/class.ilActivationEmitter.php';
223 $t_node = new ilBasicNode($this->workflow);
224 $t_detector = new ilSimpleDetector($t_node);
225 $t_node->addDetector($t_detector);
226 $foo_detector = new ilSimpleDetector($t_node);
227 $t_node->addDetector($foo_detector);
228 // again a foo_detector to keep the t_node from transitting
229
230 $emitter = new ilActivationEmitter($node);
231 $emitter->setTargetDetector($t_detector);
232 $node->addEmitter($emitter);
233
234 // Act
235 $node->activate();
236 $node->executeTransition();
237
238 // Assert
239 $this->assertTrue($t_node->isActive());
240 }
@noinspection PhpIncludeInspection

◆ testExecuteTransition()

ilBasicNodeTest::testExecuteTransition ( )

Definition at line 164 of file ilBasicNodeTest.php.

165 { // This is test #100 of the WorkflowEngine, written on 9th of May, 2012
166 // @ 14:15
167
168 // Arrange
169 $node = new ilBasicNode($this->workflow);
170 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
171 $detector = new ilSimpleDetector($node);
172 $node->addDetector($detector);
173 $node->activate();
174
175 // Act
176 $node->executeTransition();
177 $state = $node->isActive();
178
179 // Assert
180 $this->assertFalse($state);
181 }

◆ testGetContext()

ilBasicNodeTest::testGetContext ( )

Definition at line 50 of file ilBasicNodeTest.php.

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

◆ testIsActiveAndActivate()

ilBasicNodeTest::testIsActiveAndActivate ( )

Definition at line 67 of file ilBasicNodeTest.php.

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

◆ testNotifyDetectorSatisfaction()

ilBasicNodeTest::testNotifyDetectorSatisfaction ( )

Definition at line 287 of file ilBasicNodeTest.php.

288 {
289 // Arrange
290 $node = new ilBasicNode($this->workflow);
291
292 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
293 $detector = new ilSimpleDetector($node);
294 $node->addDetector($detector);
295
296 // Note: Order is important. Setting detector state prior to activation
297 // will be voided.
298 $node->activate();
299 $detector->setDetectorState(true);
300 /* Setting the detector to true will actually be reported
301 * with notifyDetectorSatisfaction.
302 * To isolate this call, we need to reset the node back
303 * to active prior to evaluating if it successfully executes
304 * the transition and sets itself to inactive.
305 */
306
307 // Act
308 $node->notifyDetectorSatisfaction($detector);
309
310 // Assert
311 $this->assertFalse($node->isActive());
312 }

◆ testSetGetIsForwardConditionNode()

ilBasicNodeTest::testSetGetIsForwardConditionNode ( )

Definition at line 314 of file ilBasicNodeTest.php.

315 {
316 // Arrange
317 $node = new ilBasicNode($this->workflow);
318 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
319 $detector = new ilSimpleDetector($node);
320 $node->addDetector($detector);
321
322 // Act
323 $node->activate();
324
325 // Assert
326 $this->assertFalse($node->isForwardConditionNode(), 'Forward condition should be false by default.');
327 $node->setIsForwardConditionNode(true);
328 $this->assertTrue($node->isForwardConditionNode(), 'Forward condition node state not properly stored.');
329 }

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