| Current File : //home/strato/chroot/home/xlink/chroot/opt/RZphp83/includes/tests/FSM/tests/transitions.phpt |
--TEST--
FSM: Transitions
--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";
}
$stack = array();
$fsm = new FSM('START', $stack);
echo $fsm->getCurrentState() . "\n";
$fsm->setDefaultTransition('START', 'defaultTransition');
$fsm->addTransition('TRANS1', 'START', 'FINISH', 'transition1');
$fsm->addTransition('TRANS2', 'FINISH', 'START', 'transition2');
$fsm->process('TRANS2');
echo $fsm->getCurrentState() . "\n";
echo $fsm->getPreviousState() . "\n";
$fsm->process('TRANS1');
echo $fsm->getCurrentState() . "\n";
echo $fsm->getPreviousState() . "\n";
var_dump($stack);
--EXPECT--
START
Default
START
START
Transition 1
FINISH
START
array(2) {
[0]=>
string(6) "TRANS2"
[1]=>
string(6) "TRANS1"
}