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"
}