Index: Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingInputSynchronizerTest.cs =================================================================== diff -u -rc0a3ced404197fd781c6fcbcfc21c6676592be57 -r8b85f978c7bbe5c29a6ada6509f14d0462b8b9c3 --- Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingInputSynchronizerTest.cs (.../PipingInputSynchronizerTest.cs) (revision c0a3ced404197fd781c6fcbcfc21c6676592be57) +++ Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingInputSynchronizerTest.cs (.../PipingInputSynchronizerTest.cs) (revision 8b85f978c7bbe5c29a6ada6509f14d0462b8b9c3) @@ -1,5 +1,4 @@ using System; -using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Base.Geometry; using Core.Common.TestUtil; @@ -186,26 +185,34 @@ PipingInputSynchronizer.Synchronize(input); // Call - input.NotifyObservers(); + Action call = () => input.NotifyObservers(); // Assert + TestHelper.AssertLogMessagesCount(call, 0); Assert.IsNaN(input.ThicknessAquiferLayer.Mean); Assert.IsNaN(input.ThicknessCoverageLayer.Mean); } [Test] [TestCase(1e-6)] [TestCase(1)] - public void NotifyObservers_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessAquiferLayerNaN(double deltaAboveSurfaceLine) + public void NotifyObservers_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessCoverageLayerNaNAndLog(double deltaAboveSurfaceLine) { // Setup var input = CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); PipingInputSynchronizer.Synchronize(input); // Call - input.NotifyObservers(); + Action call = () => input.NotifyObservers(); // Assert + var messages = new[] + { + Properties.Resources.PipingInputSynchronizer_UpdateThicknessAquiferLayer_Cannot_determine_thickness_aquifer_layer, + Properties.Resources.PipingInputSynchronizer_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer + }; + TestHelper.AssertLogMessagesAreGenerated(call, messages, 2); + Assert.IsNaN(input.ThicknessCoverageLayer.Mean); Assert.IsNaN(input.ThicknessAquiferLayer.Mean); } @@ -231,57 +238,57 @@ var input = CreateInputWithAquiferAndCoverageLayer(); input.ExitPointL = (RoundedDouble)double.NaN; PipingInputSynchronizer.Synchronize(input); - + // Call - input.NotifyObservers(); + Action call = () => input.NotifyObservers(); // Assert + TestHelper.AssertLogMessagesCount(call, 0); Assert.IsNaN(input.ThicknessAquiferLayer.Mean); } [Test] - public void NotifyObservers_MeanSetSoilProfileSetToNull_ThicknessCoverageLayerNaN() + public void NotifyObservers_MeanSetExitPointSetBeyondSurfaceLine_ThicknessAquiferLayerNaNAndLog() { // Setup var input = CreateInputWithAquiferAndCoverageLayer(); + input.ExitPointL = (RoundedDouble)3.0; PipingInputSynchronizer.Synchronize(input); - input.ThicknessCoverageLayer.Mean = new RoundedDouble(2, new Random(21).NextDouble() + 1); // Call - input.SoilProfile= null; - input.NotifyObservers(); + Action call = () => input.NotifyObservers(); // Assert + var messages = new[] + { + Properties.Resources.PipingInputSynchronizer_UpdateThicknessAquiferLayer_Cannot_determine_thickness_aquifer_layer, + Properties.Resources.PipingInputSynchronizer_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer + }; + TestHelper.AssertLogMessagesAreGenerated(call, messages, 2); Assert.IsNaN(input.ThicknessCoverageLayer.Mean); + Assert.IsNaN(input.ThicknessAquiferLayer.Mean); } [Test] - public void NotifyObservers_AquiferLayerThicknessZero_ThicknessCoverageLayerNaN() + public void NotifyObservers_MeanSetSoilProfileSetToNull_ThicknessCoverageLayerNaN() { // Setup var input = CreateInputWithAquiferAndCoverageLayer(); PipingInputSynchronizer.Synchronize(input); - input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[] - { - new PipingSoilLayer(2.0) - { - IsAquifer = true - }, - new PipingSoilLayer(2.0) - { - IsAquifer = false - } - }); + input.ThicknessCoverageLayer.Mean = new RoundedDouble(2, new Random(21).NextDouble() + 1); + input.SoilProfile = null; + // Call - input.NotifyObservers(); + Action call = () => input.NotifyObservers(); // Assert + TestHelper.AssertLogMessagesCount(call, 0); Assert.IsNaN(input.ThicknessCoverageLayer.Mean); } [Test] - public void NotifyObservers_ProfileWithoutAquiferLayer_ThicknessCoverageLayerNaN() + public void NotifyObservers_ProfileWithoutAquiferLayer_ThicknessCoverageLayerNaNAndLog() { // Setup var input = CreateInputWithAquiferAndCoverageLayer(); @@ -295,10 +302,17 @@ }); // Call - input.NotifyObservers(); + Action call = () => input.NotifyObservers(); // Assert + var messages = new[] + { + Properties.Resources.PipingInputSynchronizer_UpdateThicknessAquiferLayer_Cannot_determine_thickness_aquifer_layer, + Properties.Resources.PipingInputSynchronizer_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer + }; + TestHelper.AssertLogMessagesAreGenerated(call, messages, 2); Assert.IsNaN(input.ThicknessCoverageLayer.Mean); + Assert.IsNaN(input.ThicknessAquiferLayer.Mean); } [Test] @@ -316,54 +330,65 @@ } [Test] - [TestCase(1e-6)] - [TestCase(1)] - public void SetSoilProfile_SoilProfileSingleAquiferAboveSurfaceLine_ThicknessAquiferLayerNaN(double deltaAboveSurfaceLine) + public void NotifyObservers_SoilProfileMultipleAquiferUnderSurfaceLine_MeanSetToTopAquiferThickness() { // Setup - var input = CreateInputWithSingleAquiferLayerAboveSurfaceLine(deltaAboveSurfaceLine); + double expectedThickness; + var input = CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out expectedThickness); PipingInputSynchronizer.Synchronize(input); // Call input.NotifyObservers(); // Assert - Assert.IsNaN(input.ThicknessAquiferLayer.Mean); + Assert.AreEqual(expectedThickness, input.ThicknessAquiferLayer.Mean, 1e-8); } [Test] - public void SetSoilProfile_SoilProfileMultipleAquiferUnderSurfaceLine_MeanSetToTopAquiferThickness() + public void NotifyObservers_MeanSetSoilProfileSetToNull_ThicknessAquiferLayerNaN() { // Setup - double expectedThickness; - var input = CreateInputWithMultipleAquiferLayersUnderSurfaceLine(out expectedThickness); + var input = CreateInputWithAquiferAndCoverageLayer(); PipingInputSynchronizer.Synchronize(input); + input.SoilProfile = null; + // Call input.NotifyObservers(); // Assert - Assert.AreEqual(expectedThickness, input.ThicknessAquiferLayer.Mean, 1e-8); + Assert.IsNaN(input.ThicknessAquiferLayer.Mean); } [Test] - public void SetSoilProfile_MeanSetSoilProfileSetToNull_ThicknessAquiferLayerNaN() + public void NotifyObservers_InputResultsInZeroAquiferThickness_ThicknessAquiferLayerNaNAndLog() { // Setup var input = CreateInputWithAquiferAndCoverageLayer(); PipingInputSynchronizer.Synchronize(input); + input.SoilProfile = new PipingSoilProfile(String.Empty, 0, new[] + { + new PipingSoilLayer(2.0) + { + IsAquifer = false + }, + new PipingSoilLayer(0.0) + { + IsAquifer = true + } + }); - input.SoilProfile = null; - // Call - input.NotifyObservers(); + Action call = () => input.NotifyObservers(); // Assert + var message = Properties.Resources.PipingInputSynchronizer_UpdateThicknessAquiferLayer_Cannot_determine_thickness_aquifer_layer; + TestHelper.AssertLogMessageIsGenerated(call, message, 1); Assert.IsNaN(input.ThicknessAquiferLayer.Mean); } [Test] - public void SetSoilProfile_InputResultsInZeroThickness_ThicknessAquiferLayerNaN() + public void NotifyObservers_InputResultsInZeroCoverageThickness_ThicknessCoverageLayerNaNAndLog() { // Setup var input = CreateInputWithAquiferAndCoverageLayer(); @@ -374,21 +399,23 @@ { IsAquifer = false }, - new PipingSoilLayer(0.0) + new PipingSoilLayer(2.0) { IsAquifer = true } }); // Call - input.NotifyObservers(); + Action call = () => input.NotifyObservers(); // Assert - Assert.IsNaN(input.ThicknessAquiferLayer.Mean); + var message = Properties.Resources.PipingInputSynchronizer_UpdateThicknessCoverageLayer_Cannot_determine_thickness_coverage_layer; + TestHelper.AssertLogMessageIsGenerated(call, message, 1); + Assert.IsNaN(input.ThicknessCoverageLayer.Mean); } [Test] - public void SetSoilProfile_SurfaceLineHalfWayProfileLayer_ThicknessSetToLayerHeightUnderSurfaceLine() + public void NotifyObservers_SurfaceLineHalfWayProfileLayer_ThicknessSetToLayerHeightUnderSurfaceLine() { // Setup var input = CreateInputWithAquiferAndCoverageLayer(); @@ -451,13 +478,17 @@ }); var soilProfile = new PipingSoilProfile(String.Empty, 0, new[] { - new PipingSoilLayer(surfaceLineTopLevel + deltaAboveSurfaceLine) + new PipingSoilLayer(surfaceLineTopLevel + deltaAboveSurfaceLine + 2) { IsAquifer = false }, new PipingSoilLayer(surfaceLineTopLevel + deltaAboveSurfaceLine + 1) { IsAquifer = true + }, + new PipingSoilLayer(surfaceLineTopLevel + deltaAboveSurfaceLine) + { + IsAquifer = false } }); var input = new PipingInput(new GeneralPipingInput())