def test_KDTree(): model, space, agents = make_space(2) assert space.kdtree is None assert len(space.select((1, 1), 2)) == 0 space.add_agents([ap.Agent(model)]) assert isinstance(space.kdtree, scipy.spatial.cKDTree) assert len(space.select((1, 1), 2)) == 1
def test_positions(): # Disconnected space model, space, agents = make_space(2) a1 = ap.Agent(model) a2 = ap.Agent(model) space.add_agents([a1]) space.add_agents([a2], positions=[(1, 2)]) # Position reference assert list(space.positions[a1]) == [0, 0] assert list(space.positions[a2]) == [1, 2] assert [list(x) for x in space.positions.values()] == [[0, 0], [1, 2]] # Get agents assert len(space.select((1, 1), 0.9)) == 0 assert len(space.select((1, 1), 1)) == 1 assert len(space.select((1, 1), 1.4)) == 1 assert len(space.select((1, 1), 1.42)) == 2 # Get neighbors assert len(space.neighbors(a1, distance=2.0)) == 0 assert len(space.neighbors(a1, distance=2.5)) == 1 assert list(space.neighbors(a1, distance=2.5))[0] is a2 # Movement restricted by border space.move_by(a2, (2, -3)) assert list(space.positions[a2]) == [2, 0] # Move directly space.move_to(a2, (1, 1)) assert list(space.positions[a2]) == [1, 1] # Connected space (toroidal) model, space, agents = make_space(2, torus=True) a1 = ap.Agent(model) a2 = ap.Agent(model) space.add_agents([a1]) space.add_agents([a2], positions=[(0, 1.9)]) assert list(space.neighbors(a1, distance=0.11))[0] == a2 # Movement over border space.move_by(a2, (-3, 1.1)) assert list(space.positions[a2]) == [1, 1]
def test_basics(): model = ap.Model() agent = ap.Agent(model) agent.x = 1 agent['y'] = 2 assert agent['x'] == 1 assert agent.y == 2 assert agent.__repr__() == "Agent (Obj 1)" assert model.type == 'Model' assert model.__repr__() == "Model" assert isinstance(model.info, ap.tools.InfoStr) with pytest.raises(AttributeError): assert agent.z
def test_add(): model = ap.Model() agents1 = ap.AgentList(model, 2) agents2 = ap.AgentList(model, 2) agents3 = agents1 + agents2 assert list(agents3.id) == [1, 2, 3, 4] agents4 = agents3 + [ap.Agent(model)] assert list(agents4.id) == [1, 2, 3, 4, 5] model = ap.Model() agents1 = ap.AgentDList(model, 2) agents2 = ap.AgentDList(model, 2) agents3 = agents1 + agents2 assert list(agents3.id) == [1, 2, 3, 4] agents4 = agents3 + [ap.Agent(model)] assert list(agents4.id) == [1, 2, 3, 4, 5]
def test_move_agent(): # Move agent one node to another model = ap.Model() graph = ap.Network(model) n1 = graph.add_node() n2 = graph.add_node() a = ap.Agent(model) graph.add_agents([a], positions=[n1]) assert len(n1) == 1 assert len(n2) == 0 assert graph.positions[a] is n1 graph.move_to(a, n2) assert len(n1) == 0 assert len(n2) == 1 assert graph.positions[a] is n2
def test_add_agents_random(): model, space, agents = make_space(2) model.run(steps=0, seed=1, display=False) agent = ap.Agent(model) space.add_agents([agent], random=True) assert list(space.positions[agent]) == [1.527549237953228, 0.5101380514788434]