Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.cs =================================================================== diff -u -r9e6869de553715aefe4752478334c3a6a3f83340 -r8588a6a0d9c1d11a496590ef3eaaccd5cf3a1108 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.cs) (revision 9e6869de553715aefe4752478334c3a6a3f83340) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.cs) (revision 8588a6a0d9c1d11a496590ef3eaaccd5cf3a1108) @@ -21,10 +21,13 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Forms.Helpers; +using Ringtoets.Revetment.Data; using Ringtoets.WaveImpactAsphaltCover.Data; namespace Ringtoets.WaveImpactAsphaltCover.Forms @@ -36,43 +39,55 @@ { /// /// Adds based on the - /// in the . + /// in the and sets their initial category type input based on the . /// /// Locations to base the calculation upon. /// The list to update. + /// The to set the category type input for. /// Throw when any input parameter is null. + /// Thrown when is an invalid value. + /// Thrown when is a valid value, + /// but unsupported. public static void AddCalculationsFromLocations(IEnumerable locations, - List calculations) + List calculations, + NormType normType) { if (locations == null) { throw new ArgumentNullException(nameof(locations)); } + if (calculations == null) { throw new ArgumentNullException(nameof(calculations)); } - foreach (ICalculationBase calculation in locations.Select(location => CreateWaveImpactAsphaltCoverWaveConditionsCalculation(location, calculations))) + + foreach (ICalculationBase calculation in locations.Select(location => CreateWaveImpactAsphaltCoverWaveConditionsCalculation(location, + calculations, + normType))) { calculations.Add(calculation); } } private static ICalculationBase CreateWaveImpactAsphaltCoverWaveConditionsCalculation( HydraulicBoundaryLocation hydraulicBoundaryLocation, - IEnumerable calculations) + IEnumerable calculations, + NormType normType) { string nameBase = hydraulicBoundaryLocation.Name; string name = NamingHelper.GetUniqueName(calculations, nameBase, c => c.Name); - return new WaveImpactAsphaltCoverWaveConditionsCalculation + var calculation = new WaveImpactAsphaltCoverWaveConditionsCalculation { Name = name, InputParameters = { HydraulicBoundaryLocation = hydraulicBoundaryLocation } }; + WaveConditionsInputHelper.SetCategoryType(calculation.InputParameters, normType); + return calculation; } } } \ No newline at end of file Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs =================================================================== diff -u -r7979fad76dccece25f59baeb772540e4416adefc -r8588a6a0d9c1d11a496590ef3eaaccd5cf3a1108 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs (.../WaveImpactAsphaltCoverPlugin.cs) (revision 7979fad76dccece25f59baeb772540e4416adefc) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs (.../WaveImpactAsphaltCoverPlugin.cs) (revision 8588a6a0d9c1d11a496590ef3eaaccd5cf3a1108) @@ -32,6 +32,7 @@ using Core.Common.Util; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Forms; using Ringtoets.Common.Forms.ChangeHandlers; @@ -500,18 +501,22 @@ if (dialog.SelectedItems.Any()) { - GenerateWaveImpactAsphaltCoverWaveConditionsCalculations(dialog.SelectedItems, nodeData.WrappedData.Children); + GenerateWaveImpactAsphaltCoverWaveConditionsCalculations(dialog.SelectedItems, + nodeData.WrappedData.Children, + nodeData.AssessmentSection.FailureMechanismContribution.NormativeNorm); nodeData.NotifyObservers(); } } } private static void GenerateWaveImpactAsphaltCoverWaveConditionsCalculations(IEnumerable hydraulicBoundaryLocations, - List calculationCollection) + List calculationCollection, + NormType normType) { WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.AddCalculationsFromLocations( hydraulicBoundaryLocations, - calculationCollection); + calculationCollection, + normType); } private static void AddWaveConditionsCalculation(WaveImpactAsphaltCoverWaveConditionsCalculationGroupContext nodeData) Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelperTest.cs =================================================================== diff -u -r5ca67bdbaab0f6a9fb7682c06140b93bb0f5b5bb -r8588a6a0d9c1d11a496590ef3eaaccd5cf3a1108 --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelperTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelperTest.cs) (revision 5ca67bdbaab0f6a9fb7682c06140b93bb0f5b5bb) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelperTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelperTest.cs) (revision 8588a6a0d9c1d11a496590ef3eaaccd5cf3a1108) @@ -22,9 +22,13 @@ using System; using System.Collections.Generic; using System.Linq; +using Core.Common.TestUtil; using NUnit.Framework; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Revetment.Data; using Ringtoets.WaveImpactAsphaltCover.Data; namespace Ringtoets.WaveImpactAsphaltCover.Forms.Test @@ -36,10 +40,13 @@ public void AddCalculationsFromLocations_LocationsIsNull_ThrowsArgumentNullException() { // Setup + var random = new Random(21); var calculations = new List(); // Call - TestDelegate test = () => WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.AddCalculationsFromLocations(null, calculations); + TestDelegate test = () => WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.AddCalculationsFromLocations(null, + calculations, + random.NextEnumValue()); // Assert string paramName = Assert.Throws(test).ParamName; @@ -50,10 +57,13 @@ public void AddCalculationsFromLocations_CalculationsIsNull_ThrowsArgumentNullException() { // Setup + var random = new Random(21); IEnumerable locations = Enumerable.Empty(); // Call - TestDelegate test = () => WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.AddCalculationsFromLocations(locations, null); + TestDelegate test = () => WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.AddCalculationsFromLocations(locations, + null, + random.NextEnumValue()); // Assert string paramName = Assert.Throws(test).ParamName; @@ -64,18 +74,25 @@ public void AddCalculationsFromLocations_EmptyCollections_ReturnsEmptyList() { // Setup + var random = new Random(21); IEnumerable locations = Enumerable.Empty(); var calculationBases = new List(); // Call - WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.AddCalculationsFromLocations(locations, calculationBases); + WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.AddCalculationsFromLocations(locations, + calculationBases, + random.NextEnumValue()); // Assert CollectionAssert.IsEmpty(calculationBases); } [Test] - public void AddCalculationsFromLocations_MultipleCalculationsEmptyCalculationBase_ReturnsUniquelyNamedCalculations() + [TestCase(NormType.LowerLimit, AssessmentSectionCategoryType.LowerLimitNorm)] + [TestCase(NormType.Signaling, AssessmentSectionCategoryType.SignalingNorm)] + public void AddCalculationsFromLocations_MultipleCalculationsEmptyCalculationBase_ReturnsUniquelyNamedCalculations( + NormType normType, + AssessmentSectionCategoryType expectedAssessmentSectionCategoryType) { // Setup const string name = "name"; @@ -87,21 +104,31 @@ var calculationBases = new List(); // Call - WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.AddCalculationsFromLocations(locations, calculationBases); + WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.AddCalculationsFromLocations(locations, + calculationBases, + normType); // Assert Assert.AreEqual(2, calculationBases.Count); var firstCalculation = (WaveImpactAsphaltCoverWaveConditionsCalculation) calculationBases.First(); Assert.AreEqual(name, firstCalculation.Name); - Assert.AreEqual(locations[0], firstCalculation.InputParameters.HydraulicBoundaryLocation); + AssessmentSectionCategoryWaveConditionsInput firstCalculationInput = firstCalculation.InputParameters; + Assert.AreEqual(locations[0], firstCalculationInput.HydraulicBoundaryLocation); + Assert.AreEqual(expectedAssessmentSectionCategoryType, firstCalculationInput.CategoryType); var secondCalculation = (WaveImpactAsphaltCoverWaveConditionsCalculation) calculationBases.ElementAt(1); Assert.AreEqual($"{name} (1)", secondCalculation.Name); - Assert.AreSame(locations[1], secondCalculation.InputParameters.HydraulicBoundaryLocation); + AssessmentSectionCategoryWaveConditionsInput secondCalculationInput = secondCalculation.InputParameters; + Assert.AreSame(locations[1], secondCalculationInput.HydraulicBoundaryLocation); + Assert.AreEqual(expectedAssessmentSectionCategoryType, secondCalculationInput.CategoryType); } [Test] - public void AddCalculationsFromLocations_MultipleCalculationsAndDuplicateNameInCalculationBase_ReturnsUniquelyNamedCalculations() + [TestCase(NormType.LowerLimit, AssessmentSectionCategoryType.LowerLimitNorm)] + [TestCase(NormType.Signaling, AssessmentSectionCategoryType.SignalingNorm)] + public void AddCalculationsFromLocations_MultipleCalculationsAndDuplicateNameInCalculationBase_ReturnsUniquelyNamedCalculations( + NormType normType, + AssessmentSectionCategoryType expectedAssessmentSectionCategoryType) { // Setup const string name = "name"; @@ -119,17 +146,21 @@ }; // Call - WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.AddCalculationsFromLocations(locations, calculationBases); + WaveImpactAsphaltCoverWaveConditionsCalculationConfigurationHelper.AddCalculationsFromLocations(locations, calculationBases, normType); // Assert Assert.AreEqual(3, calculationBases.Count); var firstCalculation = (WaveImpactAsphaltCoverWaveConditionsCalculation) calculationBases.ElementAt(1); Assert.AreEqual($"{name} (1)", firstCalculation.Name); - Assert.AreEqual(locations[0], firstCalculation.InputParameters.HydraulicBoundaryLocation); + AssessmentSectionCategoryWaveConditionsInput firstCalculationInput = firstCalculation.InputParameters; + Assert.AreEqual(locations[0], firstCalculationInput.HydraulicBoundaryLocation); + Assert.AreEqual(expectedAssessmentSectionCategoryType, firstCalculationInput.CategoryType); var secondCalculation = (WaveImpactAsphaltCoverWaveConditionsCalculation) calculationBases.ElementAt(2); Assert.AreEqual($"{name} (2)", secondCalculation.Name); - Assert.AreSame(locations[1], secondCalculation.InputParameters.HydraulicBoundaryLocation); + AssessmentSectionCategoryWaveConditionsInput secondCalculationInput = secondCalculation.InputParameters; + Assert.AreSame(locations[1], secondCalculationInput.HydraulicBoundaryLocation); + Assert.AreEqual(expectedAssessmentSectionCategoryType, secondCalculationInput.CategoryType); } } } \ No newline at end of file Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/TreeNodeInfos/WaveImpactAsphaltCoverWaveConditionsCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r7979fad76dccece25f59baeb772540e4416adefc -r8588a6a0d9c1d11a496590ef3eaaccd5cf3a1108 --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/TreeNodeInfos/WaveImpactAsphaltCoverWaveConditionsCalculationGroupContextTreeNodeInfoTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationGroupContextTreeNodeInfoTest.cs) (revision 7979fad76dccece25f59baeb772540e4416adefc) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Plugin.Test/TreeNodeInfos/WaveImpactAsphaltCoverWaveConditionsCalculationGroupContextTreeNodeInfoTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationGroupContextTreeNodeInfoTest.cs) (revision 8588a6a0d9c1d11a496590ef3eaaccd5cf3a1108) @@ -1488,6 +1488,9 @@ public void GivenDialogGenerateCalculationButtonClicked_WhenCalculationSelectedAndDialogClosed_ThenUpdateCalculationGroup() { // Given + var random = new Random(21); + var normType = random.NextEnumValue(); + using (var treeViewControl = new TreeViewControl()) { var existingGroup = new CalculationGroup(); @@ -1501,17 +1504,20 @@ } }; var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - var assessmentSection = mocks.Stub(); var hydraulicBoundaryLocation1 = new TestHydraulicBoundaryLocation(); var hydraulicBoundaryLocation2 = new TestHydraulicBoundaryLocation(); - assessmentSection.Stub(a => a.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase + var assessmentSection = new AssessmentSectionStub { - Locations = + FailureMechanismContribution = { - hydraulicBoundaryLocation1, - hydraulicBoundaryLocation2 + NormativeNorm = normType } + }; + assessmentSection.HydraulicBoundaryDatabase.Locations.AddRange(new[] + { + hydraulicBoundaryLocation1, + hydraulicBoundaryLocation2 }); var observer = mocks.StrictMock(); @@ -1553,12 +1559,19 @@ Assert.AreSame(existingcalculation, group.Children[1]); Assert.NotNull(dialog); Assert.NotNull(grid); + + AssessmentSectionCategoryType expectedAssessmentSectionCategoryType = GetCategoryTypeFromNormType(normType); var firstCalculation = group.Children[2] as WaveImpactAsphaltCoverWaveConditionsCalculation; Assert.IsNotNull(firstCalculation); - Assert.AreSame(hydraulicBoundaryLocation1, firstCalculation.InputParameters.HydraulicBoundaryLocation); + AssessmentSectionCategoryWaveConditionsInput firstCalculationInput = firstCalculation.InputParameters; + Assert.AreSame(hydraulicBoundaryLocation1, firstCalculationInput.HydraulicBoundaryLocation); + Assert.AreEqual(expectedAssessmentSectionCategoryType, firstCalculationInput.CategoryType); + var secondCalculation = group.Children[3] as WaveImpactAsphaltCoverWaveConditionsCalculation; Assert.IsNotNull(secondCalculation); - Assert.AreSame(hydraulicBoundaryLocation2, secondCalculation.InputParameters.HydraulicBoundaryLocation); + AssessmentSectionCategoryWaveConditionsInput secondCalculationInput = secondCalculation.InputParameters; + Assert.AreSame(hydraulicBoundaryLocation2, secondCalculationInput.HydraulicBoundaryLocation); + Assert.AreEqual(expectedAssessmentSectionCategoryType, secondCalculationInput.CategoryType); } }