示例#1
0
        public void Constructor_ExteriorRing_CreatesPolygonWithExteriorBoundary()
        {
            Polygon target = new Polygon(_exteriorRing3D);

            Assert.Equal(SRIDList.WSG84, target.Srid);
            Assert.Same(_exteriorRing3D, target.ExteriorRing);

            Assert.NotNull(target.InteriorRings);
            Assert.Empty(target.InteriorRings);
        }
示例#2
0
        public void Constructor_SRIDExteriorRingInteriorRings_CreatesPolygonWithExteriorBoundary()
        {
            int srid = 1;
            Polygon target = new Polygon(srid, _exteriorRing3D, _interiorRings3D);

            Assert.Equal(srid, target.Srid);

            Assert.NotNull(target.ExteriorRing);
            Assert.Same(_exteriorRing3D, target.ExteriorRing);

            CheckInteriorRings(target, _interiorRings3D);
        }
示例#3
0
        public void Constructor_SRID_CreatesEmptyPolygonWithCustomSRID()
        {
            int srid = 1;
            Polygon target = new Polygon(srid);

            Assert.Equal(srid, target.Srid);

            Assert.NotNull(target.ExteriorRing);
            Assert.Empty(target.ExteriorRing);

            Assert.NotNull(target.InteriorRings);
            Assert.Empty(target.InteriorRings);
        }
        public void ComputeArea_IPolygon_ReturnsAreaOfSimplePolygonCalculatedByIDimensionsCalculator()
        {
            Polygon polygon = new Polygon(new CoordinateList());
            Random generator = new Random();
            double expectedArea = generator.Next(100);

            Mock<IDimensionsCalculator> calculatorM = new Mock<IDimensionsCalculator>();
            calculatorM.Setup(calc => calc.CalculateArea(polygon.ExteriorRing)).Returns(expectedArea);
            Measurements target = new Measurements(calculatorM.Object);

            double area = target.ComputeArea(polygon);

            Assert.Equal(expectedArea, area);
        }
        public void ComputeArea_IMultiPolygon_ReturnsSumOfPolygonAreas()
        {
            Random generator = new Random();

            Polygon polygon = new Polygon(new CoordinateList());
            double polygonArea = generator.Next(100);
            MultiPolygon multipolygon = new MultiPolygon(new Polygon[] { polygon, polygon });

            Mock<IDimensionsCalculator> calculatorM = new Mock<IDimensionsCalculator>();
            calculatorM.Setup(calc => calc.CalculateArea(polygon.ExteriorRing)).Returns(() => polygonArea);

            Measurements target = new Measurements(calculatorM.Object);

            double area = target.ComputeArea(multipolygon);

            Assert.Equal(2 * polygonArea, area);
        }
        public void ComputeArea_IPolygon_ReturnsAreaOfPolygonWithoutHolesCalculatedByIDimensionsCalculator()
        {
            Random generator = new Random();

            Polygon polygon = new Polygon(new CoordinateList());
            polygon.InteriorRings.Add(new CoordinateList());

            double exteriorArea = generator.Next(100) + 10;
            double interiorArea = generator.Next(10);

            Mock<IDimensionsCalculator> calculatorM = new Mock<IDimensionsCalculator>();
            calculatorM.Setup(calc => calc.CalculateArea(polygon.ExteriorRing)).Returns(exteriorArea);
            calculatorM.Setup(calc => calc.CalculateArea(polygon.InteriorRings[0])).Returns(interiorArea);

            Measurements target = new Measurements(calculatorM.Object);

            double area = target.ComputeArea(polygon);

            Assert.Equal(exteriorArea - interiorArea, area);
        }
示例#7
0
 private void CheckInteriorRings(Polygon target, CoordinateList[] expected)
 {
     Assert.Equal(expected.Length, target.InteriorRings.Count);
     for (int i = 0; i < expected.Length; i++) {
         Assert.Same(expected[i], target.InteriorRings[i]);
     }
 }
示例#8
0
        public void IsMeasured_ReturnsTrueForMeasuredExteriorRing()
        {
            Polygon target = new Polygon(new CoordinateList(_coordinatesXYZM));

            Assert.True(target.IsMeasured);
        }
示例#9
0
        public void Write_WritesComplexPolygonWitOuterAndInnerRings()
        {
            string wkt = "polygon zm ((-10.1 15.5 100.5 1000.5, 20.2 -25.5 200.5 2000.5, 30.3 35.5 -300.5 -3000.5),(-1.1 1.5 10.5 100.5, 2.2 -2.5 20.5 200.5, 3.3 3.5 -30.5 -300.5),(-1.1 1.5 10.5 100.5, 2.2 -2.5 20.5 200.5, 3.3 3.5 -30.5 -300.5))";
            Polygon polygon = new Polygon(new CoordinateList(_coordinatesXYZM));
            polygon.InteriorRings.Add(new CoordinateList(_coordinates2XYZM));
            polygon.InteriorRings.Add(new CoordinateList(_coordinates2XYZM));

            this.TestWriteGeometry(polygon, wkt);
        }
示例#10
0
        public void Is3D_ReturnsTrueFor3DExteriorRing()
        {
            Polygon target = new Polygon(_exteriorRing3D);

            Assert.True(target.Is3D);
        }
示例#11
0
        public void Is3D_ReturnsFalseForEmptyPolygon()
        {
            Polygon target = new Polygon();

            Assert.False(target.Is3D);
        }
示例#12
0
        public void Is3D_ReturnsFalseFor2DExteriorRing()
        {
            Polygon target = new Polygon(new CoordinateList(_coordinatesXY));

            Assert.False(target.Is3D);
        }
示例#13
0
        public void GetEnvelope_ReturnsEmptyEnvelopeForEmptyPolygon()
        {
            Polygon target = new Polygon();
            double x = double.NaN;
            bool test = x == double.NaN;
            Envelope envelope = target.GetEnvelope();

            Assert.Equal(Envelope.Empty, envelope);
        }
示例#14
0
        public void GetEnvelopeReturnsEnvelopeOfLineString()
        {
            Envelope expectedEnvelope = new Envelope(_coordinatesXYZ);

            Polygon target = new Polygon(_exteriorRing3D);
            Envelope envelope = target.GetEnvelope();

            Assert.Equal(expectedEnvelope, envelope);
        }
示例#15
0
        public void GetBoundary_ReturnsMultiLineStringWithExteriorAndInteriorRingsAndCorrectSRID()
        {
            int srid = 1;
            Polygon target = new Polygon(srid, _exteriorRing3D, _interiorRings3D);
            IMultiLineString boundary = target.GetBoundary() as IMultiLineString;

            Assert.NotNull(boundary);
            Assert.Equal(srid, boundary.Srid);
        }
示例#16
0
        public void Constructor__CreatesEmptyPolygonAndInitializesProperties()
        {
            Polygon target = new Polygon();

            Assert.Equal(SRIDList.WSG84, target.Srid);

            Assert.NotNull(target.ExteriorRing);
            Assert.Empty(target.ExteriorRing);

            Assert.NotNull(target.InteriorRings);
            Assert.Empty(target.InteriorRings);
        }
示例#17
0
        private void ComparePolygons(Polygon polygon, Polygon expected)
        {
            this.CompareCoordinateLists(polygon.ExteriorRing, expected.ExteriorRing);

            Assert.Equal(expected.InteriorRings.Count, polygon.InteriorRings.Count);
            for (int i = 0; i < expected.InteriorRings.Count; i++) {
                this.CompareCoordinateLists(polygon.InteriorRings[i], expected.InteriorRings[i]);
            }
        }
示例#18
0
        public void IsMeasured_ReturnsFalseForEmptyPolygon()
        {
            Polygon target = new Polygon();

            Assert.False(target.IsMeasured);
        }
示例#19
0
 public void Write_WritesPolygonsOfAllDimensions(Polygon toWrite, string expectedWkt)
 {
     this.TestWriteGeometry(toWrite, expectedWkt);
 }
示例#20
0
        public void IsMeasured_ReturnsFalseForNonMeasuredExteriorRing()
        {
            Polygon target = new Polygon(new CoordinateList(_coordinatesXYZ));

            Assert.False(target.IsMeasured);
        }