58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
from engine.map import Map
|
|
from engine.placeholder_textures import DEPTH_SHADOW_TEXTURE, generate_depth_shadow_texture
|
|
from engine.render.renderer import visible_z_and_depth
|
|
from engine.tile import Tile, TileLayerInstance
|
|
|
|
|
|
def make_column_map():
|
|
"""A 1x1 map, 4 z-levels tall: floored at z=0 and z=3 only, bare (no layers) at z=1, 2 -
|
|
the "open air gap above a lower surface" case generation leaves at steep cliffs.
|
|
"""
|
|
m = Map("shaft", 1, 1, 4)
|
|
m.set_tile(0, 0, 0, Tile(flooring=TileLayerInstance("stone")))
|
|
m.set_tile(0, 0, 3, Tile(flooring=TileLayerInstance("dirt")))
|
|
return m
|
|
|
|
|
|
def test_reference_level_with_content_is_visible_at_zero_depth():
|
|
m = make_column_map()
|
|
z, depth = visible_z_and_depth(m, 0, 0, reference_z=3)
|
|
assert (z, depth) == (3, 0)
|
|
|
|
|
|
def test_gap_below_reference_looks_down_to_the_first_real_tile():
|
|
m = make_column_map()
|
|
z, depth = visible_z_and_depth(m, 0, 0, reference_z=2)
|
|
assert (z, depth) == (0, 2)
|
|
|
|
|
|
def test_gap_one_level_down_reports_depth_one():
|
|
m = make_column_map()
|
|
z, depth = visible_z_and_depth(m, 0, 0, reference_z=1)
|
|
assert (z, depth) == (0, 1)
|
|
|
|
|
|
def test_out_of_bounds_reference_returns_none():
|
|
m = make_column_map()
|
|
z, depth = visible_z_and_depth(m, 0, 0, reference_z=99)
|
|
assert (z, depth) == (None, 0)
|
|
|
|
|
|
def test_true_void_all_the_way_down_returns_none():
|
|
m = Map("empty", 1, 1, 2) # nothing set anywhere
|
|
z, depth = visible_z_and_depth(m, 0, 0, reference_z=1)
|
|
assert (z, depth) == (None, 0)
|
|
|
|
|
|
def test_generate_depth_shadow_texture_writes_a_file(tmp_path):
|
|
generate_depth_shadow_texture(tmp_path)
|
|
assert (tmp_path / DEPTH_SHADOW_TEXTURE).exists()
|
|
|
|
|
|
def test_generate_depth_shadow_texture_does_not_overwrite(tmp_path):
|
|
generate_depth_shadow_texture(tmp_path)
|
|
path = tmp_path / DEPTH_SHADOW_TEXTURE
|
|
path.write_bytes(b"custom")
|
|
generate_depth_shadow_texture(tmp_path)
|
|
assert path.read_bytes() == b"custom"
|