Beispiel #1
0
        public void searchRange()
        {
            //Arrange
            KDNode <Vector2> testTree = new KDVectorNode(null, Dimension.X, new Vector2(5, 6));

            testTree.LeftChild            = new KDVectorNode(testTree, Dimension.Y, new Vector2(3, 3));
            testTree.LeftChild.LeftChild  = new KDVectorNode(testTree.LeftChild, Dimension.X, new Vector2(1, 1));
            testTree.LeftChild.RightChild = new KDVectorNode(testTree.LeftChild, Dimension.X, new Vector2(2, 5));
            testTree.RightChild           = new KDVectorNode(testTree, Dimension.Y, new Vector2(6, 9));
            testTree.RightChild.LeftChild = new KDVectorNode(testTree.RightChild, Dimension.Y, new Vector2(9, 8));

            Vector2        testHouse       = new Vector2(3, 3);
            float          range           = 3;
            List <Vector2> expectedResults = new List <Vector2> {
                new Vector2(3, 3), new Vector2(1, 1), new Vector2(2, 5)
            };

            //Act
            VectorTreeSearcher vts = new VectorTreeSearcher(testTree);
            var returnedValue      = vts.SearchBuildingsWithinDistance(new List <Tuple <Vector2, float> > {
                new Tuple <Vector2, float>(testHouse, range)
            });
            var enumm = returnedValue.GetEnumerator();

            enumm.MoveNext();
            var result = enumm.Current;

            //Assert
            Assert.AreEqual(expectedResults.Count, result.Count());

            foreach (Vector2 resultVector in result)
            {
                Assert.IsTrue(expectedResults.Exists(v => v.X == resultVector.X && v.Y == resultVector.Y));
            }
        }
Beispiel #2
0
        public void CreateTreeTest()
        {
            //Arange
            KDVectorTreeFactory   factory          = new KDVectorTreeFactory();
            IEnumerable <Vector2> specialBuildings = new List <Vector2>()
            {
                new Vector2(5, 6), new Vector2(6, 9), new Vector2(3, 3), new Vector2(9, 8), new Vector2(1, 1), new Vector2(2, 5)
            };
            KDNode <Vector2> expectedTree = new KDVectorNode(null, Dimension.X, new Vector2(5, 6));

            expectedTree.LeftChild            = new KDVectorNode(expectedTree, Dimension.Y, new Vector2(3, 3));
            expectedTree.LeftChild.LeftChild  = new KDVectorNode(expectedTree.LeftChild, Dimension.X, new Vector2(1, 1));
            expectedTree.LeftChild.RightChild = new KDVectorNode(expectedTree.LeftChild, Dimension.X, new Vector2(2, 5));
            expectedTree.RightChild           = new KDVectorNode(expectedTree, Dimension.Y, new Vector2(6, 9));
            expectedTree.RightChild.LeftChild = new KDVectorNode(expectedTree.RightChild, Dimension.Y, new Vector2(9, 8));

            //Act
            KDNode <Vector2> resultTree = factory.CreateTree(specialBuildings);

            //Assert
            checkNode(expectedTree, resultTree);
        }