/** * O -> [A] -> O -> [B] -> O * in p1 out */ public function testSequentialPattern() { $handler = new TestHandler(); $logger = new Logger('test', array($handler)); $workflow = WorkflowCommon::createWorkflow($logger); // create sequence $a = new AutoA(); $workflow->addNode($a, 'a'); $place = WorkflowCommon::createPlace(); $workflow->addNode($place, 'p1'); $b = new AutoB(); $workflow->addNode($b, 'b'); $workflow->connectToStart('a'); $workflow->connect('a', 'p1'); $workflow->connect('p1', 'b'); $workflow->connectToFinish('b'); $token = WorkflowCommon::createToken(); $workflow->accept($token); $expected = array('Token accepted into workflow', 'Token advanced into workflow.start', 'Token advanced into a', 'Token advanced into p1', 'Token advanced into b', 'Token advanced into workflow.finish'); foreach ($expected as $logEntry) { $this->assertTrue($handler->hasInfo($logEntry), "failed log entry {$logEntry}"); } }