Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/AssessmentSectionEntityReadExtensions.cs =================================================================== diff -u -r8ff26e0d7885f432a6e470e8d68ce325bdc6a9bc -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/AssessmentSectionEntityReadExtensions.cs (.../AssessmentSectionEntityReadExtensions.cs) (revision 8ff26e0d7885f432a6e470e8d68ce325bdc6a9bc) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/AssessmentSectionEntityReadExtensions.cs (.../AssessmentSectionEntityReadExtensions.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -51,7 +51,9 @@ throw new ArgumentNullException(nameof(collector)); } - var assessmentSection = new AssessmentSection((AssessmentSectionComposition) entity.Composition) + var assessmentSection = new AssessmentSection((AssessmentSectionComposition) entity.Composition, + entity.LowerLimitNorm, + entity.SignalingNorm) { Id = entity.Id, Name = entity.Name, @@ -61,8 +63,6 @@ }, FailureMechanismContribution = { - LowerLimitNorm = entity.LowerLimitNorm, - SignalingNorm = entity.SignalingNorm, NormativeNorm = (NormType) entity.NormativeNormType } }; Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs =================================================================== diff -u -r75239d2d2d30777d12795d21bb0a2c4079009276 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision 75239d2d2d30777d12795d21bb0a2c4079009276) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -39,6 +39,7 @@ using Ringtoets.Common.Data; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.DikeProfiles; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Hydraulics; @@ -275,6 +276,12 @@ Assert.AreEqual(expectedAssessmentSection.Name, actualAssessmentSection.Name); AssertComments(expectedAssessmentSection.Comments, actualAssessmentSection.Comments); + FailureMechanismContribution expectedContribution = expectedAssessmentSection.FailureMechanismContribution; + FailureMechanismContribution actualContribution = actualAssessmentSection.FailureMechanismContribution; + Assert.AreEqual(expectedContribution.LowerLimitNorm, actualContribution.LowerLimitNorm); + Assert.AreEqual(expectedContribution.SignalingNorm, actualContribution.SignalingNorm); + Assert.AreEqual(expectedContribution.NormativeNorm, actualContribution.NormativeNorm); + BackgroundDataTestHelper.AssertBackgroundData(expectedAssessmentSection.BackgroundData, actualAssessmentSection.BackgroundData); AssertHydraulicBoundaryDatabase(expectedAssessmentSection.HydraulicBoundaryDatabase, actualAssessmentSection.HydraulicBoundaryDatabase); AssertReferenceLine(expectedAssessmentSection.ReferenceLine, actualAssessmentSection.ReferenceLine); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil.Test/RingtoetsProjectTestHelperTest.cs =================================================================== diff -u -rd9bbfea8e0f8e620379c9b51e427d24560b7cbd4 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil.Test/RingtoetsProjectTestHelperTest.cs (.../RingtoetsProjectTestHelperTest.cs) (revision d9bbfea8e0f8e620379c9b51e427d24560b7cbd4) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil.Test/RingtoetsProjectTestHelperTest.cs (.../RingtoetsProjectTestHelperTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -25,6 +25,7 @@ using NUnit.Framework; using Ringtoets.ClosingStructures.Data; using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Data.IllustrationPoints; using Ringtoets.Common.Data.Structures; @@ -69,6 +70,11 @@ Assert.AreEqual(expectedAssessmentSectionName, assessmentSection.Name); Assert.AreEqual("12-2", assessmentSection.Id); + FailureMechanismContribution contribution = assessmentSection.FailureMechanismContribution; + Assert.AreEqual(1.0 / 10, contribution.LowerLimitNorm); + Assert.AreEqual(1.0 / 1000000, contribution.SignalingNorm); + Assert.AreEqual(NormType.Signaling, contribution.NormativeNorm); + AssertHydraulicBoundaryDatabase(assessmentSection.HydraulicBoundaryDatabase); AssertPipingFailureMechanism(assessmentSection); Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs =================================================================== diff -u -r0641053e020a1478f793ee17e753df60af26171f -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs (.../RingtoetsProjectTestHelper.cs) (revision 0641053e020a1478f793ee17e753df60af26171f) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs (.../RingtoetsProjectTestHelper.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -31,6 +31,7 @@ using Ringtoets.ClosingStructures.Data.TestUtil; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.DikeProfiles; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Hydraulics; @@ -76,7 +77,13 @@ Name = "assessmentSection", HydraulicBoundaryDatabase = GetHydraulicBoundaryDatabase(), ReferenceLine = GetReferenceLine(), - Id = "12-2" + Id = "12-2", + FailureMechanismContribution = + { + LowerLimitNorm = 1.0 / 10, + SignalingNorm = 1.0 / 1000000, + NormativeNorm = NormType.Signaling + } }; MacroStabilityInwardsFailureMechanism macroStabilityInwardsFailureMechanism = assessmentSection.MacroStabilityInwards; Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -r836d03bd77cc7848d686b59c61fd63ef711c7b32 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationContextTreeNodeInfoTest.cs (.../ClosingStructuresCalculationContextTreeNodeInfoTest.cs) (revision 836d03bd77cc7848d686b59c61fd63ef711c7b32) +++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationContextTreeNodeInfoTest.cs (.../ClosingStructuresCalculationContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -969,7 +969,7 @@ } }; assessmentSection.Stub(a => a.Id).Return(string.Empty); - assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); var initialOutput = new TestStructuresOutput(); var parent = new CalculationGroup(); Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r7947681ebba776d55c4f78782360256800fa5d1f -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../ClosingStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision 7947681ebba776d55c4f78782360256800fa5d1f) +++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../ClosingStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -827,7 +827,7 @@ var assessmentSection = mocks.Stub(); assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase; assessmentSection.Stub(a => a.Id).Return(string.Empty); - assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); var groupContext = new ClosingStructuresCalculationGroupContext(failureMechanism.CalculationsGroup, null, Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresFailureMechanismContextTreeNodeInfoTest.cs =================================================================== diff -u -r5c0da60fa22b23e4c560df3ed0c76956f0e60f21 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresFailureMechanismContextTreeNodeInfoTest.cs (.../ClosingStructuresFailureMechanismContextTreeNodeInfoTest.cs) (revision 5c0da60fa22b23e4c560df3ed0c76956f0e60f21) +++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/TreeNodeInfos/ClosingStructuresFailureMechanismContextTreeNodeInfoTest.cs (.../ClosingStructuresFailureMechanismContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -629,7 +629,7 @@ var assessmentSection = mocksRepository.Stub(); assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase; assessmentSection.Stub(a => a.Id).Return(string.Empty); - assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); var failureMechanismContext = new ClosingStructuresFailureMechanismContext(failureMechanism, assessmentSection); Index: Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContribution.cs =================================================================== diff -u -ra8700b1afad48f78474132bf4745ba00a47df584 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContribution.cs (.../FailureMechanismContribution.cs) (revision a8700b1afad48f78474132bf4745ba00a47df584) +++ Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContribution.cs (.../FailureMechanismContribution.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -35,7 +35,6 @@ /// public class FailureMechanismContribution : Observable { - private const double defaultNorm = 1.0 / 30000; private static readonly Range normValidityRange = new Range(1.0 / 1000000, 1.0 / 10); private readonly ICollection distribution = new List(); @@ -52,6 +51,8 @@ /// The of /// on which to base the . /// The collective contribution for other failure mechanisms. + /// The lower limit norm which has been defined on the assessment section. + /// The signaling norm which has been defined on the assessment section. /// Thrown when is null. /// Thrown when: /// @@ -60,10 +61,22 @@ /// the value of is not in the interval [0, 100] /// /// - public FailureMechanismContribution(IEnumerable failureMechanisms, double otherContribution) + /// Thrown when: + /// + /// is not in the interval [0.000001, 0.1] or is ; + /// is not in the interval [0.000001, 0.1] or is ; + /// The is larger than . + /// + /// + public FailureMechanismContribution(IEnumerable failureMechanisms, + double otherContribution, + double lowerLimitNorm, + double signalingNorm) { - signalingNorm = defaultNorm; - lowerLimitNorm = defaultNorm; + ValidateNorms(signalingNorm, lowerLimitNorm); + + this.lowerLimitNorm = lowerLimitNorm; + this.signalingNorm = signalingNorm; NormativeNorm = NormType.LowerLimit; UpdateContributions(failureMechanisms, otherContribution); @@ -85,13 +98,8 @@ } set { - ValidateNorm(value); + ValidateNorms(value, lowerLimitNorm); - if (value > lowerLimitNorm) - { - throw new ArgumentOutOfRangeException(nameof(value), Resources.FailureMechanismContribution_SignalingNorm_should_be_same_or_smaller_than_LowerLimitNorm); - } - signalingNorm = value; SetDistribution(); } @@ -117,7 +125,9 @@ if (value < signalingNorm) { - throw new ArgumentOutOfRangeException(nameof(value), Resources.FailureMechanismContribution_LowerLimitNorm_should_be_same_or_greater_than_SignalingNorm); + throw new ArgumentOutOfRangeException(nameof(value), + value, + Resources.FailureMechanismContribution_LowerLimitNorm_should_be_same_or_greater_than_SignalingNorm); } lowerLimitNorm = value; @@ -211,11 +221,37 @@ { string message = string.Format(Resources.Norm_should_be_in_Range_0_, normValidityRange.ToString(FormattableConstants.ShowAtLeastOneDecimal, CultureInfo.CurrentCulture)); - throw new ArgumentOutOfRangeException(nameof(value), message); + throw new ArgumentOutOfRangeException(nameof(value), value, message); } } /// + /// Validates the norm values. + /// + /// The signaling norm to validate. + /// The lower limit norm to validate against. + /// Thrown when: + /// + /// is not in the interval [0.000001, 0.1] or is ; + /// is not in the interval [0.000001, 0.1] or is ; + /// The is larger than . + /// + /// + private static void ValidateNorms(double signalingNormValue, + double lowerLimitNormValue) + { + ValidateNorm(signalingNormValue); + ValidateNorm(lowerLimitNormValue); + + if (signalingNormValue > lowerLimitNormValue) + { + throw new ArgumentOutOfRangeException(nameof(signalingNormValue), + signalingNormValue, + Resources.FailureMechanismContribution_SignalingNorm_should_be_same_or_smaller_than_LowerLimitNorm); + } + } + + /// /// Adds a based on . /// /// The to add a for. Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs =================================================================== diff -u -r01ad489124b30cf09961349f6049911ae8ee6090 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs (.../FailureMechanismContributionTest.cs) (revision 01ad489124b30cf09961349f6049911ae8ee6090) +++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs (.../FailureMechanismContributionTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -49,9 +49,12 @@ // Setup var random = new Random(21); int contribution = random.Next(1, 100); + const double norm = 1.0 / 30000; // Call - TestDelegate test = () => new FailureMechanismContribution(null, contribution); + TestDelegate test = () => new FailureMechanismContribution(null, contribution, + norm, + norm); // Assert const string expectedMessage = "Kan geen bijdrageoverzicht maken zonder toetsspoor."; @@ -64,29 +67,110 @@ // Setup var random = new Random(21); int contribution = random.Next(1, 100); + const double norm = 1.0 / 30000; // Call TestDelegate test = () => new FailureMechanismContribution(new IFailureMechanism[] - { - null - }, contribution); + { + null + }, contribution, + norm, + norm); // Assert const string expectedMessage = "Kan geen bijdrage element maken zonder een toetsspoor."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); } [Test] + [TestCaseSource(nameof(GetInvalidNormValues), + new object[] + { + "Constructor_InvalidLowerLimitNorm_ThrowsArgumentOutOfRangeException" + })] [SetCulture("nl-NL")] + public void Constructor_InvalidLowerLimitNorm_ThrowsArgumentOutOfRangeException(double newNorm) + { + // Setup + var random = new Random(21); + int contribution = random.Next(1, 100); + + // Call + TestDelegate test = () => new FailureMechanismContribution(Enumerable.Empty(), + contribution, + newNorm, + 0.000001); + + // Assert + const string expectedMessage = "De waarde van de norm moet in het bereik [0,000001, 0,1] liggen."; + var exception = Assert.Throws(test); + StringAssert.StartsWith(expectedMessage, exception.Message); + Assert.AreEqual(newNorm, exception.ActualValue); + } + + [Test] + [TestCaseSource(nameof(GetInvalidNormValues), + new object[] + { + "Constructor_InvalidSignalingNorm_ThrowsArgumentOutOfRangeException" + })] + [SetCulture("nl-NL")] + public void Constructor_InvalidSignalingNorm_ThrowsArgumentOutOfRangeException(double newNorm) + { + // Setup + var random = new Random(21); + int contribution = random.Next(1, 100); + + // Call + TestDelegate test = () => new FailureMechanismContribution(Enumerable.Empty(), + contribution, + 0.1, + newNorm); + + // Assert + const string expectedMessage = "De waarde van de norm moet in het bereik [0,000001, 0,1] liggen."; + var exception = Assert.Throws(test); + StringAssert.StartsWith(expectedMessage, exception.Message); + Assert.AreEqual(newNorm, exception.ActualValue); + } + + [Test] + public void Constructor_SignalingNormLargerThanLowerLimitNorm_ThrowsArgumentOutOfRangeException() + { + // Setup + var random = new Random(21); + int contribution = random.Next(1, 100); + const double signalingNorm = 0.1; + + // Call + TestDelegate test = () => new FailureMechanismContribution(Enumerable.Empty(), + contribution, + 0.01, + signalingNorm); + + // Assert + const string expectedMessage = "De signaleringswaarde moet gelijk zijn aan of kleiner zijn dan de ondergrens."; + var exception = Assert.Throws(test); + StringAssert.StartsWith(expectedMessage, exception.Message); + Assert.AreEqual(signalingNorm, exception.ActualValue); + } + + [Test] + [SetCulture("nl-NL")] [TestCase(-10)] [TestCase(-1e-6)] [TestCase(100 + 1e-6)] [TestCase(150)] [TestCase(double.NaN)] - public void Constructor_OtherContributionLessOrEqualTo0OrGreaterThan100_ArgumentException(double contribution) + public void Constructor_OtherContributionLessOrEqualTo0OrGreaterThan100_ThrowsArgumentOutOfRangeException(double contribution) { + // Setup + const double norm = 1.0 / 30000; + // Call - TestDelegate test = () => new FailureMechanismContribution(Enumerable.Empty(), contribution); + TestDelegate test = () => new FailureMechanismContribution(Enumerable.Empty(), + contribution + , norm, norm); // Assert const string expectedMessage = "De waarde voor de toegestane bijdrage aan de faalkans moet in het bereik [0,0, 100,0] liggen."; @@ -99,11 +183,16 @@ [TestCase(100)] public void Constructor_EmptyFailureMechanisms_OnlyOtherFailureMechanismAddedWithContributionSet(double contribution) { + // Setup + const double norm = 1.0 / 30000; + // Call - var result = new FailureMechanismContribution(Enumerable.Empty(), contribution); + var result = new FailureMechanismContribution(Enumerable.Empty(), + contribution, + norm, + norm); // Assert - const double norm = 1.0 / 30000; Assert.AreEqual(1, result.Distribution.Count()); FailureMechanismContributionItem otherFailureMechanismItem = result.Distribution.ElementAt(0); AssertFailureProbabilitySpace(contribution, norm, otherFailureMechanismItem.ProbabilitySpace); @@ -127,6 +216,7 @@ // Setup var random = new Random(21); int otherContribution = random.Next(1, 100); + const double norm = 1.0 / 30000; var failureMechanismNames = new Collection(); var failureMechanismContributions = new Collection(); @@ -153,7 +243,10 @@ mocks.ReplayAll(); // Call - var result = new FailureMechanismContribution(failureMechanisms, otherContribution); + var result = new FailureMechanismContribution(failureMechanisms, + otherContribution, + norm, + norm); // Assert Assert.AreEqual(failureMechanismCount + 1, result.Distribution.Count()); @@ -171,8 +264,12 @@ public void UpdateContribution_FailureMechanismsIsNull_ThrowsArgumentNullException() { // Setup + const double norm = 1.0 / 30000; IEnumerable failureMechanisms = Enumerable.Empty(); - var failureMechanismContribution = new FailureMechanismContribution(failureMechanisms, 12.34); + var failureMechanismContribution = new FailureMechanismContribution(failureMechanisms, + 12.34, + norm, + norm); // Call TestDelegate call = () => failureMechanismContribution.UpdateContributions(null, 0); @@ -190,14 +287,17 @@ { // Setup IEnumerable failureMechanisms = Enumerable.Empty(); + const double norm = 1.0 / 30000; - var failureMechanismContribution = new FailureMechanismContribution(failureMechanisms, 12.34); + var failureMechanismContribution = new FailureMechanismContribution(failureMechanisms, + 12.34, + norm, + norm); // Call failureMechanismContribution.UpdateContributions(failureMechanisms, newOtherContribution); // Assert - const double norm = 1.0 / 30000; Assert.AreEqual(1, failureMechanismContribution.Distribution.Count()); FailureMechanismContributionItem otherFailureMechanismContribution = failureMechanismContribution.Distribution.Last(); Assert.AreEqual(newOtherContribution, otherFailureMechanismContribution.Contribution); @@ -209,8 +309,12 @@ public void UpdateContributions_MultipleChanges_AllFailureMechanismContributionItemsHaveLatestContribution() { // Given + const double norm = 1.0 / 30000; IEnumerable failureMechanisms = Enumerable.Empty(); - var failureMechanismContribution = new FailureMechanismContribution(failureMechanisms, 12.34); + var failureMechanismContribution = new FailureMechanismContribution(failureMechanisms, + 12.34, + norm, + norm); const double latestContribution = 2.3; @@ -241,6 +345,7 @@ const double contribution2 = 5.5; const double contribution3 = 23.45; const double contribution4 = 67.89; + const double norm = 1.0 / 30000; var failureMechanism1 = mocks.Stub(); failureMechanism1.Contribution = contribution1; @@ -263,7 +368,10 @@ }; const double otherContribution = 12.34; - var failureMechanismContribution = new FailureMechanismContribution(failureMechanisms, otherContribution); + var failureMechanismContribution = new FailureMechanismContribution(failureMechanisms, + otherContribution, + norm, + norm); // Change failureMechanisms after construction of FailureMechanismContribution: failureMechanisms.RemoveAt(1); @@ -317,6 +425,7 @@ public void LowerLimitNorm_WhenUpdatedAndNormativeNormLowerLimit_NormUpdatedForEachFailureMechanismContributionItem() { // Setup + const double norm = 1.0 / 30000; const double newNorm = 0.1; var failureMechanism = mocks.Stub(); @@ -326,9 +435,10 @@ int otherContribution = random.Next(1, 100); var failureMechanismContribution = new FailureMechanismContribution(new[] - { - failureMechanism - }, otherContribution); + { + failureMechanism + }, otherContribution, norm, + norm); // Call failureMechanismContribution.LowerLimitNorm = newNorm; @@ -348,22 +458,21 @@ var random = new Random(21); int otherContribution = random.Next(1, 100); + const double norm = 1.0 / 30000; var failureMechanismContribution = new FailureMechanismContribution(new[] { failureMechanism - }, otherContribution) + }, otherContribution, norm, norm) { NormativeNorm = NormType.Signaling }; - double originalNorm = failureMechanismContribution.Norm; - // Call failureMechanismContribution.LowerLimitNorm = 0.1; // Assert - CollectionAssert.AreEqual(Enumerable.Repeat(originalNorm, 2), + CollectionAssert.AreEqual(Enumerable.Repeat(norm, 2), failureMechanismContribution.Distribution.Select(d => d.Norm)); mocks.VerifyAll(); } @@ -372,6 +481,7 @@ public void SignalingNorm_WhenUpdatedAndNormativeNormSignaling_NormUpdatedForEachFailureMechanismContributionItem() { // Setup + const double norm = 1.0 / 30000; const double newNorm = 0.000001; var failureMechanism = mocks.Stub(); mocks.ReplayAll(); @@ -380,10 +490,12 @@ int otherContribution = random.Next(1, 100); var failureMechanismContribution = new FailureMechanismContribution(new[] + { + failureMechanism + }, otherContribution, + norm, + norm) { - failureMechanism - }, otherContribution) - { NormativeNorm = NormType.Signaling }; @@ -405,19 +517,20 @@ var random = new Random(21); int otherContribution = random.Next(1, 100); + const double norm = 1.0 / 30000; var failureMechanismContribution = new FailureMechanismContribution(new[] - { - failureMechanism - }, otherContribution); + { + failureMechanism + }, otherContribution, + norm, + norm); - double originalNorm = failureMechanismContribution.Norm; - // Call failureMechanismContribution.SignalingNorm = 0.000001; // Assert - CollectionAssert.AreEqual(Enumerable.Repeat(originalNorm, 2), + CollectionAssert.AreEqual(Enumerable.Repeat(norm, 2), failureMechanismContribution.Distribution.Select(d => d.Norm)); mocks.VerifyAll(); } @@ -433,13 +546,10 @@ int otherContribution = random.Next(1, 100); var failureMechanismContribution = new FailureMechanismContribution(new[] - { - failureMechanism - }, otherContribution) - { - LowerLimitNorm = 0.1, - SignalingNorm = 0.001 - }; + { + failureMechanism + }, otherContribution, + 0.1, 0.001); // Precondition CollectionAssert.AreEqual(Enumerable.Repeat(0.1, 2), @@ -466,14 +576,20 @@ // Setup var random = new Random(21); int contribution = random.Next(1, 100); - var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), contribution); + const double norm = 1.0 / 30000; + var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), + contribution, + norm, + norm); // Call TestDelegate test = () => failureMechanismContribution.LowerLimitNorm = newNorm; // Assert const string expectedMessage = "De waarde van de norm moet in het bereik [0,000001, 0,1] liggen."; - TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); + var exception = Assert.Throws(test); + StringAssert.StartsWith(expectedMessage, exception.Message); + Assert.AreEqual(newNorm, exception.ActualValue); } [Test] @@ -488,30 +604,69 @@ // Setup var random = new Random(21); int contribution = random.Next(1, 100); - var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), contribution); + const double norm = 1.0 / 30000; + var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), + contribution, + norm, + norm); // Call TestDelegate test = () => failureMechanismContribution.SignalingNorm = newNorm; // Assert const string expectedMessage = "De waarde van de norm moet in het bereik [0,000001, 0,1] liggen."; - TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); + var exception = Assert.Throws(test); + StringAssert.StartsWith(expectedMessage, exception.Message); + Assert.AreEqual(newNorm, exception.ActualValue); } [Test] + [TestCaseSource(nameof(GetValidNormEdgeValues), + new object[] + { + "Norm_SettingBothNormsToEdgeNorms_ThenPropertiesSet" + })] + public void GivenFailureMechanismContribution_WhenSettingBothNormsToEdgeNorms_ThenPropertiesSet(double newNorm) + { + // Given + var failureMechanism = mocks.Stub(); + mocks.ReplayAll(); + + var random = new Random(21); + + // When + var failureMechanismContribution = new FailureMechanismContribution(new[] + { + failureMechanism + }, random.Next(1, 100), newNorm, newNorm); + + // Then + CollectionAssert.AreEqual(Enumerable.Repeat(newNorm, 2), + failureMechanismContribution.Distribution.Select(d => d.Norm)); + mocks.VerifyAll(); + } + + [Test] public void SignalingNorm_SignalingNormBiggerThanLowerLimitNorm_ThrowsArgumentOutOfRangeException() { // Setup var random = new Random(21); int contribution = random.Next(1, 100); - var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), contribution); + const double norm = 1.0 / 30000; + const double newNorm = 1.0 / 10; + var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), + contribution, + norm, + norm); // Call - TestDelegate test = () => failureMechanismContribution.SignalingNorm = 0.1; + TestDelegate test = () => failureMechanismContribution.SignalingNorm = newNorm; // Assert const string expectedMessage = "De signaleringswaarde moet gelijk zijn aan of kleiner zijn dan de ondergrens."; - TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); + var exception = Assert.Throws(test); + StringAssert.StartsWith(expectedMessage, exception.Message); + Assert.AreEqual(newNorm, exception.ActualValue); } [Test] @@ -520,14 +675,21 @@ // Setup var random = new Random(21); int contribution = random.Next(1, 100); - var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), contribution); + const double norm = 1.0 / 30000; + const double newNorm = 1.0 / 1000000; + var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), + contribution, + norm, + norm); // Call - TestDelegate test = () => failureMechanismContribution.LowerLimitNorm = 0.000001; + TestDelegate test = () => failureMechanismContribution.LowerLimitNorm = newNorm; // Assert const string expectedMessage = "De ondergrens moet gelijk zijn aan of groter zijn dan de signaleringswaarde."; - TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); + var exception = Assert.Throws(test); + StringAssert.StartsWith(expectedMessage, exception.Message); + Assert.AreEqual(newNorm, exception.ActualValue); } [Test] @@ -538,10 +700,11 @@ // Setup var random = new Random(21); int contribution = random.Next(1, 100); - var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), contribution) + var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), + contribution, + 0.1, + 0.01) { - LowerLimitNorm = 0.1, - SignalingNorm = 0.01, NormativeNorm = normType }; @@ -558,6 +721,14 @@ Assert.AreEqual(expectedProbabilitySpace, probabilitySpace); } + private static IEnumerable GetValidNormEdgeValues(string name) + { + yield return new TestCaseData(1.0 / 10) + .SetName($"{name} Minimum valid norm"); + yield return new TestCaseData(1.0 / 1000000) + .SetName($"{name} Maximum valid norm"); + } + private static IEnumerable GetInvalidNormValues(string name) { yield return new TestCaseData(double.MaxValue) Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/AssessmentSectionHelperTest.cs =================================================================== diff -u -r7a9c98886fd29efbea53f5be1b0be96c70ffa106 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/AssessmentSectionHelperTest.cs (.../AssessmentSectionHelperTest.cs) (revision 7a9c98886fd29efbea53f5be1b0be96c70ffa106) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/AssessmentSectionHelperTest.cs (.../AssessmentSectionHelperTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -57,7 +57,9 @@ { failureMechanism }, assessmentSection.GetFailureMechanisms()); - Assert.AreEqual(0.1, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(1.0 / 10, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(1.0 / 10, assessmentSection.FailureMechanismContribution.LowerLimitNorm); + Assert.AreEqual(1.0 / 30000, assessmentSection.FailureMechanismContribution.SignalingNorm); mocks.VerifyAll(); } @@ -88,7 +90,9 @@ { failureMechanism }, assessmentSection.GetFailureMechanisms()); - Assert.AreEqual(0.1, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(1.0 / 10, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(1.0 / 10, assessmentSection.FailureMechanismContribution.LowerLimitNorm); + Assert.AreEqual(1.0 / 30000, assessmentSection.FailureMechanismContribution.SignalingNorm); mocks.VerifyAll(); } @@ -110,7 +114,9 @@ { failureMechanism }, assessmentSection.GetFailureMechanisms()); - Assert.AreEqual(0.1, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(1.0 / 10, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(1.0 / 10, assessmentSection.FailureMechanismContribution.LowerLimitNorm); + Assert.AreEqual(1.0 / 30000, assessmentSection.FailureMechanismContribution.SignalingNorm); mocks.VerifyAll(); } @@ -128,7 +134,9 @@ Assert.AreEqual("21", assessmentSection.Id); Assert.IsNull(assessmentSection.HydraulicBoundaryDatabase); CollectionAssert.IsEmpty(assessmentSection.GetFailureMechanisms()); - Assert.AreEqual(0.1, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(1.0 / 10, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(1.0 / 10, assessmentSection.FailureMechanismContribution.LowerLimitNorm); + Assert.AreEqual(1.0 / 30000, assessmentSection.FailureMechanismContribution.SignalingNorm); mocks.VerifyAll(); } } Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/FailureMechanismContributionTestFactoryTest.cs =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/FailureMechanismContributionTestFactoryTest.cs (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/FailureMechanismContributionTestFactoryTest.cs (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -0,0 +1,92 @@ +// Copyright (C) Stichting Deltares 2017. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Linq; +using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.Contribution; +using Ringtoets.Common.Data.FailureMechanism; + +namespace Ringtoets.Common.Data.TestUtil.Test +{ + [TestFixture] + public class FailureMechanismContributionTestFactoryTest + { + [Test] + public void CreateFailureMechanismContribution_ReturnsExpectedFailureMechanismContribution() + { + // Call + FailureMechanismContribution contribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(); + + // Assert + Assert.AreEqual(1.0 / 30000, contribution.LowerLimitNorm); + Assert.AreEqual(1.0 / 30000, contribution.SignalingNorm); + Assert.AreEqual(NormType.LowerLimit, contribution.NormativeNorm); + + FailureMechanismContributionItem otherFailureMechanismContributionItem = contribution.Distribution.Single(); + Assert.AreEqual(1, otherFailureMechanismContributionItem.Contribution); + } + + [Test] + public void FailureMechanismsCreateFailureMechanismContribution_FailureMechanismsNull_ReturnsExpectedFailureMechanismContribution() + { + // Call + TestDelegate test = () => FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(null); + + // Assert + Assert.Throws(test); + } + + [Test] + public void FailureMechanismsCreateFailureMechanismContribution_WithFailureMechanism_ReturnsExpectedFailureMechanismContribution() + { + // Call + var mockRepository = new MockRepository(); + var failureMechanism = mockRepository.Stub(); + var failureMechanism2 = mockRepository.Stub(); + mockRepository.ReplayAll(); + + var failureMechanisms = new[] + { + failureMechanism, + failureMechanism2 + }; + FailureMechanismContribution contribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(failureMechanisms); + + // Assert + Assert.AreEqual(1.0 / 30000, contribution.LowerLimitNorm); + Assert.AreEqual(1.0 / 30000, contribution.SignalingNorm); + Assert.AreEqual(NormType.LowerLimit, contribution.NormativeNorm); + + FailureMechanismContributionItem otherFailureMechanismContributionItem = contribution.Distribution + .Single(d => d.FailureMechanism is OtherFailureMechanism); + Assert.AreEqual(1, otherFailureMechanismContributionItem.Contribution); + + CollectionAssert.AreEquivalent(failureMechanisms, contribution.Distribution.Except(new[] + { + otherFailureMechanismContributionItem + }).Select(i => i.FailureMechanism)); + + mockRepository.VerifyAll(); + } + } +} \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/ObservableTestAssessmentSectionStubTest.cs =================================================================== diff -u -r0b02d2f718cbc5c039f130a0243fe12eb5674a31 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/ObservableTestAssessmentSectionStubTest.cs (.../ObservableTestAssessmentSectionStubTest.cs) (revision 0b02d2f718cbc5c039f130a0243fe12eb5674a31) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/ObservableTestAssessmentSectionStubTest.cs (.../ObservableTestAssessmentSectionStubTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -53,6 +53,8 @@ Assert.AreEqual("Background data", assessmentSection.BackgroundData.Name); Assert.AreEqual(1.0 / 30000, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(1.0 / 30000, assessmentSection.FailureMechanismContribution.SignalingNorm); + Assert.AreEqual(1.0 / 30000, assessmentSection.FailureMechanismContribution.LowerLimitNorm); FailureMechanismContributionItem[] contributionItems = assessmentSection.FailureMechanismContribution.Distribution.ToArray(); Assert.AreEqual(1, contributionItems.Length); Assert.AreEqual(0, contributionItems[0].Contribution); Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/Ringtoets.Common.Data.TestUtil.Test.csproj =================================================================== diff -u -ra1fa1538918813373bcc864f0bce092bf28fd0ce -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/Ringtoets.Common.Data.TestUtil.Test.csproj (.../Ringtoets.Common.Data.TestUtil.Test.csproj) (revision a1fa1538918813373bcc864f0bce092bf28fd0ce) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/Ringtoets.Common.Data.TestUtil.Test.csproj (.../Ringtoets.Common.Data.TestUtil.Test.csproj) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -55,6 +55,7 @@ + Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/AssessmentSectionHelper.cs =================================================================== diff -u -r2e265dc8a3c902ebdfdcdf0f1071f9c3c872d822 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/AssessmentSectionHelper.cs (.../AssessmentSectionHelper.cs) (revision 2e265dc8a3c902ebdfdcdf0f1071f9c3c872d822) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/AssessmentSectionHelper.cs (.../AssessmentSectionHelper.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -85,10 +85,10 @@ var assessmentSection = mockRepository.Stub(); assessmentSection.Stub(a => a.Id).Return("21"); assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution( - failureMechanisms, 1) - { - LowerLimitNorm = 0.1 - }); + failureMechanisms, + 1, + 0.1, + 1.0 / 30000)); assessmentSection.Stub(a => a.GetFailureMechanisms()).Return(failureMechanisms); if (addBoundaryDatabase) Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/FailureMechanismContributionTestFactory.cs =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/FailureMechanismContributionTestFactory.cs (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/FailureMechanismContributionTestFactory.cs (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -0,0 +1,62 @@ +// Copyright (C) Stichting Deltares 2017. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Collections.Generic; +using System.Linq; +using Ringtoets.Common.Data.Contribution; +using Ringtoets.Common.Data.FailureMechanism; + +namespace Ringtoets.Common.Data.TestUtil +{ + /// + /// Factory to create simple instances that can be used + /// for testing. + /// + public static class FailureMechanismContributionTestFactory + { + /// + /// Creates a new . + /// + /// The created . + public static FailureMechanismContribution CreateFailureMechanismContribution() + { + return new FailureMechanismContribution(Enumerable.Empty(), + 1, + 1.0 / 30000, + 1.0 / 30000); + } + + /// + /// Creates a new . + /// + /// The failure mechanisms on which to base the . + /// The created . + /// Thrown when is null. + public static FailureMechanismContribution CreateFailureMechanismContribution(IEnumerable failureMechanisms) + { + return new FailureMechanismContribution(failureMechanisms, + 1, + 1.0 / 30000, + 1.0 / 30000); + } + } +} \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/ObservableTestAssessmentSectionStub.cs =================================================================== diff -u -r0b02d2f718cbc5c039f130a0243fe12eb5674a31 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/ObservableTestAssessmentSectionStub.cs (.../ObservableTestAssessmentSectionStub.cs) (revision 0b02d2f718cbc5c039f130a0243fe12eb5674a31) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/ObservableTestAssessmentSectionStub.cs (.../ObservableTestAssessmentSectionStub.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -38,7 +38,10 @@ { public ObservableTestAssessmentSectionStub() { - FailureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), 0); + FailureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), + 0, + 1.0 / 30000, + 1.0 / 30000); BackgroundData = new BackgroundData(new WmtsBackgroundDataConfiguration()) { Name = "Background data" Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/Ringtoets.Common.Data.TestUtil.csproj =================================================================== diff -u -ra1fa1538918813373bcc864f0bce092bf28fd0ce -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/Ringtoets.Common.Data.TestUtil.csproj (.../Ringtoets.Common.Data.TestUtil.csproj) (revision a1fa1538918813373bcc864f0bce092bf28fd0ce) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/Ringtoets.Common.Data.TestUtil.csproj (.../Ringtoets.Common.Data.TestUtil.csproj) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -60,6 +60,7 @@ + Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PresentationObjects/FailureMechanismContributionContextTest.cs =================================================================== diff -u -r0b02d2f718cbc5c039f130a0243fe12eb5674a31 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PresentationObjects/FailureMechanismContributionContextTest.cs (.../FailureMechanismContributionContextTest.cs) (revision 0b02d2f718cbc5c039f130a0243fe12eb5674a31) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PresentationObjects/FailureMechanismContributionContextTest.cs (.../FailureMechanismContributionContextTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -20,14 +20,12 @@ // All rights reserved. using System; -using System.Collections.Generic; -using System.Linq; using Core.Common.Controls.PresentationObjects; using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; -using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Forms.PresentationObjects; namespace Ringtoets.Common.Forms.Test.PresentationObjects @@ -43,8 +41,7 @@ var assessmentSection = mocks.Stub(); mocks.ReplayAll(); - IEnumerable failureMechanisms = Enumerable.Empty(); - var contribution = new FailureMechanismContribution(failureMechanisms, 1.1); + FailureMechanismContribution contribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(); // Call var context = new FailureMechanismContributionContext(contribution, assessmentSection); @@ -60,8 +57,7 @@ public void Constructor_AssessmentSectionIsNull_ThrowArgumentNullException() { // Setup - IEnumerable failureMechanisms = Enumerable.Empty(); - var contribution = new FailureMechanismContribution(failureMechanisms, 1.1); + FailureMechanismContribution contribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(); // Call TestDelegate call = () => new FailureMechanismContributionContext(contribution, null); Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/ReferenceLineMetaImporter/InvalidNorm/invalidNorm.dbf =================================================================== diff -u Binary files differ Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/ReferenceLineMetaImporter/InvalidNorm/invalidNorm.prj =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/ReferenceLineMetaImporter/InvalidNorm/invalidNorm.prj (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/ReferenceLineMetaImporter/InvalidNorm/invalidNorm.prj (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -0,0 +1 @@ +PROJCS["Amersfoort_RD_New",GEOGCS["GCS_Amersfoort",DATUM["D_Amersfoort",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Double_Stereographic"],PARAMETER["latitude_of_origin",52.15616055555555],PARAMETER["central_meridian",5.38763888888889],PARAMETER["scale_factor",0.9999079],PARAMETER["false_easting",155000],PARAMETER["false_northing",463000],UNIT["Meter",1]] \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/ReferenceLineMetaImporter/InvalidNorm/invalidNorm.qpj =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/ReferenceLineMetaImporter/InvalidNorm/invalidNorm.qpj (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/ReferenceLineMetaImporter/InvalidNorm/invalidNorm.qpj (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -0,0 +1 @@ +PROJCS["Amersfoort / RD New",GEOGCS["Amersfoort",DATUM["Amersfoort",SPHEROID["Bessel 1841",6377397.155,299.1528128,AUTHORITY["EPSG","7004"]],TOWGS84[565.4171,50.3319,465.5524,-0.398957388243134,0.343987817378283,-1.87740163998045,4.0725],AUTHORITY["EPSG","6289"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4289"]],PROJECTION["Oblique_Stereographic"],PARAMETER["latitude_of_origin",52.15616055555555],PARAMETER["central_meridian",5.38763888888889],PARAMETER["scale_factor",0.9999079],PARAMETER["false_easting",155000],PARAMETER["false_northing",463000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],AUTHORITY["EPSG","28992"]] Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/ReferenceLineMetaImporter/InvalidNorm/invalidNorm.shp =================================================================== diff -u Binary files differ Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/ReferenceLineMetaImporter/InvalidNorm/invalidNorm.shx =================================================================== diff -u Binary files differ Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneErosionFailureMechanismExtensionsTest.cs =================================================================== diff -u -r2e265dc8a3c902ebdfdcdf0f1071f9c3c872d822 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneErosionFailureMechanismExtensionsTest.cs (.../DuneErosionFailureMechanismExtensionsTest.cs) (revision 2e265dc8a3c902ebdfdcdf0f1071f9c3c872d822) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneErosionFailureMechanismExtensionsTest.cs (.../DuneErosionFailureMechanismExtensionsTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -21,9 +21,6 @@ using System; using NUnit.Framework; -using Rhino.Mocks; -using Ringtoets.Common.Data.AssessmentSection; -using Ringtoets.Common.Data.Contribution; namespace Ringtoets.DuneErosion.Data.Test { @@ -53,27 +50,11 @@ Contribution = contribution }; - var mocks = new MockRepository(); - var assessmentSection = mocks.Stub(); - assessmentSection.Stub(a => a.GetFailureMechanisms()).Return(new[] - { - failureMechanism - }); - assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(new[] - { - failureMechanism - }, 1) - { - LowerLimitNorm = norm - }); - mocks.ReplayAll(); - // Call - double mechanismSpecificNorm = failureMechanism.GetMechanismSpecificNorm(assessmentSection.FailureMechanismContribution.Norm); + double mechanismSpecificNorm = failureMechanism.GetMechanismSpecificNorm(norm); // Assert Assert.AreEqual(expectedNorm, mechanismSpecificNorm); - mocks.VerifyAll(); } } } \ No newline at end of file Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Forms.Test/Views/DuneLocationsViewTest.cs =================================================================== diff -u -r0b02d2f718cbc5c039f130a0243fe12eb5674a31 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Forms.Test/Views/DuneLocationsViewTest.cs (.../DuneLocationsViewTest.cs) (revision 0b02d2f718cbc5c039f130a0243fe12eb5674a31) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Forms.Test/Views/DuneLocationsViewTest.cs (.../DuneLocationsViewTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -33,9 +33,8 @@ using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; -using Ringtoets.Common.Data.Contribution; -using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Service.TestUtil; using Ringtoets.DuneErosion.Data; using Ringtoets.DuneErosion.Forms.GuiServices; @@ -358,7 +357,7 @@ var assessmentSection = mocks.Stub(); assessmentSection.Stub(a => a.Id).Return("1"); assessmentSection.Stub(ass => ass.FailureMechanismContribution) - .Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + .Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); assessmentSection.HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase { FilePath = Path.Combine(testDataPath, "complete.sqlite") Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Plugin.Test/TreeNodeInfos/DuneLocationsContextTreeNodeInfoTest.cs =================================================================== diff -u -r3178e116f5e59e03078d465efeb303c5e232c7bf -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Plugin.Test/TreeNodeInfos/DuneLocationsContextTreeNodeInfoTest.cs (.../DuneLocationsContextTreeNodeInfoTest.cs) (revision 3178e116f5e59e03078d465efeb303c5e232c7bf) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Plugin.Test/TreeNodeInfos/DuneLocationsContextTreeNodeInfoTest.cs (.../DuneLocationsContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -37,6 +37,7 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Service.TestUtil; using Ringtoets.DuneErosion.Data; using Ringtoets.DuneErosion.Data.TestUtil; @@ -414,10 +415,10 @@ failureMechanism }); assessmentSection.Stub(a => a.FailureMechanismContribution) - .Return(new FailureMechanismContribution(new[] + .Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(new[] { failureMechanism - }, 1)); + })); var context = new DuneLocationsContext(failureMechanism.DuneLocations, failureMechanism, assessmentSection); var builder = new CustomItemsOnlyContextMenuBuilder(); Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -r836d03bd77cc7848d686b59c61fd63ef711c7b32 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs) (revision 836d03bd77cc7848d686b59c61fd63ef711c7b32) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -871,7 +871,7 @@ hydraulicBoundaryLocation } }; - assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); var initialOutput = new GrassCoverErosionInwardsOutput(new TestOvertoppingOutput(double.NaN), new TestDikeHeightOutput(double.NaN), Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r7947681ebba776d55c4f78782360256800fa5d1f -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision 7947681ebba776d55c4f78782360256800fa5d1f) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -1459,7 +1459,7 @@ assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase; assessmentSection.Stub(a => a.Id).Return(string.Empty); assessmentSection.Stub(a => a.FailureMechanismContribution) - .Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + .Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); var groupContext = new GrassCoverErosionInwardsCalculationGroupContext(failureMechanism.CalculationsGroup, null, Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs =================================================================== diff -u -r5c0da60fa22b23e4c560df3ed0c76956f0e60f21 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs) (revision 5c0da60fa22b23e4c560df3ed0c76956f0e60f21) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/TreeNodeInfos/GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -745,7 +745,7 @@ assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase; assessmentSection.Stub(a => a.Id).Return(string.Empty); assessmentSection.Stub(a => a.FailureMechanismContribution) - .Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + .Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); var failureMechanismContext = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSection); using (var treeViewControl = new TreeViewControl()) Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsDesignWaterLevelLocationsViewTest.cs =================================================================== diff -u -r566265eddf560e1a0cde3805907760745cb4b830 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsDesignWaterLevelLocationsViewTest.cs (.../GrassCoverErosionOutwardsDesignWaterLevelLocationsViewTest.cs) (revision 566265eddf560e1a0cde3805907760745cb4b830) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsDesignWaterLevelLocationsViewTest.cs (.../GrassCoverErosionOutwardsDesignWaterLevelLocationsViewTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -304,7 +304,7 @@ var assessmentSection = mockRepository.Stub(); assessmentSection.Stub(ass => ass.Id).Return(string.Empty); assessmentSection.Stub(ass => ass.FailureMechanismContribution) - .Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + .Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); assessmentSection.Stub(a => a.Attach(null)).IgnoreArguments(); assessmentSection.Stub(a => a.Detach(null)).IgnoreArguments(); Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsWaveHeightLocationsViewTest.cs =================================================================== diff -u -r566265eddf560e1a0cde3805907760745cb4b830 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsWaveHeightLocationsViewTest.cs (.../GrassCoverErosionOutwardsWaveHeightLocationsViewTest.cs) (revision 566265eddf560e1a0cde3805907760745cb4b830) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/Views/GrassCoverErosionOutwardsWaveHeightLocationsViewTest.cs (.../GrassCoverErosionOutwardsWaveHeightLocationsViewTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -305,7 +305,7 @@ assessmentSection.HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); assessmentSection.Stub(ass => ass.Id).Return(string.Empty); assessmentSection.Stub(ass => ass.FailureMechanismContribution) - .Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + .Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); assessmentSection.Stub(a => a.Attach(null)).IgnoreArguments(); assessmentSection.Stub(a => a.Detach(null)).IgnoreArguments(); Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -r836d03bd77cc7848d686b59c61fd63ef711c7b32 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationContextTreeNodeInfoTest.cs) (revision 836d03bd77cc7848d686b59c61fd63ef711c7b32) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -1136,7 +1136,7 @@ var assessmentSection = mocks.Stub(); assessmentSection.Stub(a => a.Id).Return(string.Empty); - assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); assessmentSection.HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase { FilePath = validFilePath, Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r7947681ebba776d55c4f78782360256800fa5d1f -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision 7947681ebba776d55c4f78782360256800fa5d1f) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../HeightStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -999,7 +999,7 @@ var assessmentSection = mocks.Stub(); assessmentSection.Stub(a => a.Id).Return(string.Empty); - assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); var groupContext = new HeightStructuresCalculationGroupContext(failureMechanism.CalculationsGroup, null, Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresFailureMechanismContextTreeNodeInfoTest.cs =================================================================== diff -u -r5c0da60fa22b23e4c560df3ed0c76956f0e60f21 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresFailureMechanismContextTreeNodeInfoTest.cs (.../HeightStructuresFailureMechanismContextTreeNodeInfoTest.cs) (revision 5c0da60fa22b23e4c560df3ed0c76956f0e60f21) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Plugin.Test/TreeNodeInfos/HeightStructuresFailureMechanismContextTreeNodeInfoTest.cs (.../HeightStructuresFailureMechanismContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -763,7 +763,7 @@ var assessmentSection = mocksRepository.Stub(); assessmentSection.Stub(a => a.Id).Return(string.Empty); - assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase; var failureMechanismContext = new HeightStructuresFailureMechanismContext(failureMechanism, assessmentSection); Index: Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSection.cs =================================================================== diff -u -r1f0cd3fafaa7340a446612870810629587474302 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSection.cs (.../AssessmentSection.cs) (revision 1f0cd3fafaa7340a446612870810629587474302) +++ Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSection.cs (.../AssessmentSection.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Collections.Generic; using System.ComponentModel; using Core.Common.Base; @@ -48,6 +49,7 @@ /// public sealed class AssessmentSection : Observable, IAssessmentSection { + private const double defaultNorm = 1.0 / 30000; private const RingtoetsWellKnownTileSource defaultWellKnownTileSource = RingtoetsWellKnownTileSource.BingAerial; private ReferenceLine referenceLine; @@ -56,7 +58,18 @@ /// /// The composition of the assessment section, e.g. what /// type of elements can be found within the assessment section. - public AssessmentSection(AssessmentSectionComposition composition) + /// The lower limit norm of the assessment section. + /// The signaling norm which of the assessment section. + /// Thrown when: + /// + /// is not in the interval [0.000001, 0.1] or is ; + /// is not in the interval [0.000001, 0.1] or is ; + /// The is larger than . + /// + /// + public AssessmentSection(AssessmentSectionComposition composition, + double lowerLimitNorm = defaultNorm, + double signalingNorm = defaultNorm) { Name = Resources.AssessmentSection_DisplayName; Comments = new Comment(); @@ -88,7 +101,8 @@ const int otherContribution = 30; FailureMechanismContribution = new FailureMechanismContribution(GetContributingFailureMechanisms(), - otherContribution); + otherContribution, + lowerLimitNorm, signalingNorm); ChangeComposition(composition); } Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Commands/AssessmentSectionFromFileCommandHandler.cs =================================================================== diff -u -r22314fc5cda60354caef8993c7da004d784e46c4 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Commands/AssessmentSectionFromFileCommandHandler.cs (.../AssessmentSectionFromFileCommandHandler.cs) (revision 22314fc5cda60354caef8993c7da004d784e46c4) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Commands/AssessmentSectionFromFileCommandHandler.cs (.../AssessmentSectionFromFileCommandHandler.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -60,6 +60,7 @@ /// The parent of the dialog. /// The class owning the application project. /// The document view controller. + /// Thrown when any parameter is null. public AssessmentSectionFromFileCommandHandler(IWin32Window dialogParent, IProjectOwner projectOwner, IDocumentViewController viewController) { if (dialogParent == null) @@ -108,8 +109,13 @@ } ReferenceLineMeta selectedItem = dialog.SelectedReferenceLineMeta; - return selectedItem == null ? null : CreateAssessmentSection(selectedItem, dialog.SelectedLowerLimitNorm, - dialog.SelectedSignalingNorm, dialog.SelectedNormativeNorm); + + return selectedItem == null + ? null + : TryCreateAssessmentSection(selectedItem, + dialog.SelectedLowerLimitNorm, + dialog.SelectedSignalingNorm, + dialog.SelectedNormativeNorm); } } @@ -147,40 +153,107 @@ #region Create AssessmentSection - private static AssessmentSection CreateDikeAssessmentSection() + /// + /// Creates a new instance of with + /// set to . + /// + /// The lower limit norm of the assessment section. + /// The signaling norm which of the assessment section. + /// The newly created . + /// Thrown when: + /// + /// is not in the interval [0.000001, 0.1] or is ; + /// is not in the interval [0.000001, 0.1] or is ; + /// The is larger than . + /// + /// + private static AssessmentSection CreateDikeAssessmentSection(double lowerLimitNorm, double signalingNorm) { - return new AssessmentSection(AssessmentSectionComposition.Dike); + return new AssessmentSection(AssessmentSectionComposition.Dike, lowerLimitNorm, signalingNorm); } - private static AssessmentSection CreateDikeAssessmentSection(int n) + /// + /// Creates a new instance of with + /// set to . + /// + /// The lower limit norm of the assessment section. + /// The signaling norm which of the assessment section. + /// The 'length effect' parameter. + /// The newly created . + /// Thrown when: + /// + /// is not in the interval [0.000001, 0.1] or is ; + /// is not in the interval [0.000001, 0.1] or is ; + /// The is larger than . + /// + /// + private static AssessmentSection CreateDikeAssessmentSection(double lowerLimitNorm, double signalingNorm, int n) { - AssessmentSection assessmentSection = CreateDikeAssessmentSection(); + AssessmentSection assessmentSection = CreateDikeAssessmentSection(lowerLimitNorm, signalingNorm); SetFailureMechanismsValueN(assessmentSection, n); return assessmentSection; } - private static AssessmentSection CreateDuneAssessmentSection(int n) + /// + /// Creates a new instance of with + /// set to . + /// + /// The lower limit norm of the assessment section. + /// The signaling norm which of the assessment section. + /// The 'length effect' parameter. + /// The newly created . + /// Thrown when: + /// + /// is not in the interval [0.000001, 0.1] or is ; + /// is not in the interval [0.000001, 0.1] or is ; + /// The is larger than . + /// + /// + private static AssessmentSection CreateDuneAssessmentSection(double lowerLimitNorm, double signalingNorm, int n) { - var duneAssessmentSection = new AssessmentSection(AssessmentSectionComposition.Dune); + var duneAssessmentSection = new AssessmentSection(AssessmentSectionComposition.Dune, + lowerLimitNorm, + signalingNorm); SetFailureMechanismsValueN(duneAssessmentSection, n); return duneAssessmentSection; } - private AssessmentSection CreateAssessmentSection(ReferenceLineMeta selectedItem, double lowerLimitNorm, - double signalingNorm, NormType normativeNorm) + /// + /// Creates a new instance of . + /// + /// The selected . + /// The lower limit norm of the assessment section. + /// The signaling norm which of the assessment section. + /// The norm type of the assessment section. + /// The newly created . + /// Thrown when: + /// + /// is not in the interval [0.000001, 0.1] or is ; + /// is not in the interval [0.000001, 0.1] or is ; + /// The is larger than . + /// + /// + private AssessmentSection CreateAssessmentSection(ReferenceLineMeta selectedItem, + double lowerLimitNorm, + double signalingNorm, + NormType normativeNorm) { AssessmentSection assessmentSection; AssessmentSectionSettings settingOfSelectedAssessmentSection = settings.FirstOrDefault(s => s.AssessmentSectionId == selectedItem.AssessmentSectionId); if (settingOfSelectedAssessmentSection == null) { log.Warn(Resources.AssessmentSectionFromFileCommandHandler_CreateAssessmentSection_No_settings_found_for_AssessmentSection); - assessmentSection = CreateDikeAssessmentSection(); + assessmentSection = CreateDikeAssessmentSection(lowerLimitNorm, signalingNorm); } else { - assessmentSection = settingOfSelectedAssessmentSection.IsDune ? - CreateDuneAssessmentSection(settingOfSelectedAssessmentSection.N) : - CreateDikeAssessmentSection(settingOfSelectedAssessmentSection.N); + assessmentSection = settingOfSelectedAssessmentSection.IsDune + ? CreateDuneAssessmentSection(lowerLimitNorm, + signalingNorm, + settingOfSelectedAssessmentSection.N) + : CreateDikeAssessmentSection(lowerLimitNorm, + signalingNorm, + settingOfSelectedAssessmentSection.N); } assessmentSection.Name = string.Format(IntegrationResources.AssessmentSection_Id_0, selectedItem.AssessmentSectionId); @@ -195,23 +268,29 @@ assessmentSection.ReferenceLine = selectedItem.ReferenceLine; } - TrySetNormValue(() => assessmentSection.FailureMechanismContribution.LowerLimitNorm = lowerLimitNorm); - TrySetNormValue(() => assessmentSection.FailureMechanismContribution.SignalingNorm = signalingNorm); assessmentSection.FailureMechanismContribution.NormativeNorm = normativeNorm; return assessmentSection; } - private static void TrySetNormValue(Action setValue) + private AssessmentSection TryCreateAssessmentSection(ReferenceLineMeta selectedItem, + double lowerLimitNorm, + double signalingNorm, + NormType normativeNorm) { try { - setValue(); + return CreateAssessmentSection(selectedItem, + lowerLimitNorm, + signalingNorm, + normativeNorm); } catch (ArgumentOutOfRangeException exception) { - log.Warn(string.Format(Resources.AssessmentSectionFromFileCommandHandler_CreateAssessmentSection_Unable_to_set_Value_0, exception.ActualValue), exception); + log.Error(string.Format(Resources.AssessmentSectionFromFileCommandHandler_CreateAssessmentSection_Unable_to_create_assessmentSection_with_Norm_0, exception.ActualValue), + exception); } + return null; } #endregion Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -r91cd4c9e69ae988486a04f3e897c4d7bf9cb9e7f -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 91cd4c9e69ae988486a04f3e897c4d7bf9cb9e7f) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -186,12 +186,12 @@ } /// - /// Looks up a localized string similar to De normwaarde {0} kan niet worden overgenomen. Normwaarden moeten positief zijn.. + /// Looks up a localized string similar to Het traject kan niet aangemaakt worden met normwaarde {0}.. /// - public static string AssessmentSectionFromFileCommandHandler_CreateAssessmentSection_Unable_to_set_Value_0 { + public static string AssessmentSectionFromFileCommandHandler_CreateAssessmentSection_Unable_to_create_assessmentSection_with_Norm_0 { get { - return ResourceManager.GetString("AssessmentSectionFromFileCommandHandler_CreateAssessmentSection_Unable_to_set_Val" + - "ue_0", resourceCulture); + return ResourceManager.GetString("AssessmentSectionFromFileCommandHandler_CreateAssessmentSection_Unable_to_create_" + + "assessmentSection_with_Norm_0", resourceCulture); } } Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.resx =================================================================== diff -u -r91cd4c9e69ae988486a04f3e897c4d7bf9cb9e7f -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.resx (.../Resources.resx) (revision 91cd4c9e69ae988486a04f3e897c4d7bf9cb9e7f) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.resx (.../Resources.resx) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -213,8 +213,8 @@ Het importeren van de referentielijn is mislukt. - - De normwaarde {0} kan niet worden overgenomen. Normwaarden moeten positief zijn. + + Het traject kan niet aangemaakt worden met normwaarde {0}. ..\Resources\folder-stand32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a Index: Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/AssessmentSectionTest.cs =================================================================== diff -u -r1f0cd3fafaa7340a446612870810629587474302 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/AssessmentSectionTest.cs (.../AssessmentSectionTest.cs) (revision 1f0cd3fafaa7340a446612870810629587474302) +++ Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/AssessmentSectionTest.cs (.../AssessmentSectionTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -24,6 +24,7 @@ using System.Linq; using Core.Common.Base; using Core.Common.Base.Geometry; +using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; @@ -152,6 +153,72 @@ } [Test] + [TestCaseSource(nameof(GetInvalidNormValues), + new object[] + { + "Constructor_InvalidLowerLimitNorm_ThrowsArgumentOutOfRangeException" + })] + [SetCulture("nl-NL")] + public void Constructor_InvalidLowerLimitNorm_ThrowsArgumentOutOfRangeException(double newNorm) + { + // Setup + var random = new Random(21); + var composition = random.NextEnumValue(); + + // Call + TestDelegate test = () => new AssessmentSection(composition, + newNorm, + 0.000001); + + // Assert + const string expectedMessage = "De waarde van de norm moet in het bereik [0,000001, 0,1] liggen."; + var exception = Assert.Throws(test); + StringAssert.StartsWith(expectedMessage, exception.Message); + } + + [Test] + [TestCaseSource(nameof(GetInvalidNormValues), + new object[] + { + "Constructor_InvalidSignalingNorm_ThrowsArgumentOutOfRangeException" + })] + [SetCulture("nl-NL")] + public void Constructor_InvalidSignalingNorm_ThrowsArgumentOutOfRangeException(double newNorm) + { + // Setup + var random = new Random(21); + var composition = random.NextEnumValue(); + + // Call + TestDelegate test = () => new AssessmentSection(composition, + 0.1, + newNorm); + + // Assert + const string expectedMessage = "De waarde van de norm moet in het bereik [0,000001, 0,1] liggen."; + var exception = Assert.Throws(test); + StringAssert.StartsWith(expectedMessage, exception.Message); + } + + [Test] + public void Constructor_SignalingNormLargerThanLowerLimitNorm_ThrowsArgumentOutOfRangeException() + { + // Setup + var random = new Random(21); + var composition = random.NextEnumValue(); + + // Call + TestDelegate test = () => new AssessmentSection(composition, + 0.01, + 0.1); + + // Assert + const string expectedMessage = "De signaleringswaarde moet gelijk zijn aan of kleiner zijn dan de ondergrens."; + var exception = Assert.Throws(test); + StringAssert.StartsWith(expectedMessage, exception.Message); + } + + [Test] public void Name_SetingNewValue_GetNewValue() { // Setup @@ -257,9 +324,9 @@ bool[] relevancies) { // Setup - AssessmentSectionComposition initialComposition = composition == AssessmentSectionComposition.Dike ? - AssessmentSectionComposition.Dune : - AssessmentSectionComposition.Dike; + AssessmentSectionComposition initialComposition = composition == AssessmentSectionComposition.Dike + ? AssessmentSectionComposition.Dune + : AssessmentSectionComposition.Dike; var assessmentSection = new AssessmentSection(initialComposition); // Precondition @@ -499,5 +566,19 @@ true }); } + + private static IEnumerable GetInvalidNormValues(string name) + { + yield return new TestCaseData(double.MaxValue) + .SetName($"{name} maxValue"); + yield return new TestCaseData(double.MinValue) + .SetName($"{name} minValue"); + yield return new TestCaseData(double.NaN) + .SetName($"{name} NaN"); + yield return new TestCaseData(0.1 + 1e-6) + .SetName($"{name} maximum boundary"); + yield return new TestCaseData(0.000001 - 1e-6) + .SetName($"{name} minimum boundary"); + } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/Ringtoets.Integration.Data.Test.csproj =================================================================== diff -u -ra1fa1538918813373bcc864f0bce092bf28fd0ce -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/Ringtoets.Integration.Data.Test.csproj (.../Ringtoets.Integration.Data.Test.csproj) (revision a1fa1538918813373bcc864f0bce092bf28fd0ce) +++ Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/Ringtoets.Integration.Data.Test.csproj (.../Ringtoets.Integration.Data.Test.csproj) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -79,6 +79,10 @@ {3bbfd65b-b277-4e50-ae6d-bd24c3434609} Core.Common.Base + + {D749EE4C-CE50-4C17-BF01-9A953028C126} + Core.Common.TestUtil + {c6309704-d67b-434c-bc98-9f8910bc1d10} Ringtoets.ClosingStructures.Data Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Commands/AssessmentSectionFromFileCommandHandlerTest.cs =================================================================== diff -u -r22314fc5cda60354caef8993c7da004d784e46c4 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Commands/AssessmentSectionFromFileCommandHandlerTest.cs (.../AssessmentSectionFromFileCommandHandlerTest.cs) (revision 22314fc5cda60354caef8993c7da004d784e46c4) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Commands/AssessmentSectionFromFileCommandHandlerTest.cs (.../AssessmentSectionFromFileCommandHandlerTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -29,12 +29,14 @@ using Core.Common.Gui; using Core.Common.Gui.Forms.ViewHost; using Core.Common.TestUtil; +using log4net.Core; using NUnit.Extensions.Forms; using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Forms.Helpers; +using Ringtoets.Common.Forms.TestUtil; using Ringtoets.Integration.Data; using Ringtoets.Integration.Forms.Commands; @@ -450,6 +452,51 @@ mockRepository.VerifyAll(); } + [Test] + public void AddAssessmentSectionFromFile_ShapeWithInvalidNorm_LogsAndProjectOwnerNotUpdated() + { + // Setup + var mockRepository = new MockRepository(); + var parentDialog = mockRepository.Stub(); + var project = new RingtoetsProject(); + var projectOwner = mockRepository.Stub(); + projectOwner.Stub(po => po.Project).Return(project); + var viewController = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + + var assessmentSectionFromFileCommandHandler = + new AssessmentSectionFromFileCommandHandler(parentDialog, projectOwner, viewController); + string pathValidFolder = Path.Combine(testDataPath, "InvalidNorm"); + SetShapeFileDirectory(assessmentSectionFromFileCommandHandler, pathValidFolder); + + DialogBoxHandler = (name, wnd) => + { + var selectionDialog = (ReferenceLineMetaSelectionDialog) new FormTester(name).TheObject; + + DataGridView dataGridView = ControlTestHelper.GetDataGridView(selectionDialog, "dataGridView"); + dataGridView.Rows[0].Selected = true; + + new ButtonTester("Ok", selectionDialog).Click(); + }; + + // Call + Action call = () => assessmentSectionFromFileCommandHandler.AddAssessmentSectionFromFile(); + + // Assert + const string expectedMessage = "Het traject kan niet aangemaakt worden met normwaarde 1.12500011250001E-07."; + TestHelper.AssertLogMessagesWithLevelAndLoggedExceptions(call, tuples => + { + Tuple tuple = tuples.Single(); + Assert.AreEqual(expectedMessage, tuple.Item1); + Assert.AreEqual(Level.Error, tuple.Item2); + Assert.IsInstanceOf(tuple.Item3); + }); + AssessmentSection assessmentSection = project.AssessmentSections.FirstOrDefault(); + Assert.IsNull(assessmentSection); + + mockRepository.VerifyAll(); + } + private static void SetShapeFileDirectory(AssessmentSectionFromFileCommandHandler commandHandler, string nonExistingFolder) { const string privateShapeFileDirectoryName = "shapeFileDirectory"; @@ -469,14 +516,14 @@ private static AssessmentSection TestAssessmentSection1_2(bool useSignalingValue) { - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike, + 1.0 / 1000, + 1.0 / 3000) { Id = "1-2", Name = "Traject 1-2", FailureMechanismContribution = { - LowerLimitNorm = 1.0 / 1000, - SignalingNorm = 1.0 / 3000, NormativeNorm = useSignalingValue ? NormType.Signaling : NormType.LowerLimit } }; @@ -502,14 +549,14 @@ new Point2D(155521.4761, 464360.7401) }); - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dune) + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dune, + 1.0 / 100, + 1.0 / 300) { Id = "2-1", Name = "Traject 2-1", FailureMechanismContribution = { - LowerLimitNorm = 1.0 / 100, - SignalingNorm = 1.0 / 300, NormativeNorm = NormType.Signaling }, ReferenceLine = referenceLine, @@ -541,14 +588,14 @@ private static AssessmentSection TestAssessmentSection3_3() { - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike, + 1.0 / 100, + 1.0 / 300) { Id = "3-3", Name = "Traject 3-3", FailureMechanismContribution = { - LowerLimitNorm = 1.0 / 100, - SignalingNorm = 1.0 / 300, NormativeNorm = NormType.Signaling }, ReferenceLine = new ReferenceLine() Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/FailureMechanismContributionPropertiesTest.cs =================================================================== diff -u -rd491788b870f9a9d2e08c93b52777f613809a133 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/FailureMechanismContributionPropertiesTest.cs (.../FailureMechanismContributionPropertiesTest.cs) (revision d491788b870f9a9d2e08c93b52777f613809a133) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/FailureMechanismContributionPropertiesTest.cs (.../FailureMechanismContributionPropertiesTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -22,7 +22,6 @@ using System; using System.ComponentModel; using System.Globalization; -using System.Linq; using Core.Common.Base; using Core.Common.Gui.Commands; using Core.Common.Gui.PropertyBag; @@ -33,7 +32,7 @@ using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; -using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Forms.Helpers; using Ringtoets.Common.Forms.PropertyClasses; using Ringtoets.Common.Forms.TestUtil; @@ -78,7 +77,7 @@ var assessmentSectionChangeHandler = mockRepository.Stub(); mockRepository.ReplayAll(); - FailureMechanismContribution failureMechanismContribution = CreateFailureMechanismContribution(); + FailureMechanismContribution failureMechanismContribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(); // Call TestDelegate test = () => new FailureMechanismContributionProperties( @@ -102,7 +101,7 @@ var assessmentSectionChangeHandler = mockRepository.Stub(); mockRepository.ReplayAll(); - FailureMechanismContribution failureMechanismContribution = CreateFailureMechanismContribution(); + FailureMechanismContribution failureMechanismContribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(); // Call TestDelegate test = () => new FailureMechanismContributionProperties( @@ -126,7 +125,7 @@ var failureMechanismChangeHandler = mockRepository.Stub(); mockRepository.ReplayAll(); - FailureMechanismContribution failureMechanismContribution = CreateFailureMechanismContribution(); + FailureMechanismContribution failureMechanismContribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(); // Call TestDelegate test = () => new FailureMechanismContributionProperties( @@ -151,7 +150,7 @@ var assessmentSectionChangeHandler = mockRepository.Stub(); mockRepository.ReplayAll(); - FailureMechanismContribution failureMechanismContribution = CreateFailureMechanismContribution(); + FailureMechanismContribution failureMechanismContribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(); // Call var properties = new FailureMechanismContributionProperties( @@ -208,7 +207,7 @@ var assessmentSectionChangeHandler = mocks.Stub(); mocks.ReplayAll(); - var contribution = new FailureMechanismContribution(Enumerable.Empty(), 1.1); + FailureMechanismContribution contribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(); // Call var properties = new FailureMechanismContributionProperties( @@ -493,10 +492,5 @@ Assert.IsTrue(handler.Called); mocks.VerifyAll(); } - - private static FailureMechanismContribution CreateFailureMechanismContribution() - { - return new FailureMechanismContribution(Enumerable.Empty(), new Random(21).Next(0, 100)); - } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj =================================================================== diff -u -ra1fa1538918813373bcc864f0bce092bf28fd0ce -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision a1fa1538918813373bcc864f0bce092bf28fd0ce) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -43,6 +43,10 @@ ..\..\..\..\packages\BruTile.0.19.0\lib\net40\BruTile.dll True + + ..\..\..\..\packages\log4net.2.0.4\lib\net40-full\log4net.dll + True + ..\..\..\..\packages\NUnit.3.8.1\lib\net40\nunit.framework.dll True Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs =================================================================== diff -u -r5e65d3b0d806b68c2deaaa2574dd3bcf100afe05 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision 5e65d3b0d806b68c2deaaa2574dd3bcf100afe05) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -35,6 +35,7 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.Integration.Data; using Ringtoets.Integration.Forms.Views; @@ -169,6 +170,7 @@ // Setup var random = new Random(21); int otherContribution = random.Next(0, 100); + const double norm = 1.0 / 30000; var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); @@ -187,7 +189,7 @@ var initialContribution = new FailureMechanismContribution(new[] { someMechanism - }, otherContribution); + }, otherContribution, norm, norm); using (var distributionView = new FailureMechanismContributionView(viewCommands) { @@ -233,20 +235,18 @@ mockRepository.ReplayAll(); var initialContribution = new FailureMechanismContribution(new[] - { - someMechanism - }, random.Next(0, 100)) - { - LowerLimitNorm = 1.0 / initialReturnPeriod - }; + { + someMechanism + }, random.Next(0, 100), + 1.0 / initialReturnPeriod, + 1.0 / initialReturnPeriod); var newContribution = new FailureMechanismContribution(new[] - { - someMechanism - }, random.Next(0, 100)) - { - LowerLimitNorm = 1.0 / newReturnPeriod - }; + { + someMechanism + }, random.Next(0, 100), + 1.0 / newReturnPeriod, + 1.0 / newReturnPeriod); using (var distributionView = new FailureMechanismContributionView(viewCommands) { @@ -289,12 +289,11 @@ mockRepository.ReplayAll(); var contribution = new FailureMechanismContribution(new[] - { - someMechanism - }, random.Next(0, 100)) - { - LowerLimitNorm = 1.0 / initialReturnPeriod - }; + { + someMechanism + }, random.Next(0, 100), + 1.0 / initialReturnPeriod, + 1.0 / 300); using (var distributionView = new FailureMechanismContributionView(viewCommands) { @@ -340,11 +339,7 @@ var contribution = new FailureMechanismContribution(new[] { someMechanism - }, random.Next(0, 100)) - { - LowerLimitNorm = 1.0 / lowerLimitNorm, - SignalingNorm = 1.0 / signalingNorm - }; + }, random.Next(0, 100), 1.0 / lowerLimitNorm, 1.0 / signalingNorm); using (var distributionView = new FailureMechanismContributionView(viewCommands) { @@ -378,6 +373,7 @@ { // Given var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + const double norm = 1.0 / 30000; var mockRepository = new MockRepository(); var viewCommands = mockRepository.Stub(); @@ -394,7 +390,7 @@ var contributionData = new FailureMechanismContribution(new[] { failureMechanism - }, 100); + }, 100, norm, norm); view.Data = contributionData; view.AssessmentSection = assessmentSection; @@ -415,6 +411,7 @@ { // Given var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + const double norm = 1.0 / 30000; var mockRepository = new MockRepository(); var viewCommands = mockRepository.Stub(); @@ -430,7 +427,7 @@ var contributionData = new FailureMechanismContribution(new[] { failureMechanism - }, 100); + }, 100, norm, norm); view.Data = contributionData; view.AssessmentSection = assessmentSection; @@ -467,9 +464,11 @@ { // When var contributionData = new FailureMechanismContribution(new[] - { - failureMechanism - }, 100.0 - contribution); + { + failureMechanism + }, 100.0 - contribution, + norm, + norm); view.Data = contributionData; view.AssessmentSection = assessmentSection; @@ -576,13 +575,11 @@ { ShowFormWithView(view); - var failureMechanisms = new[] + FailureMechanismContribution contribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(new[] { failureMechanism - }; + }); - var contribution = new FailureMechanismContribution(failureMechanisms, 50.0); - // When view.Data = contribution; @@ -618,13 +615,11 @@ { ShowFormWithView(view); - var failureMechanisms = new[] + FailureMechanismContribution contribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(new[] { failureMechanism - }; + }); - var contribution = new FailureMechanismContribution(failureMechanisms, 50.0); - // When view.Data = contribution; @@ -668,21 +663,22 @@ .IgnoreArguments() .WhenCalled(invocation => failureMechanismObservers.Remove((IObserver) invocation.Arguments[0])); - var failureMechanisms = new[] + var assessmentSection = mocks.Stub(); + assessmentSection.Stub(section => section.GetFailureMechanisms()).Return(new[] { failureMechanism - }; - - var assessmentSection = mocks.Stub(); - assessmentSection.Stub(section => section.GetFailureMechanisms()).Return(failureMechanisms); + }); assessmentSection.Stub(section => section.Composition).Return(AssessmentSectionComposition.Dike); mocks.ReplayAll(); using (var view = new FailureMechanismContributionView(viewCommands)) { ShowFormWithView(view); - var contribution = new FailureMechanismContribution(failureMechanisms, 50.0); + FailureMechanismContribution contribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(new[] + { + failureMechanism + }); view.Data = contribution; view.AssessmentSection = assessmentSection; @@ -744,11 +740,10 @@ viewCommands.Expect(c => c.RemoveAllViewsForItem(failureMechanism)); mocks.ReplayAll(); - var failureMechanisms = new[] + FailureMechanismContribution contribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(new[] { failureMechanism - }; - var contribution = new FailureMechanismContribution(failureMechanisms, 50.0); + }); using (var view = new FailureMechanismContributionView(viewCommands)) { @@ -780,8 +775,7 @@ { ShowFormWithView(view); - IEnumerable failureMechanisms = Enumerable.Empty(); - var contribution = new FailureMechanismContribution(failureMechanisms, 50.0); + FailureMechanismContribution contribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(); // Precondition: FailureMechanismContributionItem[] contributionItems = contribution.Distribution.ToArray(); Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/packages.config =================================================================== diff -u -ra1fa1538918813373bcc864f0bce092bf28fd0ce -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/packages.config (.../packages.config) (revision a1fa1538918813373bcc864f0bce092bf28fd0ce) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/packages.config (.../packages.config) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -23,6 +23,7 @@ --> + \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/PropertyInfos/FailureMechanismContributionContextPropertyInfoTest.cs =================================================================== diff -u -r0b02d2f718cbc5c039f130a0243fe12eb5674a31 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/PropertyInfos/FailureMechanismContributionContextPropertyInfoTest.cs (.../FailureMechanismContributionContextPropertyInfoTest.cs) (revision 0b02d2f718cbc5c039f130a0243fe12eb5674a31) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/PropertyInfos/FailureMechanismContributionContextPropertyInfoTest.cs (.../FailureMechanismContributionContextPropertyInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -30,6 +30,7 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Integration.Forms.PropertyClasses; @@ -70,8 +71,7 @@ { plugin.Gui = gui; - IEnumerable failureMechanisms = Enumerable.Empty(); - var failureMechanismContribution = new FailureMechanismContribution(failureMechanisms, 1.1); + FailureMechanismContribution failureMechanismContribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(); var context = new FailureMechanismContributionContext(failureMechanismContribution, assessmentSection); PropertyInfo info = GetInfo(plugin); Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/FailureMechanismContributionContextTreeNodeInfoTest.cs =================================================================== diff -u -r3178e116f5e59e03078d465efeb303c5e232c7bf -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/FailureMechanismContributionContextTreeNodeInfoTest.cs (.../FailureMechanismContributionContextTreeNodeInfoTest.cs) (revision 3178e116f5e59e03078d465efeb303c5e232c7bf) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/FailureMechanismContributionContextTreeNodeInfoTest.cs (.../FailureMechanismContributionContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -28,8 +28,7 @@ using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; -using Ringtoets.Common.Data.Contribution; -using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Forms.PresentationObjects; using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; @@ -121,10 +120,9 @@ public void ContextMenuStrip_Always_CallsContextMenuBuilderMethods() { // Setup - var contribution = new FailureMechanismContribution(Enumerable.Empty(), 100.0); - var assessmentSection = mocks.Stub(); - var context = new FailureMechanismContributionContext(contribution, assessmentSection); + var context = new FailureMechanismContributionContext(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution(), + assessmentSection); var menuBuilder = mocks.StrictMock(); using (mocks.Ordered()) Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/TreeNodeInfos/StabilityPointStructuresCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -r836d03bd77cc7848d686b59c61fd63ef711c7b32 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/TreeNodeInfos/StabilityPointStructuresCalculationContextTreeNodeInfoTest.cs (.../StabilityPointStructuresCalculationContextTreeNodeInfoTest.cs) (revision 836d03bd77cc7848d686b59c61fd63ef711c7b32) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/TreeNodeInfos/StabilityPointStructuresCalculationContextTreeNodeInfoTest.cs (.../StabilityPointStructuresCalculationContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -958,7 +958,7 @@ } }; assessmentSection.Stub(a => a.Id).Return(string.Empty); - assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); var initialStructuresOutput = new TestStructuresOutput(); var parent = new CalculationGroup(); Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/TreeNodeInfos/StabilityPointStructuresCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r7947681ebba776d55c4f78782360256800fa5d1f -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/TreeNodeInfos/StabilityPointStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../StabilityPointStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision 7947681ebba776d55c4f78782360256800fa5d1f) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/TreeNodeInfos/StabilityPointStructuresCalculationGroupContextTreeNodeInfoTest.cs (.../StabilityPointStructuresCalculationGroupContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -1339,7 +1339,7 @@ var assessmentSection = mocks.Stub(); assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase; assessmentSection.Stub(a => a.Id).Return(string.Empty); - assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); var groupContext = new StabilityPointStructuresCalculationGroupContext(failureMechanism.CalculationsGroup, null, Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/TreeNodeInfos/StabilityPointStructuresFailureMechanismContextTreeNodeInfoTest.cs =================================================================== diff -u -r5c0da60fa22b23e4c560df3ed0c76956f0e60f21 -rdcc94dbcc481ef9f6f83308b82096f85f9cb6f01 --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/TreeNodeInfos/StabilityPointStructuresFailureMechanismContextTreeNodeInfoTest.cs (.../StabilityPointStructuresFailureMechanismContextTreeNodeInfoTest.cs) (revision 5c0da60fa22b23e4c560df3ed0c76956f0e60f21) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/TreeNodeInfos/StabilityPointStructuresFailureMechanismContextTreeNodeInfoTest.cs (.../StabilityPointStructuresFailureMechanismContextTreeNodeInfoTest.cs) (revision dcc94dbcc481ef9f6f83308b82096f85f9cb6f01) @@ -671,7 +671,7 @@ var assessmentSection = mocksRepository.Stub(); assessmentSection.Stub(a => a.Id).Return(string.Empty); - assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(Enumerable.Empty(), 1)); + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(FailureMechanismContributionTestFactory.CreateFailureMechanismContribution()); assessmentSection.HydraulicBoundaryDatabase = hydraulicBoundaryDatabase; var failureMechanismContext = new StabilityPointStructuresFailureMechanismContext(failureMechanism, assessmentSection);