Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsSoilLayerTransformerTest.cs =================================================================== diff -u -r7dfc1473ec9b1c4704271d80a1984f35c8752943 -r9cdab8b57c9731d15b8bbcf494fc9ca27fcb5312 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsSoilLayerTransformerTest.cs (.../MacroStabilityInwardsSoilLayerTransformerTest.cs) (revision 7dfc1473ec9b1c4704271d80a1984f35c8752943) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsSoilLayerTransformerTest.cs (.../MacroStabilityInwardsSoilLayerTransformerTest.cs) (revision 9cdab8b57c9731d15b8bbcf494fc9ca27fcb5312) @@ -431,8 +431,8 @@ layer.ShearStrengthModel = 1; // Call - TestDelegate call =()=> MacroStabilityInwardsSoilLayerTransformer.Transform(layer); - + TestDelegate call = () => MacroStabilityInwardsSoilLayerTransformer.Transform(layer); + // Assert var exception = Assert.Throws(call); Assert.AreEqual("Er is geen schuifsterkte model opgegeven.", exception.Message); @@ -537,6 +537,19 @@ Assert.Throws(test); } + [Test] + [TestCaseSource(nameof(GetSoilLayerWithInvalidGeometry))] + public void SoilLayer2DTransform_SoilLayer2DWithInvalidLoops_ThrowsImportedDataException(SoilLayer2D soilLayer) + { + // Call + TestDelegate call = () => MacroStabilityInwardsSoilLayerTransformer.Transform(soilLayer); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("De laag bevat een ongeldige geometrie.", exception.Message); + Assert.IsInstanceOf(exception.InnerException); + } + private static void AssertRings(SoilLayer2D soilLayer, MacroStabilityInwardsSoilLayer2D macroStabilityInwardsSoilLayer) { Assert.AreEqual(GetRingFromSegment(soilLayer.OuterLoop), macroStabilityInwardsSoilLayer.OuterRing); @@ -571,6 +584,35 @@ #endregion + #region Test Data: Invalid 2D SoilLayer geometries + + private static IEnumerable GetSoilLayerWithInvalidGeometry() + { + var pointA = new Point2D(0.0, 0.0); + var pointB = new Point2D(1.0, 0.0); + var segmentOne = new Segment2D(pointA, pointB); + var segmentTwo = new Segment2D(pointB, pointA); + + var validGeometry = new[] + { + segmentOne, + segmentTwo + }; + + yield return new TestCaseData(SoilLayer2DTestFactory.CreateSoilLayer2D(new IEnumerable[0], + Enumerable.Empty())) + .SetName("OuterLoop_ContainsNoSegments"); + + yield return new TestCaseData(SoilLayer2DTestFactory.CreateSoilLayer2D(new[] + { + Enumerable.Empty() + }, + validGeometry)) + .SetName("Innerloop_ContainsCollectionWithElementWithNoSegments"); + } + + #endregion + #region Test Data: Shifted Log Normal Distributions private static IEnumerable IncorrectShiftedLogNormalDistributionsSoilLayer1D()