import unittest import tempfile import os from PIL import Image from map_manager.services import OpenStreetMapService from map_manager.tile_manager import MapTileManager class TestTileManagerCacheBehavior(unittest.TestCase): def test_cache_hit_and_placeholder(self): service = OpenStreetMapService() with tempfile.TemporaryDirectory() as td: mgr = MapTileManager(service, cache_root_directory=td, enable_online_tile_fetching=False, tile_pixel_size=64) # Create a cached tile file p = mgr._get_tile_cache_file_path(5, 10, 12) p.parent.mkdir(parents=True, exist_ok=True) img = Image.new("RGB", (64, 64), (255, 0, 0)) img.save(p) # Now get_tile_image should load from cache loaded = mgr.get_tile_image(5, 10, 12) self.assertIsNotNone(loaded) self.assertEqual(loaded.size, (64, 64)) # For a missing tile (cache miss) and online disabled, should return a placeholder image missing = mgr.get_tile_image(6, 11, 13) self.assertIsNotNone(missing) # Placeholder should have expected tile size self.assertEqual(missing.size, (64, 64)) if __name__ == '__main__': unittest.main()