/** * @inheritdoc */ public function generateAdjacentNodes(Node $node) { $adjacentNodes = array(); $myNode = MyNode::fromNode($node); if ($myNode->getRow() == 0) { $startingRow = 0; } else { $startingRow = $myNode->getRow() - 1; } if ($myNode->getRow() == $this->terrainCost->getTotalRows() - 1) { $endingRow = $myNode->getRow(); } else { $endingRow = $myNode->getRow() + 1; } if ($myNode->getColumn() == 0) { $startingColumn = 0; } else { $startingColumn = $myNode->getColumn() - 1; } if ($myNode->getColumn() == $this->terrainCost->getTotalColumns() - 1) { $endingColumn = $myNode->getColumn(); } else { $endingColumn = $myNode->getColumn() + 1; } for ($row = $startingRow; $row <= $endingRow; $row++) { for ($column = $startingColumn; $column <= $endingColumn; $column++) { $adjacentNode = new MyNode($row, $column); if ($adjacentNode->getID() !== $myNode->getID()) { $adjacentNodes[] = $adjacentNode; } } } return $adjacentNodes; }
/** * @param MyNode $needle * @param MyNode[] $haystack */ private function assertContainsMyNode(MyNode $needle, array $haystack) { foreach ($haystack as $node) { if ($needle->getID() === $node->getID()) { return; } } $this->fail('Failed asserting that the array ' . print_r($haystack, true) . 'contains the specified node ' . print_r($needle, true)); }
/** * @dataProvider validPointProvider */ public function testShouldGenerateAnID($row, $column) { $expectedID = $row . 'x' . $column; $sut = new MyNode($row, $column); $this->assertSame($expectedID, $sut->getID()); }