public void QuadTreePoint2DExpansionTest()
        {
            var tree = new QuadTreePoint2D(10, 10);

            var p1 = new Point2D(2, 2);
            var p2 = new Point2D(15, 15);
            var p3 = new Point2D(30, 30);

            tree.AddItems(new[] { p1, p2 });

            Assert.AreEqual(2, tree.ItemCount);
            Assert.AreEqual(5, tree.SectionCount);             // Root + 4 subsections

            tree.AddItem(p3);

            Assert.AreEqual(3, tree.ItemCount);
            Assert.AreEqual(9, tree.SectionCount);
        }
        public void QuadTreePoint2DSubdivisionTest()
        {
            var tree = new QuadTreePoint2D(10, 2);

            var p1 = new Point2D(2, 2);
            var p2 = new Point2D(6, 6);

            tree.AddItems(new[] { p1, p2 });

            Assert.AreEqual(2, tree.ItemCount);
            Assert.AreEqual(1, tree.SectionCount);

            var p3 = new Point2D(7, 7);

            tree.AddItem(p3);

            Assert.AreEqual(3, tree.ItemCount);
            Assert.AreEqual(5, tree.SectionCount);
        }
        public void QuadTreePoint2DInsertionTest()
        {
            var tree = new QuadTreePoint2D(10, 10);

            var p1 = new Point2D(5, 5);

            tree.AddItem(p1);

            Assert.AreEqual(true, tree.HasItem(p1));

            var p2     = new Point2D(0, 0);
            var p3     = new Point2D(10, 10);
            var points = new[] { p2, p3 };

            tree.AddItems(points);

            Assert.AreEqual(3, tree.ItemCount);
            Assert.AreEqual(true, tree.HasItem(p1));
            Assert.AreEqual(true, tree.HasItem(p2));
            Assert.AreEqual(true, tree.HasItem(p3));
            Assert.AreEqual(false, tree.HasItem(new Point2D(1, 0)));
        }