from engine.camera import Camera, CameraMode def test_camera_vertical_default(): """Test default vertical camera.""" cam = Camera() assert cam.mode == CameraMode.FEED assert cam.x == 0 assert cam.y == 0 def test_camera_vertical_factory(): """Test vertical factory method.""" cam = Camera.feed(speed=2.0) assert cam.mode == CameraMode.FEED assert cam.speed == 2.0 def test_camera_horizontal(): """Test horizontal camera.""" cam = Camera.horizontal(speed=1.5) assert cam.mode == CameraMode.HORIZONTAL cam.update(1.0) assert cam.x > 0 def test_camera_omni(): """Test omnidirectional camera.""" cam = Camera.omni(speed=1.0) assert cam.mode == CameraMode.OMNI cam.update(1.0) assert cam.x > 0 assert cam.y > 0 def test_camera_floating(): """Test floating camera with sinusoidal motion.""" cam = Camera.floating(speed=1.0) assert cam.mode == CameraMode.FLOATING y_before = cam.y cam.update(0.5) y_after = cam.y assert y_before != y_after def test_camera_reset(): """Test camera reset.""" cam = Camera.vertical() cam.update(1.0) assert cam.y > 0 cam.reset() assert cam.x == 0 assert cam.y == 0 def test_camera_custom_update(): """Test custom update function.""" call_count = 0 def custom_update(camera, dt): nonlocal call_count call_count += 1 camera.x += int(10 * dt) cam = Camera.custom(custom_update) cam.update(1.0) assert call_count == 1 assert cam.x == 10