Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneErosionFailureMechanismExtensionsTest.cs =================================================================== diff -u -r861341a7835c17ca6309ff1b6e0b8fe2269b5c0f -r32061d48745c5325becd9adac3118d976587b3b6 --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneErosionFailureMechanismExtensionsTest.cs (.../DuneErosionFailureMechanismExtensionsTest.cs) (revision 861341a7835c17ca6309ff1b6e0b8fe2269b5c0f) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneErosionFailureMechanismExtensionsTest.cs (.../DuneErosionFailureMechanismExtensionsTest.cs) (revision 32061d48745c5325becd9adac3118d976587b3b6) @@ -21,7 +21,11 @@ using System; using System.Linq; +using Core.Common.TestUtil; using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.DuneErosion.Data.TestUtil; @@ -105,5 +109,97 @@ // Assert CollectionAssert.IsEmpty(failureMechanism.DuneLocations); } + + [Test] + public void GetMechanismSpecificNorm_FailureMechanismNull_ThrowArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + // Call + TestDelegate test = () => DuneErosionFailureMechanismExtensions.GetMechanismSpecificNorm(null, assessmentSection); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("failureMechanism", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void GetMechanismSpecificNorm_AssessmentSectionNull_ThrowArgumentNullException() + { + // Setup + var failureMechanism = new DuneErosionFailureMechanism(); + + // Call + TestDelegate test = () => failureMechanism.GetMechanismSpecificNorm(null); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("assessmentSection", exception.ParamName); + } + + [Test] + public void GetMechanismSpecificNorm_WithZeroContributionForFailureMechanism_ThrowsArgumentException() + { + // Setup + var failureMechanism = new DuneErosionFailureMechanism + { + Contribution = 0 + }; + + var mocks = new MockRepository(); + var assessmentSection = mocks.StrictMock(); + assessmentSection.Stub(a => a.GetFailureMechanisms()).Return(new[] + { + failureMechanism + }); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(new[] + { + failureMechanism + }, 1, 1.0 / 300)); + mocks.ReplayAll(); + + // Call + TestDelegate action = () => failureMechanism.GetMechanismSpecificNorm(assessmentSection); + + // Assert + const string expectedMessage = "De bijdrage van dit toetsspoor is nul. Daardoor kunnen de berekeningen niet worden uitgevoerd."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(action, expectedMessage); + mocks.VerifyAll(); + } + + [Test] + public void GetMechanismSpecificNorm_WithValidData_ReturnMechanismSpecificNorm() + { + // Setup + const double norm = 1.0 / 200; + const double contribution = 10; + var failureMechanism = new DuneErosionFailureMechanism + { + Contribution = contribution + }; + + var mocks = new MockRepository(); + var assessmentSection = mocks.StrictMock(); + assessmentSection.Stub(a => a.GetFailureMechanisms()).Return(new[] + { + failureMechanism + }); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(new[] + { + failureMechanism + }, 1, norm)); + mocks.ReplayAll(); + + // Call + double mechanismSpecificNorm = failureMechanism.GetMechanismSpecificNorm(assessmentSection); + + // Assert + Assert.AreEqual(0.0005375, mechanismSpecificNorm); + mocks.VerifyAll(); + } } } \ No newline at end of file