private function lose(Player $player) : bool { if ($player->equals(Player::X())) { return $this->win(Player::O()); } return $this->win(Player::X()); }
public function testEngineHandlesOneDrawOption() { $X = Player::X(); $state = new GameState(); // OXX // OO // XOX $state->fillField(2, 0); // X $state->fillField(0, 0); // O $state->fillField(0, 2); // X $state->fillField(1, 1); // O $state->fillField(0, 1); // X $state->fillField(2, 1); // O $state->fillField(2, 2); // X $state->fillField(1, 2); // O $engine = new Engine($X); $decision = $engine->decide($state); $newState = $decision->apply($state); $this->assertTrue($newState->getField(1, 0)->equals($X), 'Middle-left field must be taken by X'); }