Esempio n. 1
0
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
Esempio n. 2
0
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]
Esempio n. 3
0
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
Esempio n. 4
0
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]
Esempio n. 5
0
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
Esempio n. 6
0
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]