class TestBaseGrid(unittest.TestCase): ''' Testing a non-toroidal grid. ''' torus = False def setUp(self): ''' Create a test non-toroidal grid and populate it with Mock Agents ''' width = 3 # width of grid height = 5 # height of grid self.grid = Grid(width, height, self.torus) self.agents = [] counter = 0 for x in range(width): for y in range(height): if TEST_GRID[x][y] == 0: continue counter += 1 # Create and place the mock agent a = MockAgent(counter, None) self.agents.append(a) self.grid.place_agent(a, (x, y)) def test_agent_positions(self): ''' Ensure that the agents are all placed properly. ''' for agent in self.agents: x, y = agent.pos assert self.grid[x][y] == agent def test_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, get_cell_list_contents accurately reports that fact. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.get_cell_list_contents([(x, y)]) def test_listfree_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, get_cell_list_contents accurately reports that fact, even when single position is not wrapped in a list. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.get_cell_list_contents((x, y)) def test_iter_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, iter_cell_list_contents accurately reports that fact. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.iter_cell_list_contents([(x, y)]) def test_listfree_iter_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, iter_cell_list_contents accurately reports that fact, even when single position is not wrapped in a list. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.iter_cell_list_contents((x, y)) def test_neighbors(self): ''' Test the base neighborhood methods on the non-toroid. ''' neighborhood = self.grid.get_neighborhood((1, 1), moore=True) assert len(neighborhood) == 8 neighborhood = self.grid.get_neighborhood((1, 4), moore=False) assert len(neighborhood) == 3 neighborhood = self.grid.get_neighborhood((1, 4), moore=True) assert len(neighborhood) == 5 neighborhood = self.grid.get_neighborhood((0, 0), moore=False) assert len(neighborhood) == 2 neighbors = self.grid.get_neighbors((4, 1), moore=False) assert len(neighbors) == 0 neighbors = self.grid.get_neighbors((4, 1), moore=True) assert len(neighbors) == 0 neighbors = self.grid.get_neighbors((1, 1), moore=False, include_center=True) assert len(neighbors) == 3 neighbors = self.grid.get_neighbors((1, 3), moore=False, radius=2) assert len(neighbors) == 2 def test_coord_iter(self): ci = self.grid.coord_iter() # no agent in first space first = next(ci) assert first[0] is None assert first[1] == 0 assert first[2] == 0 # first agent in the second space second = next(ci) assert second[0].unique_id == 1 assert second[0].pos == (0, 1) assert second[1] == 0 assert second[2] == 1
class TestBaseGrid(unittest.TestCase): """ Testing a non-toroidal grid. """ torus = False def setUp(self): """ Create a test non-toroidal grid and populate it with Mock Agents """ width = 3 # width of grid height = 5 # height of grid self.grid = Grid(width, height, self.torus) self.agents = [] counter = 0 for x in range(width): for y in range(height): if TEST_GRID[x][y] == 0: continue counter += 1 # Create and place the mock agent a = MockAgent(counter, None) self.agents.append(a) self.grid.place_agent(a, (x, y)) def test_agent_positions(self): """ Ensure that the agents are all placed properly. """ for agent in self.agents: x, y = agent.pos assert self.grid[x][y] == agent def test_cell_agent_reporting(self): """ Ensure that if an agent is in a cell, get_cell_list_contents accurately reports that fact. """ for agent in self.agents: x, y = agent.pos assert agent in self.grid.get_cell_list_contents([(x, y)]) def test_listfree_cell_agent_reporting(self): """ Ensure that if an agent is in a cell, get_cell_list_contents accurately reports that fact, even when single position is not wrapped in a list. """ for agent in self.agents: x, y = agent.pos assert agent in self.grid.get_cell_list_contents((x, y)) def test_iter_cell_agent_reporting(self): """ Ensure that if an agent is in a cell, iter_cell_list_contents accurately reports that fact. """ for agent in self.agents: x, y = agent.pos assert agent in self.grid.iter_cell_list_contents([(x, y)]) def test_listfree_iter_cell_agent_reporting(self): """ Ensure that if an agent is in a cell, iter_cell_list_contents accurately reports that fact, even when single position is not wrapped in a list. """ for agent in self.agents: x, y = agent.pos assert agent in self.grid.iter_cell_list_contents((x, y)) def test_neighbors(self): """ Test the base neighborhood methods on the non-toroid. """ neighborhood = self.grid.get_neighborhood((1, 1), moore=True) assert len(neighborhood) == 8 neighborhood = self.grid.get_neighborhood((1, 4), moore=False) assert len(neighborhood) == 3 neighborhood = self.grid.get_neighborhood((1, 4), moore=True) assert len(neighborhood) == 5 neighborhood = self.grid.get_neighborhood((0, 0), moore=False) assert len(neighborhood) == 2 neighbors = self.grid.get_neighbors((4, 1), moore=False) assert len(neighbors) == 0 neighbors = self.grid.get_neighbors((4, 1), moore=True) assert len(neighbors) == 0 neighbors = self.grid.get_neighbors((1, 1), moore=False, include_center=True) assert len(neighbors) == 3 neighbors = self.grid.get_neighbors((1, 3), moore=False, radius=2) assert len(neighbors) == 2 def test_coord_iter(self): ci = self.grid.coord_iter() # no agent in first space first = next(ci) assert first[0] is None assert first[1] == 0 assert first[2] == 0 # first agent in the second space second = next(ci) assert second[0].unique_id == 1 assert second[0].pos == (0, 1) assert second[1] == 0 assert second[2] == 1 def test_agent_move(self): # get the agent at [0, 1] agent = self.agents[0] self.grid.move_agent(agent, (1, 1)) assert agent.pos == (1, 1) # move it off the torus and check for the exception if not self.torus: with self.assertRaises(Exception): self.grid.move_agent(agent, [-1, 1]) with self.assertRaises(Exception): self.grid.move_agent(agent, [1, self.grid.height + 1]) else: self.grid.move_agent(agent, [-1, 1]) assert agent.pos == (self.grid.width - 1, 1) self.grid.move_agent(agent, [1, self.grid.height + 1]) assert agent.pos == (1, 1) def test_agent_remove(self): agent = self.agents[0] x, y = agent.pos self.grid.remove_agent(agent) assert agent.pos is None assert self.grid.grid[x][y] is None
class TestBaseGrid(unittest.TestCase): ''' Testing a non-toroidal grid. ''' torus = False def setUp(self): ''' Create a test non-toroidal grid and populate it with Mock Agents ''' self.grid = Grid(3, 5, self.torus) self.agents = [] counter = 0 for y in range(3): for x in range(5): if TEST_GRID[y][x] == 0: continue counter += 1 # Create and place the mock agent a = MockAgent(counter, None) self.agents.append(a) self.grid.place_agent(a, (x, y)) def test_agent_positions(self): ''' Ensure that the agents are all placed properly. ''' for agent in self.agents: x, y = agent.pos assert self.grid[y][x] == agent def test_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, get_cell_list_contents accurately reports that fact. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.get_cell_list_contents([(x, y)]) def test_listfree_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, get_cell_list_contents accurately reports that fact, even when single position is not wrapped in a list. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.get_cell_list_contents((x, y)) def test_iter_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, iter_cell_list_contents accurately reports that fact. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.iter_cell_list_contents([(x, y)]) def test_listfree_iter_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, iter_cell_list_contents accurately reports that fact, even when single position is not wrapped in a list. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.iter_cell_list_contents((x, y)) def test_neighbors(self): ''' Test the base neighborhood methods on the non-toroid. ''' neighborhood = self.grid.get_neighborhood((1, 1), moore=True) assert len(neighborhood) == 8 neighborhood = self.grid.get_neighborhood((4, 1), moore=True) assert len(neighborhood) == 5 neighborhood = self.grid.get_neighborhood((0, 0), moore=False) assert len(neighborhood) == 2 neighbors = self.grid.get_neighbors((4, 1), moore=False) assert len(neighbors) == 0 neighbors = self.grid.get_neighbors((4, 1), moore=True) assert len(neighbors) == 2 neighbors = self.grid.get_neighbors((1, 1), moore=False, include_center=True) assert len(neighbors) == 3 neighbors = self.grid.get_neighbors((3, 1), moore=False, radius=2) assert len(neighbors) == 4 def test_coord_iter(self): ci = self.grid.coord_iter() # no agent in first space first = next(ci) assert first[0] is None assert first[1] == 0 assert first[2] == 0 # first agent in the second space second = next(ci) assert second[0].unique_id == 1 assert second[0].pos == (1, 0) assert second[1] == 1 assert second[2] == 0
class TestBaseGrid(unittest.TestCase): ''' Testing a non-toroidal grid. ''' torus = False def setUp(self): ''' Create a test non-toroidal grid and populate it with Mock Agents ''' width = 3 # width of grid height = 5 # height of grid self.grid = Grid(width, height, self.torus) self.agents = [] counter = 0 for x in range(width): for y in range(height): if TEST_GRID[x][y] == 0: continue counter += 1 # Create and place the mock agent a = MockAgent(counter, None) self.agents.append(a) self.grid.place_agent(a, (x, y)) def test_agent_positions(self): ''' Ensure that the agents are all placed properly. ''' for agent in self.agents: x, y = agent.pos assert self.grid[x][y] == agent def test_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, get_cell_list_contents accurately reports that fact. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.get_cell_list_contents([(x, y)]) def test_listfree_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, get_cell_list_contents accurately reports that fact, even when single position is not wrapped in a list. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.get_cell_list_contents((x, y)) def test_iter_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, iter_cell_list_contents accurately reports that fact. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.iter_cell_list_contents([(x, y)]) def test_listfree_iter_cell_agent_reporting(self): ''' Ensure that if an agent is in a cell, iter_cell_list_contents accurately reports that fact, even when single position is not wrapped in a list. ''' for agent in self.agents: x, y = agent.pos assert agent in self.grid.iter_cell_list_contents((x, y)) def test_neighbors(self): ''' Test the base neighborhood methods on the non-toroid. ''' neighborhood = self.grid.get_neighborhood((1, 1), moore=True) assert len(neighborhood) == 8 neighborhood = self.grid.get_neighborhood((1, 4), moore=False) assert len(neighborhood) == 3 neighborhood = self.grid.get_neighborhood((1, 4), moore=True) assert len(neighborhood) == 5 neighborhood = self.grid.get_neighborhood((0, 0), moore=False) assert len(neighborhood) == 2 neighbors = self.grid.get_neighbors((4, 1), moore=False) assert len(neighbors) == 0 neighbors = self.grid.get_neighbors((4, 1), moore=True) assert len(neighbors) == 0 neighbors = self.grid.get_neighbors((1, 1), moore=False, include_center=True) assert len(neighbors) == 3 neighbors = self.grid.get_neighbors((1, 3), moore=False, radius=2) assert len(neighbors) == 2 def test_coord_iter(self): ci = self.grid.coord_iter() # no agent in first space first = next(ci) assert first[0] is None assert first[1] == 0 assert first[2] == 0 # first agent in the second space second = next(ci) assert second[0].unique_id == 1 assert second[0].pos == (0, 1) assert second[1] == 0 assert second[2] == 1 def test_agent_move(self): # get the agent at [0, 1] agent = self.agents[0] self.grid.move_agent(agent, (1, 1)) assert agent.pos == (1, 1) # move it off the torus and check for the exception if not self.torus: with self.assertRaises(Exception): self.grid.move_agent(agent, [-1, 1]) with self.assertRaises(Exception): self.grid.move_agent(agent, [1, self.grid.height + 1]) else: self.grid.move_agent(agent, [-1, 1]) assert agent.pos == (self.grid.width - 1, 1) self.grid.move_agent(agent, [1, self.grid.height + 1]) assert agent.pos == (1, 1) def test_agent_remove(self): agent = self.agents[0] x, y = agent.pos self.grid.remove_agent(agent) assert agent.pos is None assert self.grid.grid[x][y] is None