testbed: physics fixes (rest-at-contact), pytest suite (33 tests green)
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
"""Tests for the headless raycaster: honest frames from real world state."""
|
||||
|
||||
from testbed.room.render import Raycaster
|
||||
from testbed.room.world import Room
|
||||
|
||||
|
||||
def test_spawn_view_shows_crate_and_occludes_beacon():
|
||||
"""From spawn the beacon is behind crate_red, so the frame center is the
|
||||
crate's color, not a cyan glow."""
|
||||
room = Room()
|
||||
img, grid = Raycaster().render(room)
|
||||
px = img.load()
|
||||
r, g, b = px[80, 60]
|
||||
assert r > 120 and g < 100 and b < 90 # reddish crate, distance-fogged
|
||||
assert len(grid) == 30 and len(grid[0]) == 40
|
||||
# The crate is ~5m away: center depth block must be well below 10.
|
||||
assert 2.0 < grid[17][20] < 8.0
|
||||
|
||||
|
||||
def test_wall_nearby_is_bright_gray():
|
||||
room = Room()
|
||||
room.capsule.yaw_deg = 180.0 # face north wall 1.5m away
|
||||
px = Raycaster().render(room)[0].load()
|
||||
r, g, b = px[80, 60]
|
||||
assert abs(r - g) < 8 and r > 80 # gray wall, little fog at 1.5m
|
||||
|
||||
|
||||
def test_beacon_glow_visible_when_facing_it():
|
||||
room = Room()
|
||||
room.capsule.x, room.capsule.z, room.capsule.yaw_deg = 11.0, 11.0, 45.0
|
||||
img, _ = Raycaster().render(room)
|
||||
px = img.load()
|
||||
r, g, b = px[80, 60]
|
||||
assert b > r # inactive beacon glows cyan
|
||||
room.beacon.active = True
|
||||
px = Raycaster().render(room)[0].load()
|
||||
r, g, b = px[80, 60]
|
||||
assert r > b # active beacon glows warm yellow
|
||||
|
||||
|
||||
def test_beacon_occluded_by_crate():
|
||||
room = Room()
|
||||
# Beacon behind crate_red from spawn: center pixel must not be cyan.
|
||||
px = Raycaster().render(room)[0].load()
|
||||
r, g, b = px[80, 60]
|
||||
assert b < 90
|
||||
|
||||
|
||||
def test_depth_grid_aligned_and_bounded():
|
||||
room = Room()
|
||||
_, grid = Raycaster().render(room, max_depth=10.0)
|
||||
assert all(0.0 <= v <= 10.0 for row in grid for v in row)
|
||||
assert any(v > 0 for row in grid for v in row)
|
||||
Reference in New Issue
Block a user