Current File : //home/strato/chroot/opt/RZphp72/includes/test/FSM/tests/addTransitionsArray.phpt
--TEST--
FSM: addTransitionsArray()
--FILE--
<?php

require_once 'FSM.php';

function defaultTransition($symbol, &$payload)
{
    array_push($payload, $symbol);
    echo "Default\n";
}

function transition1($symbol, &$payload)
{
    array_push($payload, $symbol);
    echo "Transition 1\n";
}

function transition2($symbol, &$payload)
{
    array_push($payload, $symbol);
    echo "Transition 2\n";
}

$transitions = array(
	array('TRANS1', 'START', 'FINISH', 'transition1'),
	array('TRANS1', 'FINISH', 'START', 'transition2'),
);

$stack = array();

$fsm = new FSM('START', $stack);
$fsm->setDefaultTransition('START', 'defaultTransition');
$fsm->addTransitionsArray($transitions);

$fsm->process('TRANS2');
$fsm->process('TRANS1');

var_dump($stack);
--EXPECT--
Default
Transition 1
array(2) {
  [0]=>
  string(6) "TRANS2"
  [1]=>
  string(6) "TRANS1"
}