Ejemplo n.º 1
0
def test_two_bordering_bees_in_swarms():
    simple_map = zeros8((2, 2))
    simple_map[1, 0] = -5
    simple_map[1, 1] = 4
    b = BeeClust(simple_map)
    assert len(b.swarms) == 1
    assert swt(b.swarms) == [[(1, 0), (1, 1)]]
Ejemplo n.º 2
0
def test_heat_distribution_along_diagonal():
    simple_map = zeros8((8, 8))
    simple_map[0, 0] = HEATER
    b = BeeClust(simple_map)
    TEMPS = [40, 38.2, 30.1, 27.4, 26.05, 25.24, 24.7, 24.31428571]
    for i in range(-8, 8):
        assert numpy.isclose(b.heatmap.diagonal(i), TEMPS[abs(i):]).all()
Ejemplo n.º 3
0
def test_two_bees_in_swarms_corner():
    simple_map = zeros8((3, 3))
    simple_map[1, 0] = -5
    simple_map[0, 1] = 4
    b = BeeClust(simple_map)
    assert len(b.swarms) == 2
    assert swt(b.swarms) == [[(0, 1)], [(1, 0)]]
Ejemplo n.º 4
0
def test_score_one_bee_heater():
    simple_map = zeros8((3, 4))
    simple_map[1, 1] = -2
    simple_map[1, 2] = HEATER
    b = BeeClust(simple_map)
    assert T_HEATER > b.score > T_ENV
    assert math.isclose(b.score, 38.2)
Ejemplo n.º 5
0
def test_weird_map_shape_raises_ValueError():
    for shape in (8, ), (2, 2, 2):
        kwargs = OrderedDict(**KWARGS)
        kwargs['map'] = zeros8(shape)
        with pytest.raises(ValueError) as excinfo:
            BeeClust(**kwargs)
        assert ('shape' in str(excinfo.value) or 'dim' in str(excinfo.value))
Ejemplo n.º 6
0
def test_score_two_bees_heater_cooler():
    simple_map = zeros8((3, 4))
    simple_map[0, 0] = COOLER
    simple_map[2, 3] = HEATER
    simple_map[0, 1] = 2
    simple_map[2, 2] = 3
    b = BeeClust(simple_map)
    assert math.isclose(b.score, 22.675)
Ejemplo n.º 7
0
def test_two_bees_in_bees():
    simple_map = zeros8((2, 2))
    simple_map[1, 0] = -5
    simple_map[1, 1] = 4
    b = BeeClust(simple_map)
    assert len(b.bees) == 2
    assert (1, 0) in sbt(b.bees)
    assert (1, 1) in sbt(b.bees)
Ejemplo n.º 8
0
def test_wall_stops_cool():
    simple_map = zeros8((3, 3))
    simple_map[:, 1] = WALL
    simple_map[:, 2] = COOLER
    b = BeeClust(simple_map)
    assert math.isclose(b.heatmap[0, 0], T_ENV)
    assert math.isclose(b.heatmap[1, 0], T_ENV)
    assert math.isclose(b.heatmap[2, 0], T_ENV)
Ejemplo n.º 9
0
def test_score_changes():
    simple_map = zeros8((3, 1))
    simple_map[1, 0] = 1
    simple_map[2, 0] = HEATER
    b = BeeClust(simple_map, p_changedir=0)
    score = b.score
    b.tick()
    assert b.score < score
Ejemplo n.º 10
0
def test_swarms_change_after_tick():
    simple_map = zeros8((2, 2))
    simple_map[1, 0] = 1
    b = BeeClust(simple_map, p_changedir=0)
    assert swt(b.swarms) == [[(1, 0)]]
    b.tick()
    assert len(b.swarms) == 1
    assert len(swt(b.swarms)[0]) == 1
    assert swt(b.swarms)[0][0] != (1, 0)
Ejemplo n.º 11
0
def test_bees_change_after_tick():
    simple_map = zeros8((2, 2))
    simple_map[1, 0] = 1
    b = BeeClust(simple_map, p_changedir=0)
    assert len(b.bees) == 1
    assert sbt(b.bees)[0] == (1, 0)
    b.tick()
    assert len(b.bees) == 1
    assert sbt(b.bees)[0] != (1, 0)
Ejemplo n.º 12
0
def test_recalculate_heat():
    simple_map = zeros8((3, 4))
    b = BeeClust(simple_map)
    b.heatmap[:, :] = 100
    assert numpy.isclose(b.heatmap, 100).all()
    b.recalculate_heat()
    assert numpy.isclose(b.heatmap, T_ENV).all()
    b.map[:, :] = HEATER
    b.recalculate_heat()
    assert numpy.isclose(b.heatmap, T_HEATER).all()
Ejemplo n.º 13
0
def test_heatmap_central_heater():
    simple_map = zeros8((3, 3))
    simple_map[1, 1] = HEATER
    b = BeeClust(simple_map)
    assert b.heatmap[1, 1] == T_HEATER
    for x in range(3):
        for y in range(3):
            if (x, y) != (1, 1):
                assert T_ENV < b.heatmap[x, y] < T_HEATER
                assert math.isclose(b.heatmap[x, y], 38.2)
Ejemplo n.º 14
0
def test_heatmap_central_cooler():
    simple_map = zeros8((3, 3))
    simple_map[1, 1] = COOLER
    b = BeeClust(simple_map)
    assert b.heatmap[1, 1] == T_COOLER
    for x in range(3):
        for y in range(3):
            if (x, y) != (1, 1):
                assert T_ENV > b.heatmap[x, y] > T_COOLER
                assert math.isclose(b.heatmap[x, y], 6.7)
Ejemplo n.º 15
0
def test_custom_temperatures():
    simple_map = zeros8((4, 4))
    simple_map[0, -1] = HEATER
    simple_map[-1, 0] = COOLER
    cooler, env, heater = -20, 0, 20
    b = BeeClust(simple_map, T_cooler=cooler, T_env=env, T_heater=heater)
    assert math.isclose(b.heatmap[0, -1], heater)
    assert math.isclose(b.heatmap[-1, 0], cooler)
    assert numpy.isclose(b.heatmap.diagonal(), env).all()
    assert math.isclose(b.heatmap[1, -2], 9)
    assert math.isclose(b.heatmap[-2, 1], -9)
Ejemplo n.º 16
0
def test_tick_empty():
    original = zeros8((3, 4))
    original[1, 2] = 5  # wall
    original[1, 3] = 6  # heater
    b = BeeClust(original.copy())
    assert b.map is not original

    # this could go to infinity, but 42 would do
    # no monkey business at 43, please
    for _ in range(42):
        assert b.tick() == 0
        assert (b.map == original).all()
Ejemplo n.º 17
0
def loner(what):
    """Puts {what} into the central field, surrounded by nothing but sorrow"""
    simple_map = zeros8((3, 3))
    simple_map[1, 1] = what
    return simple_map
Ejemplo n.º 18
0
def test_takes_and_exposes_numpy_map():
    simple_map = zeros8((4, 6))
    simple_map[1, 3] = 5
    simple_map[1, 4] = -1
    b = BeeClust(simple_map)
    assert (b.map == simple_map).all()
Ejemplo n.º 19
0
def test_recalculate_heat_is_callable():
    b = BeeClust(zeros8((2, 2)))
    b.recalculate_heat()
Ejemplo n.º 20
0
def test_one_bee_in_bees():
    simple_map = zeros8((2, 2))
    simple_map[1, 0] = -3
    b = BeeClust(simple_map)
    assert len(b.bees) == 1
    assert sbt(b.bees)[0] == (1, 0)
Ejemplo n.º 21
0
def test_empty_map_empty_bees():
    b = BeeClust(zeros8((2, 2)))
    assert len(b.bees) == 0
Ejemplo n.º 22
0
def test_forget_is_callable():
    b = BeeClust(zeros8((2, 2)))
    b.forget()
Ejemplo n.º 23
0
def test_one_bee_in_swarms():
    simple_map = zeros8((2, 2))
    simple_map[1, 0] = -3
    b = BeeClust(simple_map)
    assert swt(b.swarms) == [[(1, 0)]]
Ejemplo n.º 24
0
import pytest
from collections import OrderedDict
from helpers import zeros8
from beeclust import BeeClust

MAP = zeros8((3, 2))
KWARGS = OrderedDict(
    map=MAP,
    p_changedir=0.2,
    p_wall=0.8,
    p_meet=0.8,
    k_temp=0.9,
    k_stay=50,
    T_ideal=35,
    T_heater=40,
    T_cooler=5,
    T_env=22,
    min_wait=2,
)


def test_init_all():
    BeeClust(**KWARGS)


def test_init_all_postional():
    BeeClust(*KWARGS.values())


def test_optional_kwargs():
    for key in KWARGS.keys():
Ejemplo n.º 25
0
def test_heatmap_empty():
    simple_map = zeros8((3, 4))
    b = BeeClust(simple_map)
    assert numpy.isclose(b.heatmap, T_ENV).all()
Ejemplo n.º 26
0
def test_score_is_a_float():
    simple_map = zeros8((4, 6))
    simple_map[1, 3] = 1
    b = BeeClust(simple_map)
    assert isinstance(b.score, float)
Ejemplo n.º 27
0
def test_tick_returns_int():
    b = BeeClust(zeros8((4, 6)))
    assert isinstance(b.tick(), int)
Ejemplo n.º 28
0
def test_score_one_bee():
    simple_map = zeros8((3, 4))
    simple_map[1, 1] = 3
    b = BeeClust(simple_map)
    assert math.isclose(b.score, T_ENV)
Ejemplo n.º 29
0
def test_swarms_is_a_collection():
    b = BeeClust(zeros8((2, 2)))
    assert isinstance(b.swarms, abc.Collection)
Ejemplo n.º 30
0
def test_empty_map_empty_swarms():
    b = BeeClust(zeros8((2, 2)))
    assert len(b.swarms) == 0