using FluentAssertions; using SatelliteProvider.Common.Configs; using SatelliteProvider.Services.TileDownloader; namespace SatelliteProvider.Tests; public class UavTileFilePathTests { [Theory] [InlineData("./tiles", 18, 76800, 50331)] [InlineData("/var/lib/sat/tiles", 16, 12345, 67890)] public void BuildUavTileFilePath_MatchesContract(string root, int zoom, int x, int y) { // Arrange var storage = new StorageConfig { TilesDirectory = root }; // Act var path = UavTileUploadHandler.BuildUavTileFilePath(storage, zoom, x, y); // Assert var expected = Path.Combine(root, "uav", zoom.ToString(), x.ToString(), y + ".jpg"); path.Should().Be(expected, "UAV file paths follow `./tiles/uav/{zoom}/{x}/{y}.jpg` per `uav-tile-upload.md` v1.0.0"); } }