using RioJoy.Core.Overlay; using Xunit; namespace RioJoy.Core.Tests.Overlay; /// /// Regression tests over the committed cockpit regions.json extracted from /// riojoy.xcf by tools/XcfRegionExtract. Anchors the extracted geometry and proves /// the asset loads through . /// public class CockpitRegionsTests { private static OverlayTemplate Load() => OverlayTemplateStore.Load(TestRepo.CustomBackground("regions.json")); [Fact] public void Loads_WithExpectedCanvasAndCount() { OverlayTemplate t = Load(); Assert.Equal(2720, t.Width); Assert.Equal(600, t.Height); Assert.Equal(119, t.Regions.Count); } [Fact] public void HasExpectedButtonCell() { OverlayRegion? b00 = Load().FindRegion("b-00"); Assert.NotNull(b00); Assert.Equal(2558, b00!.X, 6); Assert.Equal(428, b00.Y, 6); Assert.Equal(153, b00.Width, 6); Assert.Equal(53, b00.Height, 6); Assert.Equal(45, b00.FontSizePx, 6); Assert.Equal("Sans", b00.FontFamily); } [Fact] public void IncludesNamedControlLabels() { OverlayTemplate t = Load(); Assert.NotNull(t.FindRegion("Throttle")); Assert.NotNull(t.FindRegion("Trigger")); Assert.NotNull(t.FindRegion("HatUp")); } [Fact] public void VerticalCells_AreTaggedCcw90() { OverlayTemplate t = Load(); Assert.Equal(90.0, t.FindRegion("a-00")!.RotationDegrees); Assert.Equal(90.0, t.FindRegion("b-10")!.RotationDegrees); Assert.Equal(90.0, t.FindRegion("b-1F")!.RotationDegrees); Assert.Null(t.FindRegion("b-00")!.RotationDegrees); // a normal upright cell } [Fact] public void AllRegionsLieWithinCanvas() { OverlayTemplate t = Load(); Assert.All(t.Regions, r => { Assert.True(r.X >= 0 && r.Y >= 0, $"{r.Name} has negative offset"); Assert.True(r.X + r.Width <= t.Width, $"{r.Name} overflows width"); Assert.True(r.Y + r.Height <= t.Height, $"{r.Name} overflows height"); }); } }