コード例 #1
0
        public static void Read_XmlDocumentWithTwoEqualSegmentsInInnerLoop_ReturnsLayerGeometryWithExpectedInnerLoop()
        {
            // Setup
            CultureInfo invariantCulture = CultureInfo.InvariantCulture;

            const double point1 = 1.1;
            const double point2 = 2.2;

            string    pointString1 = XmlConvert.ToString(point1);
            string    pointString2 = XmlConvert.ToString(point2);
            XDocument bytes        = GetXmlDocument(
                string.Format(invariantCulture,
                              "<GeometrySurface><OuterLoop/><InnerLoops><GeometryLoop>" +
                              "<CurveList><GeometryCurve>" +
                              "<HeadPoint><X>{0}</X><Y>0.1</Y><Z>{0}</Z></HeadPoint>" +
                              "<EndPoint><X>{1}</X><Y>0.1</Y><Z>{1}</Z></EndPoint>" +
                              "</GeometryCurve><GeometryCurve>" +
                              "<HeadPoint><X>{0}</X><Y>0.1</Y><Z>{0}</Z></HeadPoint>" +
                              "<EndPoint><X>{1}</X><Y>0.1</Y><Z>{1}</Z></EndPoint>" +
                              "</GeometryCurve></CurveList></GeometryLoop></InnerLoops></GeometrySurface>",
                              pointString1, pointString2));

            var reader = new SoilLayer2DGeometryReader();

            // Call
            SoilLayer2DGeometry geometry = reader.Read(bytes);

            // Assert
            Assert.NotNull(geometry);
            Assert.AreEqual(new SoilLayer2DLoop(new[]
            {
                new Segment2D(new Point2D(point1, point1), new Point2D(point2, point2)),
                new Segment2D(new Point2D(point2, point2), new Point2D(point1, point1))
            }), geometry.InnerLoops.ElementAt(0));
        }
コード例 #2
0
        public void Read_NullXmlDocument_ThrowsArgumentNullException()
        {
            // Setup
            var reader = new SoilLayer2DGeometryReader();

            // Call
            TestDelegate test = () => reader.Read((XDocument)null);

            // Assert
            string paramName = Assert.Throws <ArgumentNullException>(test).ParamName;

            Assert.AreEqual("geometry", paramName);
        }
コード例 #3
0
        public void Read_NullByteArray_ThrowsArgumentNullException()
        {
            // Setup
            var reader = new SoilLayer2DGeometryReader();

            // Call
            TestDelegate test = () => reader.Read((byte[])null);

            // Assert
            var exception = TestHelper.AssertThrowsArgumentExceptionAndTestMessage <ArgumentNullException>(test, "De geometrie is leeg.");

            Assert.AreEqual("geometry", exception.ParamName);
        }
コード例 #4
0
        public void Read_XmlDocumentWithoutInnerLoopsTag_ThrowsSoilLayerConversionException()
        {
            // Setup
            XDocument xmlDoc = GetXmlDocument("<GeometrySurface><OuterLoop/></GeometrySurface>");
            var       reader = new SoilLayer2DGeometryReader();

            // Call
            TestDelegate test = () => reader.Read(xmlDoc);

            // Assert
            var exception = Assert.Throws <SoilLayerConversionException>(test);

            Assert.AreEqual("Het XML-document dat de geometrie beschrijft voor de laag is niet geldig.", exception.Message);
        }
コード例 #5
0
        public static void Read_XmlDocumentWithScrambledSegmentsInInnerLoop_ReturnsLayerGeometryWithInnerLoopWithSortedSegments(
            [Values(true, false)] bool firstSegmentInverted,
            [Values(true, false)] bool secondSegmentInverted)
        {
            // Setup
            CultureInfo invariantCulture = CultureInfo.InvariantCulture;

            double       point1 = firstSegmentInverted ? 2.2 : 1.1;
            double       point2 = firstSegmentInverted ? 1.1 : 2.2;
            double       point3 = secondSegmentInverted ? 3.3 : 2.2;
            double       point4 = secondSegmentInverted ? 2.2 : 3.3;
            const double point5 = 3.3;
            const double point6 = 1.1;

            string pointString1 = XmlConvert.ToString(point1);
            string pointString2 = XmlConvert.ToString(point2);
            string pointString3 = XmlConvert.ToString(point3);
            string pointString4 = XmlConvert.ToString(point4);
            string pointString5 = XmlConvert.ToString(point5);
            string pointString6 = XmlConvert.ToString(point6);

            XDocument bytes = GetXmlDocument(
                string.Format(invariantCulture,
                              "<GeometrySurface><OuterLoop/><InnerLoops><GeometryLoop>" +
                              "<CurveList><GeometryCurve>" +
                              "<HeadPoint><X>{0}</X><Y>0.1</Y><Z>{0}</Z></HeadPoint>" +
                              "<EndPoint><X>{1}</X><Y>0.1</Y><Z>{1}</Z></EndPoint>" +
                              "</GeometryCurve><GeometryCurve>" +
                              "<HeadPoint><X>{2}</X><Y>0.1</Y><Z>{2}</Z></HeadPoint>" +
                              "<EndPoint><X>{3}</X><Y>0.1</Y><Z>{3}</Z></EndPoint>" +
                              "</GeometryCurve><GeometryCurve>" +
                              "<HeadPoint><X>{4}</X><Y>0.1</Y><Z>{4}</Z></HeadPoint>" +
                              "<EndPoint><X>{5}</X><Y>0.1</Y><Z>{5}</Z></EndPoint>" +
                              "</GeometryCurve></CurveList></GeometryLoop></InnerLoops></GeometrySurface>",
                              pointString1, pointString2, pointString3, pointString4, pointString5, pointString6));

            var reader = new SoilLayer2DGeometryReader();

            // Call
            SoilLayer2DGeometry geometry = reader.Read(bytes);

            // Assert
            Assert.NotNull(geometry);
            Assert.AreEqual(new SoilLayer2DLoop(new[]
            {
                new Segment2D(new Point2D(1.1, 1.1), new Point2D(2.2, 2.2)),
                new Segment2D(new Point2D(2.2, 2.2), new Point2D(3.3, 3.3)),
                new Segment2D(new Point2D(3.3, 3.3), new Point2D(1.1, 1.1))
            }), geometry.InnerLoops.ElementAt(0));
        }
コード例 #6
0
        public void Read_XmlDocumentWithEmptyInnerLoopsAndEmptyOuterLoop_ReturnsLayerGeometryWithoutInnerLoopsAndWithEmptyOuterLoop()
        {
            // Setup
            XDocument xmlDoc = GetXmlDocument("<GeometrySurface><OuterLoop/><InnerLoops/></GeometrySurface>");
            var       reader = new SoilLayer2DGeometryReader();

            // Call
            SoilLayer2DGeometry geometry = reader.Read(xmlDoc);

            // Assert
            Assert.NotNull(geometry);
            CollectionAssert.IsEmpty(geometry.OuterLoop.Segments);
            Assert.AreEqual(0, geometry.InnerLoops.Count());
        }
コード例 #7
0
        public void Read_XmlDocumentNoEndPoint_ThrowsSoilLayerConversionException()
        {
            // Setup
            XDocument xmlDoc = GetXmlDocument(
                "<GeometrySurface><InnerLoops><InnerLoop><GeometryCurve>" +
                "<HeadPoint><X>0</X><Y>0.1</Y><Z>1.1</Z></HeadPoint>" +
                "</GeometryCurve></InnerLoop></InnerLoops></GeometrySurface>");
            var reader = new SoilLayer2DGeometryReader();

            // Call
            TestDelegate test = () => reader.Read(xmlDoc);

            // Assert
            var exception = Assert.Throws <SoilLayerConversionException>(test);

            Assert.AreEqual("Het XML-document dat de geometrie beschrijft voor de laag is niet geldig.", exception.Message);
        }
コード例 #8
0
        public void Read_XmlDocumentWithOverflowingPointCoordinate_ThrowsSoilLayerConversionException()
        {
            // Setup
            XDocument xmlDoc = GetXmlDocument(
                "<GeometrySurface><OuterLoop><CurveList><GeometryCurve>" +
                $"<HeadPoint><X>{double.MaxValue}</X><Z>1.2</Z></HeadPoint>" +
                "<EndPoint><X>1.2</X><Z>1.2</Z></EndPoint>" +
                "</GeometryCurve></CurveList></OuterLoop><InnerLoops/></GeometrySurface>");
            var reader = new SoilLayer2DGeometryReader();

            // Call
            TestDelegate test = () => reader.Read(xmlDoc);

            // Assert
            var exception = Assert.Throws <SoilLayerConversionException>(test);

            Assert.AreEqual("Coördinaat van een punt bevat ongeldige waarde.", exception.Message);
        }
コード例 #9
0
        public void Read_XmlDocumentWithOneSegment_ThrowsSoilLayerConversionException()
        {
            // Setup
            XDocument xmlDoc = GetXmlDocument(
                "<GeometrySurface><OuterLoop><CurveList>" +
                "<GeometryCurve>" +
                "<HeadPoint><X>0</X><Y>0</Y><Z>1.25</Z></HeadPoint><EndPoint><X>111</X><Y>0</Y><Z>1.25</Z></EndPoint>" +
                "</GeometryCurve>" +
                "</CurveList></OuterLoop><InnerLoops/></GeometrySurface>");

            var reader = new SoilLayer2DGeometryReader();

            // Call
            TestDelegate test = () => reader.Read(xmlDoc);

            // Assert
            var exception = Assert.Throws <SoilLayerConversionException>(test);

            Assert.AreEqual("De segmenten van de geometrie van de laag vormen geen lus.", exception.Message);
        }
コード例 #10
0
        public static void Read_XmlDocumentWithSegmentsInInnerLoopThatAreNotConnected_ThrowsSoilLayerConversionException()
        {
            // Setup
            CultureInfo invariantCulture = CultureInfo.InvariantCulture;

            const double point1 = 1.1;
            const double point2 = 2.2;
            const double point3 = 3.3;
            const double point4 = 4.4;

            string pointString1 = XmlConvert.ToString(point1);
            string pointString2 = XmlConvert.ToString(point2);
            string pointString3 = XmlConvert.ToString(point3);
            string pointString4 = XmlConvert.ToString(point4);

            XDocument bytes = GetXmlDocument(
                string.Format(invariantCulture,
                              "<GeometrySurface><OuterLoop/><InnerLoops><GeometryLoop>" +
                              "<CurveList><GeometryCurve>" +
                              "<HeadPoint><X>{0}</X><Y>0.1</Y><Z>{0}</Z></HeadPoint>" +
                              "<EndPoint><X>{1}</X><Y>0.1</Y><Z>{1}</Z></EndPoint>" +
                              "</GeometryCurve><GeometryCurve>" +
                              "<HeadPoint><X>{2}</X><Y>0.1</Y><Z>{2}</Z></HeadPoint>" +
                              "<EndPoint><X>{3}</X><Y>0.1</Y><Z>{3}</Z></EndPoint>" +
                              "</GeometryCurve></CurveList></GeometryLoop></InnerLoops></GeometrySurface>",
                              pointString1, pointString2, pointString3, pointString4));

            var reader = new SoilLayer2DGeometryReader();

            // Call
            TestDelegate test = () => reader.Read(bytes);

            // Assert
            var exception = Assert.Throws <SoilLayerConversionException>(test);

            Assert.AreEqual("De segmenten van de geometrie van de laag vormen geen lus.", exception.Message);
        }