Example #1
0
        public void normalizeMultiPolygonAlreadyNormalized()
        {
            GeoCoord[] verts1 =
            {
                new GeoCoord(0, 0),
                new GeoCoord(0, 1),
                new GeoCoord(1, 1)
            };

            LinkedGeo.LinkedGeoLoop outer1 = new LinkedGeo.LinkedGeoLoop();
            Assert.NotNull(outer1);
            createLinkedLoop(ref outer1, verts1.ToList(), 3);

            GeoCoord[] verts2 =
            {
                new GeoCoord(2, 2),
                new GeoCoord(2, 3),
                new GeoCoord(3, 3)
            };

            LinkedGeo.LinkedGeoLoop outer2 = new LinkedGeo.LinkedGeoLoop();
            Assert.NotNull(outer2);
            createLinkedLoop(ref outer2, verts2.ToList(), 3);

            LinkedGeo.LinkedGeoPolygon polygon = new LinkedGeo.LinkedGeoPolygon();
            LinkedGeo.addLinkedLoop(ref polygon, ref outer1);
            LinkedGeo.LinkedGeoPolygon next = LinkedGeo.addNewLinkedPolygon(ref polygon);
            LinkedGeo.addLinkedLoop(ref next, ref outer2);

            // Should be a no-op
            int result = LinkedGeo.normalizeMultiPolygon(ref polygon);

            Assert.True(result == LinkedGeo.NORMALIZATION_ERR_MULTIPLE_POLYGONS,
                        "Expected error code returned");

            Assert.True(LinkedGeo.countLinkedPolygons(ref polygon) == 2, "Polygon count correct");
            Assert.True(LinkedGeo.countLinkedLoops(ref polygon) == 1,
                        "Loop count on first polygon correct");
            Assert.True(polygon.first == outer1, "Got expected outer loop");
            Assert.True(LinkedGeo.countLinkedLoops(ref polygon.next) == 1,
                        "Loop count on second polygon correct");
            Assert.True(polygon.next.first == outer2, "Got expected outer loop");
        }
Example #2
0
        public void createLinkedGeo()
        {
            LinkedGeo.LinkedGeoPolygon polygon = new LinkedGeo.LinkedGeoPolygon();
            LinkedGeo.LinkedGeoLoop    loop    = new LinkedGeo.LinkedGeoLoop();
            LinkedGeo.LinkedGeoCoord   coord   = new LinkedGeo.LinkedGeoCoord();

            loop = LinkedGeo.addNewLinkedLoop(ref polygon);
            Assert.True(loop != null, "Loop created");
            coord = LinkedGeo.addLinkedCoord(ref loop, ref vertex1);
            Assert.True(coord != null, "Coord created");
            coord = LinkedGeo.addLinkedCoord(ref loop, ref vertex2);
            Assert.True(coord != null, "Coord created");
            coord = LinkedGeo.addLinkedCoord(ref loop, ref vertex3);
            Assert.True(coord != null, "Coord created");

            loop = LinkedGeo.addNewLinkedLoop(ref polygon);
            Assert.True(loop != null, "Loop createed");
            coord = LinkedGeo.addLinkedCoord(ref loop, ref vertex2);
            Assert.True(coord != null, "Coord created");
            coord = LinkedGeo.addLinkedCoord(ref loop, ref vertex4);
            Assert.True(coord != null, "Coord created");

            Assert.True(LinkedGeo.countLinkedPolygons(ref polygon) == 1, "Polygon count correct");
            Assert.True(LinkedGeo.countLinkedLoops(ref polygon) == 2, "Loop count correct");
            Assert.True(LinkedGeo.countLinkedCoords(ref polygon.first) == 3,
                        "Coord count 1 correct");
            Assert.True(LinkedGeo.countLinkedCoords(ref polygon.last) == 2,
                        "Coord count 2 correct");

            LinkedGeo.LinkedGeoPolygon nextPolygon = LinkedGeo.addNewLinkedPolygon(ref polygon);
            Assert.True(nextPolygon != null, "polygon created");

            Assert.True(LinkedGeo.countLinkedPolygons(ref polygon) == 2, "Polygon count correct");

            LinkedGeo.destroyLinkedPolygon(ref polygon);
            polygon = null;
        }