McRogueFace/tests/unit/integration_api_test.py
2026-02-06 16:15:07 -05:00

78 lines
2.4 KiB
Python

# integration_api_test.py - Test Milestone 8 API additions
# Tests: Entity3D.follow_path, .is_moving, .clear_path
# Viewport3D.screen_to_world, .follow
import mcrfpy
import sys
print("Testing Milestone 8 API additions...")
# Create test scene
scene = mcrfpy.Scene("test")
# Create viewport
viewport = mcrfpy.Viewport3D(
pos=(0, 0),
size=(800, 600),
render_resolution=(320, 240),
fov=60.0,
camera_pos=(10.0, 10.0, 10.0),
camera_target=(5.0, 0.0, 5.0)
)
scene.children.append(viewport)
# Set up navigation grid
viewport.set_grid_size(20, 20)
# Create entity
entity = mcrfpy.Entity3D(pos=(5, 5))
viewport.entities.append(entity)
# Test 1: is_moving property (should be False initially)
print(f"Test 1: is_moving = {entity.is_moving}")
assert entity.is_moving == False, "Entity should not be moving initially"
print(" PASS: is_moving is False initially")
# Test 2: follow_path method
path = [(6, 5), (7, 5), (8, 5)]
entity.follow_path(path)
print(f"Test 2: follow_path({path})")
# After follow_path, entity should be moving (or at least have queued moves)
print(f" is_moving after follow_path = {entity.is_moving}")
assert entity.is_moving == True, "Entity should be moving after follow_path"
print(" PASS: follow_path queued movement")
# Test 3: clear_path method
entity.clear_path()
print("Test 3: clear_path()")
print(f" is_moving after clear_path = {entity.is_moving}")
# Note: is_moving may still be True if animation is in progress
print(" PASS: clear_path executed without error")
# Test 4: screen_to_world
world_pos = viewport.screen_to_world(400, 300)
print(f"Test 4: screen_to_world(400, 300) = {world_pos}")
if world_pos is None:
print(" WARNING: screen_to_world returned None (ray missed ground)")
else:
assert len(world_pos) == 3, "Should return (x, y, z) tuple"
print(f" PASS: Got world position {world_pos}")
# Test 5: follow method
viewport.follow(entity, distance=8.0, height=5.0)
print("Test 5: follow(entity, distance=8, height=5)")
cam_pos = viewport.camera_pos
print(f" Camera position after follow: {cam_pos}")
print(" PASS: follow executed without error")
# Test 6: path_to (existing method)
path = entity.path_to(10, 10)
print(f"Test 6: path_to(10, 10) = {path[:3]}..." if len(path) > 3 else f"Test 6: path_to(10, 10) = {path}")
print(" PASS: path_to works")
print()
print("=" * 50)
print("All Milestone 8 API tests PASSED!")
print("=" * 50)
sys.exit(0)