Files
RobustToolbox/Robust.Shared.Tests/Physics/B2DynamicTree_Test.cs
PJB3005 788e9386fd Split up test project
Robust.UnitTesting was both ALL tests for RT, and also API surface for content tests.

Tests are now split into separate projects as appropriate, and the API side has also been split off.
2025-12-16 01:36:53 +01:00

71 lines
2.3 KiB
C#

using System.Numerics;
using NUnit.Framework;
using Robust.Shared.Maths;
using Robust.Shared.Physics;
namespace Robust.Shared.Tests.Physics
{
[TestFixture]
[TestOf(typeof(B2DynamicTree<>))]
internal sealed class B2DynamicTree_Test
{
private static Box2[] aabbs1 =
{
((Box2) default).Enlarged(1), //2x2 square
((Box2) default).Enlarged(2), //4x4 square
new(-3, 3, -3, 3), // point off to the bottom left
new(-3, -3, -3, -3), // point off to the top left
new(3, 3, 3, 3), // point off to the bottom right
new(3, -3, 3, -3), // point off to the top right
((Box2) default).Enlarged(1), //2x2 square
((Box2) default).Enlarged(2), //4x4 square
((Box2) default).Enlarged(1), //2x2 square
((Box2) default).Enlarged(2), //4x4 square
((Box2) default).Enlarged(1), //2x2 square
((Box2) default).Enlarged(2), //4x4 square
((Box2) default).Enlarged(1), //2x2 square
((Box2) default).Enlarged(2), //4x4 square
((Box2) default).Enlarged(3), //6x6 square
new(-3, 3, -3, 3), // point off to the bottom left
new(-3, -3, -3, -3), // point off to the top left
new(3, 3, 3, 3), // point off to the bottom right
new(3, -3, 3, -3), // point off to the top right
};
[Test]
public void AddAndQuery()
{
var dt = new B2DynamicTree<int>();
for (var i = 0; i < aabbs1.Length; ++i)
{
dt.CreateProxy(aabbs1[i], uint.MaxValue, i);
}
var point = new Vector2(0, 0);
var box2 = Box2.CenteredAround(point, new Vector2(0.1f, 0.1f));
var results = new HashSet<int>();
dt.Query(proxy =>
{
results.Add(dt.GetUserData(proxy));
return true;
}, box2);
Assert.Multiple(() =>
{
for (var i = 0; i < aabbs1.Length; i++)
{
var aabb = aabbs1[i];
if (aabb.Intersects(box2))
{
Assert.That(results, Does.Contain(i));
}
}
});
}
}
}