feat(render): Phase A8.F — ViewPolygon + CellView clip-region data model
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
bb903bc157
commit
406307e8ee
2 changed files with 123 additions and 0 deletions
52
tests/AcDream.App.Tests/Rendering/PortalViewTests.cs
Normal file
52
tests/AcDream.App.Tests/Rendering/PortalViewTests.cs
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
using System.Numerics;
|
||||
using AcDream.App.Rendering;
|
||||
using Xunit;
|
||||
|
||||
namespace AcDream.App.Tests.Rendering;
|
||||
|
||||
public class PortalViewTests
|
||||
{
|
||||
[Fact]
|
||||
public void ViewPolygon_ComputesBoundingRect()
|
||||
{
|
||||
var p = new ViewPolygon(new[]
|
||||
{
|
||||
new Vector2(-0.5f, -0.25f), new Vector2(0.5f, -0.25f), new Vector2(0.0f, 0.75f),
|
||||
});
|
||||
Assert.Equal(-0.5f, p.MinX, 5);
|
||||
Assert.Equal(0.5f, p.MaxX, 5);
|
||||
Assert.Equal(-0.25f, p.MinY, 5);
|
||||
Assert.Equal(0.75f, p.MaxY, 5);
|
||||
Assert.False(p.IsEmpty);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ViewPolygon_FewerThanThreeVerts_IsEmpty()
|
||||
{
|
||||
Assert.True(new ViewPolygon(new[] { new Vector2(0, 0), new Vector2(1, 0) }).IsEmpty);
|
||||
Assert.True(new ViewPolygon(System.Array.Empty<Vector2>()).IsEmpty);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CellView_FullScreen_CoversNdc()
|
||||
{
|
||||
var v = CellView.FullScreen();
|
||||
Assert.False(v.IsEmpty);
|
||||
Assert.Equal(-1f, v.MinX, 5);
|
||||
Assert.Equal(1f, v.MaxX, 5);
|
||||
Assert.Equal(-1f, v.MinY, 5);
|
||||
Assert.Equal(1f, v.MaxY, 5);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CellView_Add_GrowsUnionBoundsAndIsEmptyTracks()
|
||||
{
|
||||
var v = new CellView();
|
||||
Assert.True(v.IsEmpty);
|
||||
v.Add(new ViewPolygon(new[] { new Vector2(0, 0), new Vector2(0.2f, 0), new Vector2(0, 0.2f) }));
|
||||
v.Add(new ViewPolygon(new[] { new Vector2(-0.3f, -0.3f), new Vector2(-0.1f, -0.3f), new Vector2(-0.1f, -0.1f) }));
|
||||
Assert.False(v.IsEmpty);
|
||||
Assert.Equal(-0.3f, v.MinX, 5);
|
||||
Assert.Equal(0.2f, v.MaxX, 5);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue