blob: 8e60c9d851f07481e8ff93bac7656d99c0794f91 [file] [log] [blame]
<?php
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @package Workflow
* @subpackage Tests
* @version //autogentag//
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
*/
require_once 'case.php';
require_once 'execution.php';
/**
* @package Workflow
* @subpackage Tests
*/
class ezcWorkflowExecutionPluginTest extends ezcWorkflowTestCase
{
protected $execution;
protected $plugin;
public static function suite()
{
return new PHPUnit_Framework_TestSuite(
'ezcWorkflowExecutionPluginTest'
);
}
protected function setUp()
{
parent::setUp();
$this->execution = new ezcWorkflowTestExecution;
$this->plugin = $this->getMock( 'ezcWorkflowExecutionPlugin' );
$this->execution->addPlugin( $this->plugin );
}
protected function tearDown()
{
$this->execution = NULL;
$this->plugin = NULL;
}
public function testEventsForStartEnd()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpStartEnd();
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForStartEndVariableHandler()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpStartEndVariableHandler();
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForStartInputEnd()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpStartInputEnd();
$this->execution->workflow = $this->workflow;
$this->execution->setInputVariable( 'variable', 'value' );
$this->execution->start();
}
public function testEventsForStartSetUnsetEnd()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterVariableUnset' );
$this->setUpStartSetUnsetEnd();
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForIncrementingLoop()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 22 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 22 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 22 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 10 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 10 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpLoop( 'increment' );
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForDecrementingLoop()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 22 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 22 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 22 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 10 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 10 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpLoop( 'decrement' );
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForSetAddSubMulDiv()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 7 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 7 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 7 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpSetAddSubMulDiv();
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForAddVariables()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpAddVariables();
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForVariableEqualsVariable()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpVariableEqualsVariable();
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForParallelSplitSynchronization()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 7 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 7 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 7 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpParallelSplitSynchronization();
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForParallelSplitSynchronization2()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpParallelSplitSynchronization2();
$this->execution->workflow = $this->workflow;
$this->execution->setVariables( array( 'foo' => 'bar', 'bar' => 'foo' ) );
$this->execution->start();
}
public function testEventsForExclusiveChoiceSimpleMerge()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpExclusiveChoiceSimpleMerge();
$this->execution->workflow = $this->workflow;
$this->execution->setVariables( array( 'condition' => true ) );
$this->execution->start();
}
public function testEventsForExclusiveChoiceWithElseSimpleMerge()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpExclusiveChoiceWithElseSimpleMerge();
$this->execution->workflow = $this->workflow;
$this->execution->setVariables( array( 'condition' => true ) );
$this->execution->start();
}
public function testEventsForExclusiveChoiceWithUnconditionalOutNodeSimpleMerge()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpExclusiveChoiceWithUnconditionalOutNodeSimpleMerge();
$this->execution->workflow = $this->workflow;
$this->execution->setVariables( array( 'condition' => false ) );
$this->execution->start();
}
public function testEventsForNestedExclusiveChoiceSimpleMerge()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 9 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 9 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 9 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpNestedExclusiveChoiceSimpleMerge();
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForMultiChoiceSynchronizingMerge()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 8 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 8 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 8 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpMultiChoice( 'SynchronizingMerge' );
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForMultiChoiceDiscriminator()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 8 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 8 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 8 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpMultiChoice( 'Discriminator' );
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForNonInteractiveSubWorkflow()
{
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpWorkflowWithSubWorkflow( 'StartEnd' );
$this->execution->definitionStorage = $this->xmlStorage;
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForInteractiveSubWorkflow()
{
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 6 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpWorkflowWithSubWorkflow( 'StartInputEnd' );
$this->execution->definitionStorage = $this->xmlStorage;
$this->execution->workflow = $this->workflow;
$this->execution->setInputVariableForSubWorkflow( 'variable', 'value' );
$this->execution->start();
}
public function testEventsForWorkflowWithCancelCaseSubWorkflow()
{
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 7 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 7 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpWorkflowWithSubWorkflow( 'ParallelSplitActionActionCancelCaseSynchronization' );
$this->execution->definitionStorage = $this->xmlStorage;
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForNestedLoops()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 10 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 10 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 10 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpNestedLoops();
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForWorkflowWithSubWorkflowAndVariablePassing()
{
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 7 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 7 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 7 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpWorkflowWithSubWorkflowAndVariablePassing();
$this->execution->definitionStorage = $this->xmlStorage;
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForParallelSplitCancelCaseActionActionSynchronization()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 2 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpCancelCase( 'first' );
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
public function testEventsForParallelSplitActionActionCancelCaseSynchronization()
{
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionSuspended' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionResumed' );
$this->plugin->expects( $this->exactly( 1 ) )->method( 'afterExecutionCancelled' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterExecutionEnded' );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'beforeNodeActivated' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 5 ) )->method( 'afterNodeActivated' );
$this->plugin->expects( $this->exactly( 3 ) )->method( 'afterNodeExecuted' );
$this->plugin->expects( $this->exactly( 4 ) )->method( 'afterThreadStarted' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterThreadEnded' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableSet' )->will( $this->returnArgument( 2 ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableSet' );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'beforeVariableUnset' )->will( $this->returnValue( true ) );
$this->plugin->expects( $this->exactly( 0 ) )->method( 'afterVariableUnset' );
$this->setUpCancelCase( 'last' );
$this->execution->workflow = $this->workflow;
$this->execution->start();
}
}
?>