/**
  * @dataProvider snakeHeadModulePosition
  */
 public function testFieldIsOccupied($x, $y)
 {
     $players = [123456663 => "{'body':[{'x':100,'y':100},{'x':125,'y':100},{'x':150,'y':100}]}", 324234234 => "{'body':[{'x':200,'y':100},{'x':200,'y':125},{'x':200,'y':150}]}"];
     $board = $this->getMockBuilder("\\Games\\SnakeBundle\\Utils\\SnakeBoard")->disableOriginalConstructor()->setMethods(array('getPlayers'))->getMock();
     $board->expects($this->once())->method('getPlayers')->willReturn($players);
     $engine = new SnakeBoardEngine();
     $this->assertTrue($engine->isOccupied($board, $x, $y), "Field should be occupied by other snake");
 }
 /**
  * @dataProvider snakeModulePosition
  */
 public function testBugIsOnField($x, $y, $result)
 {
     $bugs = array((object) ["x" => 100, "y" => 100], (object) ["x" => 100, "y" => 200]);
     $board = $this->getMockBuilder("\\Games\\SnakeBundle\\Utils\\SnakeBoard")->disableOriginalConstructor()->setMethods(array("getBugs", "setBugs"))->getMock();
     $board->expects($this->once())->method("getBugs")->willReturn($bugs);
     $board->expects($this->any())->method("setBugs")->with($this->callback(function ($resultBugs) use($bugs) {
         return count($bugs) > count($resultBugs);
     }));
     $engine = new SnakeBoardEngine();
     $this->assertEquals($result, $engine->isBug($board, $x, $y));
 }