public function testThrowsExceptionIfSettingInvalidPattern() { $invalidPattern = 'foo'; $this->expectException(InvalidPattern::class); $this->expectExceptionMessage(sprintf('The supplied pattern "%s" does not appear to be a valid regular expression', $invalidPattern)); DefaultTransition::usePattern($invalidPattern); }
public function testThrowsExceptionWhenProvidingInvalidInputToState() { $this->expectException(InvalidInputForState::class); $this->expectExceptionMessage('Cannot CLOSE a CLOSED object'); $transitionTable = new DefaultTransitionTable(DefaultTransition::new('CLOSED + OPEN = OPENED')); try { $transitionTable->resolve(FlyweightState::named('CLOSED'), FlyweightInput::named('CLOSE')); } catch (InvalidInputForState $exception) { $this->assertSame(FlyweightInput::named('CLOSE'), $exception->getInput()); $this->assertSame(FlyweightState::named('CLOSED'), $exception->getState()); throw $exception; } }
public function __construct() { $this->wrappedTransitionTable = new DefaultTransitionTable(DefaultTransition::new('WHITES_TURN + WHITE_MOVES = BLACKS_TURN'), DefaultTransition::new('BLACKS_TURN + BLACK_MOVES = WHITES_TURN'), DefaultTransition::new('WHITES_TURN + CHECKMATE = WHITE_WINS'), DefaultTransition::new('BLACKS_TURN + CHECKMATE = BLACK_WINS'), DefaultTransition::new('WHITES_TURN + STALEMATE = DRAW'), DefaultTransition::new('BLACKS_TURN + STALEMATE = DRAW')); }