示例#1
0
        public void GeoCompositeRegion_Bounds()
        {
            var comp = new GeoCompositeRegion(
                new GeoRegion[] {
                new GeoRectangle(30, 30, 0, 0),
                new GeoRectangle(15, 15, -15, -15)
            });

            Assert.AreEqual(new GeoRectangle(30, 30, -15, -15), comp.Bounds);

            // Verify that the bounds are restored after serialization.

            comp = new GeoCompositeRegion(comp.ToString());
            Assert.AreEqual(new GeoRectangle(30, 30, -15, -15), comp.Bounds);
        }
示例#2
0
        public void GeoCompositeRegion_Serialize()
        {
            GeoCompositeRegion comp;
            GeoPolygon         poly;

            // Test additive regions only

            comp = new GeoCompositeRegion(
                new GeoRegion[] {
                new GeoRectangle(30, 30, -30, -30),
                new GeoCircle(0, 0, 20, GeoHelper.EarthRadiusMiles),
                new GeoPolygon(
                    new GeoCoordinate[] {
                    new GeoCoordinate(0, 0),
                    new GeoCoordinate(20, 20),
                    new GeoCoordinate(0, 30)
                })
            });

            comp = (GeoCompositeRegion)GeoRegion.Parse(comp.ToString());

            Assert.AreEqual(3, comp.AdditiveRegions.Count);
            Assert.IsTrue(new GeoRectangle(30, 30, -30, -30) == (GeoRectangle)comp.AdditiveRegions[0]);
            Assert.IsTrue(new GeoCircle(0, 0, 20, GeoHelper.EarthRadiusMiles) == (GeoCircle)comp.AdditiveRegions[1]);

            poly = (GeoPolygon)comp.AdditiveRegions[2];
            Assert.AreEqual(3, poly.Vertices.Count);
            Assert.AreEqual(new GeoCoordinate(0, 0), poly.Vertices[0]);
            Assert.AreEqual(new GeoCoordinate(20, 20), poly.Vertices[1]);
            Assert.AreEqual(new GeoCoordinate(0, 30), poly.Vertices[2]);

            Assert.IsNull(comp.SubtractiveRegions);

            // Test additive and subtractive regions

            comp = new GeoCompositeRegion(
                new GeoRegion[] {
                new GeoRectangle(10, 10, 0, 0)
            },
                new GeoRegion[] {
                new GeoRectangle(30, 30, -30, -30),
                new GeoCircle(0, 0, 20, GeoHelper.EarthRadiusMiles),
                new GeoPolygon(
                    new GeoCoordinate[] {
                    new GeoCoordinate(0, 0),
                    new GeoCoordinate(20, 20),
                    new GeoCoordinate(0, 30)
                })
            });

            comp = (GeoCompositeRegion)GeoRegion.Parse(comp.ToString());

            Assert.AreEqual(1, comp.AdditiveRegions.Count);
            Assert.IsTrue(new GeoRectangle(10, 10, 0, 0) == (GeoRectangle)comp.AdditiveRegions[0]);

            Assert.AreEqual(3, comp.SubtractiveRegions.Count);
            Assert.IsTrue(new GeoRectangle(30, 30, -30, -30) == (GeoRectangle)comp.SubtractiveRegions[0]);
            Assert.IsTrue(new GeoCircle(0, 0, 20, GeoHelper.EarthRadiusMiles) == (GeoCircle)comp.SubtractiveRegions[1]);

            poly = (GeoPolygon)comp.SubtractiveRegions[2];
            Assert.AreEqual(3, poly.Vertices.Count);
            Assert.AreEqual(new GeoCoordinate(0, 0), poly.Vertices[0]);
            Assert.AreEqual(new GeoCoordinate(20, 20), poly.Vertices[1]);
            Assert.AreEqual(new GeoCoordinate(0, 30), poly.Vertices[2]);
        }