using SpatialCollections; using System.Numerics; namespace QuadtreeTests { public class Tests { private class TestEntity(Vector2 position) { public Vector2 Position { get; } = position; } private List _entities; private Quadtree _quadtree; [SetUp] public void Setup() { _entities = [new(new(1.0f, 1.0f)), new(new(3.0f, 3.0f)), new(new(5.0f, 8.0f))]; _quadtree = new(20, 4, e => e.Position); } [Test] public void TestAdd() { AddEntitiesAndAssertCount(); } [Test] public void TestAddRemove() { AddEntitiesAndAssertCount(); for (int i = 0; i < _entities.Count; i++) { _quadtree.Remove(_entities[i]); Assert.That(_quadtree, Has.Count.EqualTo(_entities.Count - i - 1)); } } [Test] public void TestQuery() { AddEntitiesAndAssertCount(); List result = new(); _quadtree.Query(new Rectangle(new Vector2(2.5f, 2.5f), new Vector2(10.0f, 10.0f)), result); Assert.That(result, Has.Count.EqualTo(2)); } private void AddEntitiesAndAssertCount() { for (int i = 0; i < _entities.Count; i++) { _quadtree.Add(_entities[i]); Assert.That(_quadtree, Has.Count.EqualTo(i + 1)); } } } }