/** * Applies game of life rules for next generation * * @param string $member * @return boolean */ public function willLive($member) { if (!$this->neighborhood->isAlive($member)) { return $this->neighborhood->countNeighbors($member) == 3; } else { $neighbors = $this->neighborhood->countNeighbors($member); return $neighbors > 1 && $neighbors < 4; } }
public function it_decides_alive_member_live_with_3_neighbors(\Neighborhood $neighborhood) { $member = '2,4'; $neighborhood->isAlive($member)->willReturn(true); $neighborhood->countNeighbors($member)->willReturn(3); $this->willLive($member)->shouldBe(true); }