Index: Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationServiceTest.cs =================================================================== diff -u -r8905298103eb01ce13dd5c1a2f267f879d4fda3e -r62cd6e02ab9b63a64de1cc9e3a51ab776c7aab67 --- Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationServiceTest.cs (.../PipingCalculationServiceTest.cs) (revision 8905298103eb01ce13dd5c1a2f267f879d4fda3e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationServiceTest.cs (.../PipingCalculationServiceTest.cs) (revision 62cd6e02ab9b63a64de1cc9e3a51ab776c7aab67) @@ -22,6 +22,7 @@ using System; using System.Linq; using Core.Common.Base.Data; +using Core.Common.Base.Geometry; using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.TestUtil; @@ -250,6 +251,46 @@ } [Test] + public void Validate_WithSurfaceLineOneOutOfFourDitchPoints_LogsErrorAndReturnsFalse() + { + // Setup + const string name = ""; + + Point3D[] geometry = testCalculation.InputParameters.SurfaceLine.Points; + var surfaceLineName = "surfaceLineA"; + var surfaceLineMissingCharacteristicPoint = new RingtoetsPipingSurfaceLine + { + Name = surfaceLineName + }; + surfaceLineMissingCharacteristicPoint.SetGeometry(geometry); + surfaceLineMissingCharacteristicPoint.SetDitchDikeSideAt(geometry[2]); + + testCalculation.InputParameters.SurfaceLine = surfaceLineMissingCharacteristicPoint; + testCalculation.InputParameters.ExitPointL = (RoundedDouble) 0.9; + testCalculation.InputParameters.EntryPointL = (RoundedDouble) 0.1; + testCalculation.Name = name; + + // Call + bool isValid = false; + Action call = () => isValid = PipingCalculationService.Validate(testCalculation); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + string[] msgs = messages.ToArray(); + Assert.AreEqual(3, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", name), msgs.First()); + + var expected = string.Format( + "Validatie mislukt: De sloot in de hoogtegeometrie {0} is niet correct. Niet alle 4 punten zijn gedefinieerd of de volgorde is incorrect.", + surfaceLineName); + Assert.AreEqual(expected, msgs[1]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beƫindigd om: ", name), msgs.Last()); + }); + Assert.IsFalse(isValid); + } + + [Test] public void Validate_WithoutStochasticSoilProfile_LogsErrorAndReturnsFalse() { // Setup