McRogueFace/tests/unit/test_entity3d_viewport.py

44 lines
1.2 KiB
Python
Raw Normal View History

"""Test Entity3D.viewport property (issue #244)"""
import mcrfpy
import sys
errors = []
# Test 1: Detached entity returns None
e = mcrfpy.Entity3D(pos=(0,0), scale=1.0)
if e.viewport is not None:
errors.append("Detached entity viewport should be None")
# Test 2: Attached entity returns Viewport3D
vp = mcrfpy.Viewport3D(pos=(0,0), size=(100,100))
vp.set_grid_size(16, 16)
e2 = mcrfpy.Entity3D(pos=(5,5), scale=1.0)
vp.entities.append(e2)
v = e2.viewport
if v is None:
errors.append("Attached entity viewport should not be None")
elif type(v).__name__ != 'Viewport3D':
errors.append(f"Expected Viewport3D, got {type(v).__name__}")
# Test 3: Viewport properties are accessible
if v is not None:
try:
_ = v.w
_ = v.h
except Exception as ex:
errors.append(f"Viewport properties not accessible: {ex}")
# Test 4: Multiple entities share same viewport
e3 = mcrfpy.Entity3D(pos=(3,3), scale=1.0)
vp.entities.append(e3)
v2 = e3.viewport
if v2 is None:
errors.append("Second entity viewport should not be None")
if errors:
for err in errors:
print(f"FAIL: {err}", file=sys.stderr)
sys.exit(1)
else:
print("PASS: Entity3D.viewport (issue #244)", file=sys.stderr)
sys.exit(0)