Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandler.cs
===================================================================
diff -u -rddad7117cf82255493a1a9f80b2c6562dc88bfd2 -r4d1f9c305a8d9854683ae67395694f72ce248f38
--- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandler.cs (.../ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandler.cs) (revision ddad7117cf82255493a1a9f80b2c6562dc88bfd2)
+++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandler.cs (.../ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandler.cs) (revision 4d1f9c305a8d9854683ae67395694f72ce248f38)
@@ -20,6 +20,7 @@
// All rights reserved.
using System;
+using Core.Common.Gui.Commands;
using Core.Common.Gui.Helpers;
using Riskeer.Common.Forms.ChangeHandlers;
using Riskeer.GrassCoverErosionInwards.Data;
@@ -38,20 +39,43 @@
///
/// The calculation to clear the illustration points for.
/// Object responsible for inquiring confirmation.
+ /// The view commands used to close views for the illustration points.
/// Thrown when any argument is null.
public ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandler(
- GrassCoverErosionInwardsCalculation calculation, IInquiryHelper inquiryHelper)
- : base(calculation, inquiryHelper) {}
+ GrassCoverErosionInwardsCalculation calculation, IInquiryHelper inquiryHelper, IViewCommands viewCommands)
+ : base(calculation, inquiryHelper, viewCommands) {}
public override bool ClearIllustrationPoints()
{
if (GrassCoverErosionInwardsIllustrationPointsHelper.HasIllustrationPoints(Calculation))
{
+ CloseViews();
+
Calculation.ClearIllustrationPoints();
return true;
}
return false;
}
+
+ private void CloseViews()
+ {
+ GrassCoverErosionInwardsOutput output = Calculation.Output;
+
+ if (GrassCoverErosionInwardsIllustrationPointsHelper.HasOverToppingIllustrationPoints(output))
+ {
+ ViewCommands.RemoveAllViewsForItem(output.OvertoppingOutput.GeneralResult);
+ }
+
+ if (GrassCoverErosionInwardsIllustrationPointsHelper.HasDikeHeightOutputWithIllustrationPoints(output))
+ {
+ ViewCommands.RemoveAllViewsForItem(output.DikeHeightOutput.GeneralResult);
+ }
+
+ if (GrassCoverErosionInwardsIllustrationPointsHelper.HasOverToppingRateOutputWithIllustrationPoints(output))
+ {
+ ViewCommands.RemoveAllViewsForItem(output.OvertoppingRateOutput.GeneralResult);
+ }
+ }
}
}
\ No newline at end of file
Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandlerTest.cs
===================================================================
diff -u -rddad7117cf82255493a1a9f80b2c6562dc88bfd2 -r4d1f9c305a8d9854683ae67395694f72ce248f38
--- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandlerTest.cs (.../ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandlerTest.cs) (revision ddad7117cf82255493a1a9f80b2c6562dc88bfd2)
+++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandlerTest.cs (.../ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandlerTest.cs) (revision 4d1f9c305a8d9854683ae67395694f72ce248f38)
@@ -19,8 +19,7 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
-using System;
-using System.Collections.Generic;
+using Core.Common.Gui.Commands;
using Core.Common.Gui.Helpers;
using NUnit.Framework;
using Rhino.Mocks;
@@ -29,91 +28,112 @@
using Riskeer.GrassCoverErosionInwards.Data;
using Riskeer.GrassCoverErosionInwards.Data.TestUtil;
using Riskeer.GrassCoverErosionInwards.Forms.ChangeHandlers;
+using Riskeer.GrassCoverErosionInwards.Util;
namespace Riskeer.GrassCoverErosionInwards.Forms.Test.ChangeHandlers
{
[TestFixture]
public class ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandlerTest
{
[Test]
- public void Constructor_WithArguments_ExpectedValues()
+ public void Constructor_ExpectedValues()
{
// Setup
var mocks = new MockRepository();
var inquiryHelper = mocks.Stub();
+ var viewCommands = mocks.Stub();
mocks.ReplayAll();
var calculation = new GrassCoverErosionInwardsCalculation();
// Call
- var handler = new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandler(calculation, inquiryHelper);
+ var handler = new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandler(
+ calculation, inquiryHelper, viewCommands);
// Assert
Assert.IsInstanceOf>(handler);
mocks.VerifyAll();
}
[Test]
- [TestCaseSource(nameof(GetCalculationConfigurations))]
- public void ClearIllustrationPoints_WithVariousCalculationConfigurations_ClearsIllustrationPointsAndReturnsExpectedResult(
- GrassCoverErosionInwardsCalculation calculation,
- bool expectedResult)
+ public void GivenCalculationWithoutOutput_WhenClearIllustrationPoints_ThenNothingHappensAndReturnFalse()
{
- // Setup
+ // Given
var mocks = new MockRepository();
- var inquiryHelper = mocks.StrictMock();
+ var inquiryHelper = mocks.Stub();
+ var viewCommands = mocks.StrictMock();
mocks.ReplayAll();
- var handler = new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandler(calculation, inquiryHelper);
+ var calculation = new GrassCoverErosionInwardsCalculation();
- // Call
- bool result = handler.ClearIllustrationPoints();
+ var handler = new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandler(
+ calculation, inquiryHelper, viewCommands);
- // Assert
- Assert.AreEqual(expectedResult, result);
+ // When
+ bool isCalculationAffected = handler.ClearIllustrationPoints();
- Assert.IsNull(calculation.Output?.OvertoppingOutput.GeneralResult);
- Assert.IsNull(calculation.Output?.OvertoppingRateOutput?.GeneralResult);
- Assert.IsNull(calculation.Output?.DikeHeightOutput?.GeneralResult);
+ // Then
+ Assert.IsFalse(isCalculationAffected);
+ Assert.IsFalse(calculation.HasOutput);
+ Assert.IsFalse(GrassCoverErosionInwardsIllustrationPointsHelper.HasIllustrationPoints(calculation));
mocks.VerifyAll();
}
- private static IEnumerable GetCalculationConfigurations()
+ [Test]
+ [Combinatorial]
+ public void ClearIllustrationPoints_WithVariousCalculationConfigurations_ClearsIllustrationPointsAndReturnsExpectedResult(
+ [Values(true, false)] bool hasOvertoppingIllustrationPoints,
+ [Values(true, false)] bool hasDikeHeightIllustrationPoints,
+ [Values(true, false)] bool hasOvertoppingRateIllustrationPoints)
{
- var random = new Random(21);
- var calculationWithOverToppingOutputWithIllustrationPoints = new GrassCoverErosionInwardsCalculation
+ // Setup
+ var calculation = new GrassCoverErosionInwardsCalculation
{
- Output = new GrassCoverErosionInwardsOutput(new TestOvertoppingOutput(new TestGeneralResultFaultTreeIllustrationPoint()),
- null,
- null)
+ Output = new GrassCoverErosionInwardsOutput(
+ new TestOvertoppingOutput(hasOvertoppingIllustrationPoints
+ ? new TestGeneralResultFaultTreeIllustrationPoint()
+ : null),
+ new TestDikeHeightOutput(hasDikeHeightIllustrationPoints
+ ? new TestGeneralResultFaultTreeIllustrationPoint()
+ : null),
+ new TestOvertoppingRateOutput(hasOvertoppingRateIllustrationPoints
+ ? new TestGeneralResultFaultTreeIllustrationPoint()
+ : null))
};
- var calculationWithDikeHeightRateWithIllustrationPoints = new GrassCoverErosionInwardsCalculation
+ var mocks = new MockRepository();
+ var inquiryHelper = mocks.Stub();
+ var viewCommands = mocks.StrictMock();
+
+ if (hasOvertoppingIllustrationPoints)
{
- Output = new GrassCoverErosionInwardsOutput(new TestOvertoppingOutput(random.NextDouble()),
- new TestDikeHeightOutput(new TestGeneralResultFaultTreeIllustrationPoint()),
- null)
- };
+ viewCommands.Expect(vc => vc.RemoveAllViewsForItem(calculation.Output.OvertoppingOutput.GeneralResult));
+ }
- var calculationWithOvertoppingRateWithIllustrationPoints = new GrassCoverErosionInwardsCalculation
+ if (hasDikeHeightIllustrationPoints)
{
- Output = new GrassCoverErosionInwardsOutput(new TestOvertoppingOutput(random.NextDouble()),
- null,
- new TestOvertoppingRateOutput(new TestGeneralResultFaultTreeIllustrationPoint()))
- };
+ viewCommands.Expect(vc => vc.RemoveAllViewsForItem(calculation.Output.DikeHeightOutput.GeneralResult));
+ }
- var calculationWitNoIllustrationPoints = new GrassCoverErosionInwardsCalculation
+ if (hasOvertoppingRateIllustrationPoints)
{
- Output = new GrassCoverErosionInwardsOutput(new TestOvertoppingOutput(random.NextDouble()),
- null,
- null)
- };
+ viewCommands.Expect(vc => vc.RemoveAllViewsForItem(calculation.Output.OvertoppingRateOutput.GeneralResult));
+ }
+ mocks.ReplayAll();
- yield return new TestCaseData(calculationWithOverToppingOutputWithIllustrationPoints, true);
- yield return new TestCaseData(calculationWithDikeHeightRateWithIllustrationPoints, true);
- yield return new TestCaseData(calculationWithOvertoppingRateWithIllustrationPoints, true);
- yield return new TestCaseData(calculationWitNoIllustrationPoints, false);
- yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(), false);
+ var handler = new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationChangeHandler(calculation, inquiryHelper, viewCommands);
+
+ // Call
+ bool isCalculationAffected = handler.ClearIllustrationPoints();
+
+ // Assert
+ bool expectedResult = hasOvertoppingIllustrationPoints || hasDikeHeightIllustrationPoints || hasOvertoppingRateIllustrationPoints;
+ Assert.AreEqual(expectedResult, isCalculationAffected);
+ Assert.IsTrue(calculation.HasOutput);
+ Assert.IsNull(calculation.Output.OvertoppingOutput.GeneralResult);
+ Assert.IsNull(calculation.Output.OvertoppingRateOutput.GeneralResult);
+ Assert.IsNull(calculation.Output.DikeHeightOutput.GeneralResult);
+ mocks.VerifyAll();
}
}
}
\ No newline at end of file