Files
tile-server/tests/TileServer.UnitTests/TileCoordinateTests.cs
T
2026-09-21 03:53:15 +03:00

50 lines
1.4 KiB
C#

using TileServer.Domain;
using TileServer.Domain.Tiles;
namespace TileServer.UnitTests;
public sealed class TileCoordinateTests
{
[Fact]
public void Ancestor_ShiftsToParentZoom()
{
var child = new TileCoordinate(3, 5, 6);
Assert.Equal(new TileCoordinate(1, 1, 1), child.Ancestor(1));
Assert.Equal(child, child.Ancestor(3));
}
[Fact]
public void ToTmsY_FlipsXyzOrigin()
{
var tile = new TileCoordinate(3, 1, 0);
Assert.Equal(7, tile.ToTmsY());
}
[Fact]
public void ClampMaxZoom_CapsAtPlanetilerLimit()
{
Assert.Equal(15, PlanetilerLimits.ClampMaxZoom(18));
Assert.Equal(15, PlanetilerLimits.ClampMaxZoom(15));
Assert.Equal(0, PlanetilerLimits.ClampMaxZoom(-1));
}
[Theory]
[InlineData(0, 0, 0, true)]
[InlineData(1, 2, 0, false)]
[InlineData(-1, 0, 0, false)]
public void IsValid_RespectsZoomBounds(int z, int x, int y, bool expected)
=> Assert.Equal(expected, new TileCoordinate(z, x, y).IsValid);
}
public sealed class ResourceNameTests
{
[Theory]
[InlineData("central-fed-district", true)]
[InlineData("osm-bright", true)]
[InlineData("Dark", false)]
[InlineData("1south", false)]
[InlineData("", false)]
public void IsValid_AcceptsLowercaseIds(string value, bool expected)
=> Assert.Equal(expected, ResourceName.IsValid(value));
}