acdream/tests/AcDream.App.Tests/UI/UiNineSlicePanelTests.cs
Erik 0bf790c8bf feat(D.2b): UiNineSlicePanel — 8-piece retail window frame + geometry test
Implements the retail floating-window bevel as a UiPanel subclass using
RetailChromeSprites: 4 tiled edges + 4 stretched corners + tiled center fill,
matching the 8-piece border layout confirmed by the D.2b Step-0 prove-out.
Resolver delegate keeps GL out of unit tests. Geometry verified by
ComputeFrameRects_PlacesCornersEdgesAndCenter (1/1 pass).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 16:36:11 +02:00

27 lines
1 KiB
C#

using AcDream.App.UI;
namespace AcDream.App.Tests.UI;
public class UiNineSlicePanelTests
{
[Fact]
public void ComputeFrameRects_PlacesCornersEdgesAndCenter()
{
var r = UiNineSlicePanel.ComputeFrameRects(100, 80, 5);
// 5x5 corners at the four corners
Assert.Equal(new UiNineSlicePanel.Rect(0, 0, 5, 5), r.TL);
Assert.Equal(new UiNineSlicePanel.Rect(95, 0, 5, 5), r.TR);
Assert.Equal(new UiNineSlicePanel.Rect(0, 75, 5, 5), r.BL);
Assert.Equal(new UiNineSlicePanel.Rect(95, 75, 5, 5), r.BR);
// edges span the interior (100-2*5 = 90 wide, 80-2*5 = 70 tall)
Assert.Equal(new UiNineSlicePanel.Rect(5, 0, 90, 5), r.Top);
Assert.Equal(new UiNineSlicePanel.Rect(5, 75, 90, 5), r.Bottom);
Assert.Equal(new UiNineSlicePanel.Rect(0, 5, 5, 70), r.Left);
Assert.Equal(new UiNineSlicePanel.Rect(95, 5, 5, 70), r.Right);
// center fills the interior
Assert.Equal(new UiNineSlicePanel.Rect(5, 5, 90, 70), r.Center);
}
}