Mi2dRPGamEng/tests/test_tile.py

49 lines
1.9 KiB
Python

from engine.tile import Tile, TileLayerDef, TileLayerInstance
class FakeRegistry:
def __init__(self, defs: dict[tuple[str, str], TileLayerDef]):
self._defs = defs
def get_tile_layer_def(self, layer, def_id):
if def_id is None:
return None
return self._defs.get((layer, def_id))
def test_speed_multiplier_defaults_to_1_with_no_layers_set():
tile = Tile()
assert tile.speed_multiplier(FakeRegistry({})) == 1.0
def test_speed_multiplier_uses_flooring_defs_value():
registry = FakeRegistry({("flooring", "mud"): TileLayerDef(id="mud", layer="flooring", speed_multiplier=0.6)})
tile = Tile(flooring=TileLayerInstance("mud"))
assert tile.speed_multiplier(registry) == 0.6
def test_speed_multiplier_takes_the_most_restrictive_of_room_and_flooring():
registry = FakeRegistry({
("flooring", "mud"): TileLayerDef(id="mud", layer="flooring", speed_multiplier=0.6),
("room", "webbing"): TileLayerDef(id="webbing", layer="room", speed_multiplier=0.3),
})
tile = Tile(flooring=TileLayerInstance("mud"), room=TileLayerInstance("webbing"))
assert tile.speed_multiplier(registry) == 0.3
def test_speed_multiplier_unaffected_by_an_unrelated_def_with_no_slow():
registry = FakeRegistry({("flooring", "grass"): TileLayerDef(id="grass", layer="flooring")})
tile = Tile(flooring=TileLayerInstance("grass"))
assert tile.speed_multiplier(registry) == 1.0
def test_has_any_layer_false_for_a_bare_tile():
assert Tile().has_any_layer() is False
def test_has_any_layer_true_if_any_single_layer_is_set():
assert Tile(flooring=TileLayerInstance("dirt")).has_any_layer() is True
assert Tile(room=TileLayerInstance("solid_rock")).has_any_layer() is True
assert Tile(roof=TileLayerInstance("cave_ceiling")).has_any_layer() is True
assert Tile(subfloor=TileLayerInstance("dirt")).has_any_layer() is True