from engine.camera import OrthoCamera def test_zoom_defaults_target_to_initial_tiles_visible_y(): camera = OrthoCamera(800, 600, tiles_visible_y=12.0) assert camera.target_tiles_visible_y == 12.0 def test_set_zoom_target_does_not_snap_immediately(): camera = OrthoCamera(800, 600, tiles_visible_y=12.0) camera.set_zoom_target(20.0) assert camera.tiles_visible_y == 12.0 assert camera.target_tiles_visible_y == 20.0 def test_update_zoom_moves_toward_the_target_over_time(): camera = OrthoCamera(800, 600, tiles_visible_y=12.0) camera.set_zoom_target(20.0) camera.update_zoom(dt=0.1) assert 12.0 < camera.tiles_visible_y < 20.0 def test_update_zoom_snaps_once_close_enough(): camera = OrthoCamera(800, 600, tiles_visible_y=12.0) camera.set_zoom_target(20.0) for _ in range(100): camera.update_zoom(dt=0.1) assert camera.tiles_visible_y == 20.0 def test_update_zoom_can_zoom_back_in(): camera = OrthoCamera(800, 600, tiles_visible_y=20.0) camera.set_zoom_target(12.0) camera.update_zoom(dt=0.1) assert 12.0 < camera.tiles_visible_y < 20.0