/**
  * @param int[]    $flags
  * @param callable $closure
  */
 private function iterateCellFlags(array $flags, callable $closure)
 {
     foreach ($flags as $originFlag => $expectedFlag) {
         /** @var Cell $cell */
         $cell = $closure(MockFactory::getCellMock('A1')->setFlags($originFlag));
         $this->assertEquals($expectedFlag, $cell->getFlags());
     }
 }
 /**
  * @see AbstractFlaggedEntity::hasMask
  * @test
  */
 public function hasFlag()
 {
     $cell = MockFactory::getCellMock('A1');
     $cell->setFlags(CellModel::FLAG_DEAD_SHIP);
     $this->assertTrue($cell->hasFlag(CellModel::FLAG_DEAD_SHIP));
     $this->assertTrue($cell->hasFlag(CellModel::FLAG_DEAD));
     $this->assertTrue($cell->hasFlag(CellModel::FLAG_SHIP));
     $cell->removeFlag(CellModel::FLAG_DEAD);
     $this->assertFalse($cell->hasFlag(CellModel::FLAG_DEAD_SHIP));
     $this->assertFalse($cell->hasFlag(CellModel::FLAG_DEAD));
 }
 /**
  * @see AIService::attackCell
  *
  * @param int $cellFlag
  * @param int $expectedFlag
  *
  * @throws AIException
  */
 private function attackCell(int $cellFlag, int $expectedFlag)
 {
     $cell = $this->invokeMethod(static::$ai, 'attackCell', [MockFactory::getCellMock('A1', $cellFlag)]);
     $this->assertEquals($expectedFlag, $cell->getFlags());
 }
 public function setCellsProvider() : array
 {
     return [[[MockFactory::getCellMock('A1'), MockFactory::getCellMock('A2')]]];
 }