public function test_can_be_constructed_with_initial_state_and_change_listener()
 {
     $value = null;
     $stateMachine = new StateMachine('a', function ($state) use(&$value) {
         $value = $state;
     });
     $stateMachine->configure('a')->permit('to-b', 'b')->permit('to-a', 'a');
     $stateMachine->configure('b')->permit('to-a', 'a');
     $this->assertEquals('a', $value);
     $stateMachine->fire('to-b');
     $this->assertEquals('b', $value);
     $stateMachine->fire('to-a');
     $this->assertEquals('a', $value);
     $stateMachine->fire('to-a');
     $this->assertEquals('a', $value);
 }
Exemple #2
0
 /**
  * @param string $event
  * @param string $expectedState
  */
 private function fireAndAssertState($event, $expectedState)
 {
     $this->stateMachine->fire($event);
     $this->assertEquals($expectedState, $this->stateMachine->getCurrentState());
 }