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); }
/** * @param string $event * @param string $expectedState */ private function fireAndAssertState($event, $expectedState) { $this->stateMachine->fire($event); $this->assertEquals($expectedState, $this->stateMachine->getCurrentState()); }