Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/GeneralHeightStructuresInput.cs =================================================================== diff -u -r089df2ef98ca525c6b6235eb75be97f25862c689 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/GeneralHeightStructuresInput.cs (.../GeneralHeightStructuresInput.cs) (revision 089df2ef98ca525c6b6235eb75be97f25862c689) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/GeneralHeightStructuresInput.cs (.../GeneralHeightStructuresInput.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -27,7 +27,7 @@ namespace Ringtoets.HeightStructures.Data { /// - /// Class that holds all static height structures calculation specific input parameters. + /// Class that holds all height structures calculation specific input parameters. /// public class GeneralHeightStructuresInput { Index: Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSection.cs =================================================================== diff -u -r8820d80a97281c96db5f89d5af6c74d26e0f5bca -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSection.cs (.../AssessmentSection.cs) (revision 8820d80a97281c96db5f89d5af6c74d26e0f5bca) +++ Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSection.cs (.../AssessmentSection.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -218,9 +218,11 @@ set { referenceLine = value; - Piping.PipingProbabilityAssessmentInput.SectionLength = value?.Length ?? double.NaN; - MacroStabilityInwards.MacroStabilityInwardsProbabilityAssessmentInput.SectionLength = value?.Length ?? double.NaN; - MacroStabilityOutwards.MacroStabilityOutwardsProbabilityAssessmentInput.SectionLength = value?.Length ?? double.NaN; + double sectionLength = value?.Length ?? double.NaN; + Piping.PipingProbabilityAssessmentInput.SectionLength = sectionLength; + MacroStabilityInwards.MacroStabilityInwardsProbabilityAssessmentInput.SectionLength = sectionLength; + MacroStabilityOutwards.MacroStabilityOutwardsProbabilityAssessmentInput.SectionLength = sectionLength; + WaveImpactAsphaltCover.GeneralWaveImpactAsphaltCoverInput.SectionLength = sectionLength; } } Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/StandAlone/MacroStabilityOutwardsFailureMechanismProperties.cs =================================================================== diff -u -r65ce8c5ab171b234e33e2291998c9d89276db896 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/StandAlone/MacroStabilityOutwardsFailureMechanismProperties.cs (.../MacroStabilityOutwardsFailureMechanismProperties.cs) (revision 65ce8c5ab171b234e33e2291998c9d89276db896) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/StandAlone/MacroStabilityOutwardsFailureMechanismProperties.cs (.../MacroStabilityOutwardsFailureMechanismProperties.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -110,7 +110,7 @@ #endregion - #region Semi-probabilistic parameters + #region Length effect parameters [DynamicVisible] [PropertyOrder(4)] Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/StandAlone/PipingStructureFailureMechanismProperties.cs =================================================================== diff -u -r65ce8c5ab171b234e33e2291998c9d89276db896 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/StandAlone/PipingStructureFailureMechanismProperties.cs (.../PipingStructureFailureMechanismProperties.cs) (revision 65ce8c5ab171b234e33e2291998c9d89276db896) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/StandAlone/PipingStructureFailureMechanismProperties.cs (.../PipingStructureFailureMechanismProperties.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -49,7 +49,7 @@ Data = data; } - #region Semi-probabilistic parameters + #region Length effect parameters [DynamicVisible] [PropertyOrder(4)] Index: Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/AssessmentSectionTest.cs =================================================================== diff -u -r8820d80a97281c96db5f89d5af6c74d26e0f5bca -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/AssessmentSectionTest.cs (.../AssessmentSectionTest.cs) (revision 8820d80a97281c96db5f89d5af6c74d26e0f5bca) +++ Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/AssessmentSectionTest.cs (.../AssessmentSectionTest.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -428,6 +428,7 @@ Assert.AreEqual(referenceLine.Length, assessmentSection.Piping.PipingProbabilityAssessmentInput.SectionLength); Assert.AreEqual(referenceLine.Length, assessmentSection.MacroStabilityInwards.MacroStabilityInwardsProbabilityAssessmentInput.SectionLength); Assert.AreEqual(referenceLine.Length, assessmentSection.MacroStabilityOutwards.MacroStabilityOutwardsProbabilityAssessmentInput.SectionLength); + Assert.AreEqual(referenceLine.Length, assessmentSection.WaveImpactAsphaltCover.GeneralWaveImpactAsphaltCoverInput.SectionLength); } [Test] @@ -443,6 +444,7 @@ Assert.AreEqual(double.NaN, assessmentSection.Piping.PipingProbabilityAssessmentInput.SectionLength); Assert.AreEqual(double.NaN, assessmentSection.MacroStabilityInwards.MacroStabilityInwardsProbabilityAssessmentInput.SectionLength); Assert.AreEqual(double.NaN, assessmentSection.MacroStabilityOutwards.MacroStabilityOutwardsProbabilityAssessmentInput.SectionLength); + Assert.AreEqual(double.NaN, assessmentSection.WaveImpactAsphaltCover.GeneralWaveImpactAsphaltCoverInput.SectionLength); } private IFailureMechanism[] GetExpectedContributingFailureMechanisms(AssessmentSection section) Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsFailureMechanismProperties.cs =================================================================== diff -u -r70bcea7738a8805004d0a226f6fc0b6fc51c98a3 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsFailureMechanismProperties.cs (.../MacroStabilityInwardsFailureMechanismProperties.cs) (revision 70bcea7738a8805004d0a226f6fc0b6fc51c98a3) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsFailureMechanismProperties.cs (.../MacroStabilityInwardsFailureMechanismProperties.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -142,7 +142,7 @@ #endregion - #region Semi-probabilistic parameters + #region Length effect parameters [DynamicVisible] [PropertyOrder(21)] Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Data/GeneralStabilityPointStructuresInput.cs =================================================================== diff -u -r089df2ef98ca525c6b6235eb75be97f25862c689 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Data/GeneralStabilityPointStructuresInput.cs (.../GeneralStabilityPointStructuresInput.cs) (revision 089df2ef98ca525c6b6235eb75be97f25862c689) +++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Data/GeneralStabilityPointStructuresInput.cs (.../GeneralStabilityPointStructuresInput.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -27,7 +27,7 @@ namespace Ringtoets.StabilityPointStructures.Data { /// - /// Class that holds all static stability point structures calculation specific input parameters. + /// Class that holds all stability point structures calculation specific input parameters. /// public class GeneralStabilityPointStructuresInput { Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/GeneralWaveImpactAsphaltCoverInput.cs =================================================================== diff -u --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/GeneralWaveImpactAsphaltCoverInput.cs (revision 0) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/GeneralWaveImpactAsphaltCoverInput.cs (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -0,0 +1,84 @@ +// 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 Core.Common.Base.Data; +using Ringtoets.WaveImpactAsphaltCover.Data.Properties; + +namespace Ringtoets.WaveImpactAsphaltCover.Data +{ + /// + /// Class that holds all wave impact asphalt cover calculation specific input parameters. + /// + public class GeneralWaveImpactAsphaltCoverInput + { + private RoundedDouble deltaL; + + /// + /// Initializes a new instance of the class. + /// + public GeneralWaveImpactAsphaltCoverInput() + { + deltaL = new RoundedDouble(2, 1000.0); + SectionLength = double.NaN; + } + + /// + /// Gets or sets the 'ΔL' parameter used to determine the length effect parameter. + /// + /// Thrown when the + /// is or is not larger than 0. + public RoundedDouble DeltaL + { + get + { + return deltaL; + } + set + { + RoundedDouble newValue = value.ToPrecision(deltaL.NumberOfDecimalPlaces); + if (newValue <= 0.0 || double.IsNaN(newValue)) + { + throw new ArgumentOutOfRangeException(nameof(value), Resources.DeltaL_Value_should_be_larger_than_zero); + } + + deltaL = newValue; + } + } + + /// + /// Gets or sets the length of the assessment section. + /// + public double SectionLength { get; set; } + + /// + /// Gets the 'N' length effect parameter based on the + /// and . + /// + public double N + { + get + { + return SectionLength / deltaL; + } + } + } +} \ No newline at end of file Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/Properties/Resources.Designer.cs =================================================================== diff -u -r08d25a2d4cd349395730ef39d3abf2cc51c30508 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 08d25a2d4cd349395730ef39d3abf2cc51c30508) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -22,7 +22,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.17929 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -40,7 +40,7 @@ // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class Resources { @@ -82,6 +82,15 @@ } /// + /// Looks up a localized string similar to De waarde voor 'ΔL' moet groter zijn dan 0.. + /// + public static string DeltaL_Value_should_be_larger_than_zero { + get { + return ResourceManager.GetString("DeltaL_Value_should_be_larger_than_zero", resourceCulture); + } + } + + /// /// Looks up a localized string similar to AGK. /// public static string WaveImpactAsphaltCoverFailureMechanism_Code { Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/Properties/Resources.resx =================================================================== diff -u -r98929f84fbf311bd19d8e61cc8499cdb40b22ea0 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/Properties/Resources.resx (.../Resources.resx) (revision 98929f84fbf311bd19d8e61cc8499cdb40b22ea0) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/Properties/Resources.resx (.../Resources.resx) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + De waarde voor 'ΔL' moet groter zijn dan 0. + AGK Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/Ringtoets.WaveImpactAsphaltCover.Data.csproj =================================================================== diff -u -r63fc151e9cf722527465c1eddfa6567a90feb5e6 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/Ringtoets.WaveImpactAsphaltCover.Data.csproj (.../Ringtoets.WaveImpactAsphaltCover.Data.csproj) (revision 63fc151e9cf722527465c1eddfa6567a90feb5e6) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/Ringtoets.WaveImpactAsphaltCover.Data.csproj (.../Ringtoets.WaveImpactAsphaltCover.Data.csproj) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -11,6 +11,7 @@ + True Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/WaveImpactAsphaltCoverFailureMechanism.cs =================================================================== diff -u -r49621ecdce5a2a8f7c8bb689e8cfd6759dfb8fc6 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/WaveImpactAsphaltCoverFailureMechanism.cs (.../WaveImpactAsphaltCoverFailureMechanism.cs) (revision 49621ecdce5a2a8f7c8bb689e8cfd6759dfb8fc6) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/WaveImpactAsphaltCoverFailureMechanism.cs (.../WaveImpactAsphaltCoverFailureMechanism.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -51,6 +51,7 @@ }; ForeshoreProfiles = new ForeshoreProfileCollection(); GeneralInput = new GeneralWaveConditionsInput(1.0, 0.0, 0.0); + GeneralWaveImpactAsphaltCoverInput = new GeneralWaveImpactAsphaltCoverInput(); } public override IEnumerable Calculations @@ -72,6 +73,11 @@ public GeneralWaveConditionsInput GeneralInput { get; } /// + /// Gets the general wave impact asphalt cover input parameters that apply to each calculation. + /// + public GeneralWaveImpactAsphaltCoverInput GeneralWaveImpactAsphaltCoverInput { get; } + + /// /// Gets the container of all wave conditions calculations. /// public CalculationGroup WaveConditionsCalculationGroup { get; } Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -r08d25a2d4cd349395730ef39d3abf2cc51c30508 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 08d25a2d4cd349395730ef39d3abf2cc51c30508) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -22,7 +22,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.17929 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -40,7 +40,7 @@ // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class Resources { @@ -82,6 +82,24 @@ } /// + /// Looks up a localized string similar to Lengte van onafhankelijke dijkstrekkingen voor dit toetsspoor.. + /// + public static string WaveImpactAsphaltCoverFailureMechanismProperties_DeltaL_Description { + get { + return ResourceManager.GetString("WaveImpactAsphaltCoverFailureMechanismProperties_DeltaL_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ΔL [m]. + /// + public static string WaveImpactAsphaltCoverFailureMechanismProperties_DeltaL_DisplayName { + get { + return ResourceManager.GetString("WaveImpactAsphaltCoverFailureMechanismProperties_DeltaL_DisplayName", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Asfalt. /// public static string WaveImpactAsphaltCoverWaveConditionsInputContextProperties_RevetmentType { Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Properties/Resources.resx =================================================================== diff -u -r438a524144f283209902ae89f058a134380c9538 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Properties/Resources.resx (.../Resources.resx) (revision 438a524144f283209902ae89f058a134380c9538) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/Properties/Resources.resx (.../Resources.resx) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -117,6 +117,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Lengte van onafhankelijke dijkstrekkingen voor dit toetsspoor. + + + ΔL [m] + Asfalt Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/PropertyClasses/WaveImpactAsphaltCoverFailureMechanismProperties.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/PropertyClasses/WaveImpactAsphaltCoverFailureMechanismProperties.cs (.../WaveImpactAsphaltCoverFailureMechanismProperties.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/PropertyClasses/WaveImpactAsphaltCoverFailureMechanismProperties.cs (.../WaveImpactAsphaltCoverFailureMechanismProperties.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -19,11 +19,13 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using Core.Common.Base.Data; using Core.Common.Gui.Attributes; using Core.Common.Gui.PropertyBag; using Core.Common.Util.Attributes; using Ringtoets.WaveImpactAsphaltCover.Data; +using Ringtoets.WaveImpactAsphaltCover.Forms.Properties; using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; using RingtoetsRevetmentFormsResources = Ringtoets.Revetment.Forms.Properties.Resources; @@ -34,6 +36,21 @@ /// public class WaveImpactAsphaltCoverFailureMechanismProperties : ObjectProperties { + /// + /// Creates a new instance of . + /// + /// The instance to show the properties of. + /// Thrown when is null. + public WaveImpactAsphaltCoverFailureMechanismProperties(WaveImpactAsphaltCoverFailureMechanism data) + { + if (data == null) + { + throw new ArgumentNullException(nameof(data)); + } + + Data = data; + } + [DynamicVisibleValidationMethod] public bool DynamicVisibleValidationMethod(string propertyName) { @@ -48,7 +65,10 @@ { return nameof(A).Equals(propertyName) || nameof(B).Equals(propertyName) - || nameof(C).Equals(propertyName); + || nameof(C).Equals(propertyName) + || nameof(SectionLength).Equals(propertyName) + || nameof(DeltaL).Equals(propertyName) + || nameof(N).Equals(propertyName); } #region General @@ -91,10 +111,58 @@ #endregion - #region Model settings + #region Length effect parameters [DynamicVisible] [PropertyOrder(4)] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_LengthEffect))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.ReferenceLine_Length_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.ReferenceLine_Length_Description))] + public RoundedDouble SectionLength + { + get + { + return new RoundedDouble(2, data.GeneralWaveImpactAsphaltCoverInput.SectionLength); + } + } + + [DynamicVisible] + [PropertyOrder(5)] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_LengthEffect))] + [ResourcesDisplayName(typeof(Resources), nameof(Resources.WaveImpactAsphaltCoverFailureMechanismProperties_DeltaL_DisplayName))] + [ResourcesDescription(typeof(Resources), nameof(Resources.WaveImpactAsphaltCoverFailureMechanismProperties_DeltaL_Description))] + public RoundedDouble DeltaL + { + get + { + return data.GeneralWaveImpactAsphaltCoverInput.DeltaL; + } + set + { + data.GeneralWaveImpactAsphaltCoverInput.DeltaL = value; + data.NotifyObservers(); + } + } + + [DynamicVisible] + [PropertyOrder(6)] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_LengthEffect))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.FailureMechanism_N_Rounded_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.FailureMechanism_N_Rounded_Description))] + public RoundedDouble N + { + get + { + return new RoundedDouble(2, data.GeneralWaveImpactAsphaltCoverInput.N); + } + } + + #endregion + + #region Model settings + + [DynamicVisible] + [PropertyOrder(7)] [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_ModelSettings))] [ResourcesDisplayName(typeof(RingtoetsRevetmentFormsResources), nameof(RingtoetsRevetmentFormsResources.GeneralWaveConditionsInput_A_DisplayName))] [ResourcesDescription(typeof(RingtoetsRevetmentFormsResources), nameof(RingtoetsRevetmentFormsResources.GeneralWaveConditionsInput_A_Description))] @@ -107,7 +175,7 @@ } [DynamicVisible] - [PropertyOrder(5)] + [PropertyOrder(8)] [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_ModelSettings))] [ResourcesDisplayName(typeof(RingtoetsRevetmentFormsResources), nameof(RingtoetsRevetmentFormsResources.GeneralWaveConditionsInput_B_DisplayName))] [ResourcesDescription(typeof(RingtoetsRevetmentFormsResources), nameof(RingtoetsRevetmentFormsResources.GeneralWaveConditionsInput_B_Description))] @@ -120,7 +188,7 @@ } [DynamicVisible] - [PropertyOrder(6)] + [PropertyOrder(9)] [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_ModelSettings))] [ResourcesDisplayName(typeof(RingtoetsRevetmentFormsResources), nameof(RingtoetsRevetmentFormsResources.GeneralWaveConditionsInput_C_DisplayName))] [ResourcesDescription(typeof(RingtoetsRevetmentFormsResources), nameof(RingtoetsRevetmentFormsResources.GeneralWaveConditionsInput_C_Description))] Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs =================================================================== diff -u -r5175cc4c37a2c5701717a580c082f425caf70d27 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs (.../WaveImpactAsphaltCoverPlugin.cs) (revision 5175cc4c37a2c5701717a580c082f425caf70d27) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Plugin/WaveImpactAsphaltCoverPlugin.cs (.../WaveImpactAsphaltCoverPlugin.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -62,10 +62,7 @@ { yield return new PropertyInfo { - CreateInstance = context => new WaveImpactAsphaltCoverFailureMechanismProperties - { - Data = context.WrappedData - } + CreateInstance = context => new WaveImpactAsphaltCoverFailureMechanismProperties(context.WrappedData) }; yield return new PropertyInfo(); yield return new PropertyInfo Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/GeneralWaveImpactAsphaltCoverInputTest.cs =================================================================== diff -u --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/GeneralWaveImpactAsphaltCoverInputTest.cs (revision 0) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/GeneralWaveImpactAsphaltCoverInputTest.cs (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -0,0 +1,99 @@ +// 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 Core.Common.Base.Data; +using Core.Common.TestUtil; +using NUnit.Framework; +using Ringtoets.Common.Data.TestUtil; + +namespace Ringtoets.WaveImpactAsphaltCover.Data.Test +{ + [TestFixture] + public class GeneralWaveImpactAsphaltCoverInputTest + { + [Test] + public void Constructor_Always_PropertiesSet() + { + // Call + var generalInput = new GeneralWaveImpactAsphaltCoverInput(); + + // Assert + Assert.AreEqual(2, generalInput.DeltaL.NumberOfDecimalPlaces); + Assert.AreEqual(1000.0, generalInput.DeltaL, generalInput.DeltaL.GetAccuracy()); + Assert.IsNaN(generalInput.SectionLength); + Assert.IsNaN(generalInput.N); + } + + [Test] + public void N_GetWithSectionLength_ReturnsCorrectValue() + { + // Setup + var random = new Random(39); + var generalInput = new GeneralWaveImpactAsphaltCoverInput + { + SectionLength = random.Next(0, 99999) + }; + + // Call + double n = generalInput.N; + + // Assert + Assert.AreEqual(generalInput.SectionLength / 1000.0, n); + } + + [Test] + [TestCase(0.005)] + [TestCase(42)] + [TestCase(1000)] + [TestCase(double.MaxValue)] + public void DeltaL_SetValidValue_UpdatesValue(double value) + { + // Setup + var generalInput = new GeneralWaveImpactAsphaltCoverInput(); + + // Call + generalInput.DeltaL = (RoundedDouble) value; + + // Assert + Assert.AreEqual(value, generalInput.DeltaL, generalInput.DeltaL.GetAccuracy()); + } + + [Test] + [TestCase(0.0)] + [TestCase(0.004)] + [TestCase(-1)] + [TestCase(double.MinValue)] + [TestCase(double.NaN)] + public void DeltaL_SetValueOutsideValidRange_ThrowArgumentOutOfRangeException(double value) + { + // Setup + var generalInput = new GeneralWaveImpactAsphaltCoverInput(); + + // Call + TestDelegate test = () => generalInput.DeltaL = (RoundedDouble) value; + + // Assert + const string expectedMessage = "De waarde voor 'ΔL' moet groter zijn dan 0."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); + } + } +} \ No newline at end of file Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/Ringtoets.WaveImpactAsphaltCover.Data.Test.csproj =================================================================== diff -u -r63fc151e9cf722527465c1eddfa6567a90feb5e6 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/Ringtoets.WaveImpactAsphaltCover.Data.Test.csproj (.../Ringtoets.WaveImpactAsphaltCover.Data.Test.csproj) (revision 63fc151e9cf722527465c1eddfa6567a90feb5e6) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/Ringtoets.WaveImpactAsphaltCover.Data.Test.csproj (.../Ringtoets.WaveImpactAsphaltCover.Data.Test.csproj) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -21,6 +21,7 @@ + @@ -41,6 +42,10 @@ {0B0D2DFF-7E7E-4BB0-A007-61800C85809A} Core.Common.Data.TestUtil + + {D749EE4C-CE50-4C17-BF01-9A953028C126} + Core.Common.TestUtil + {d4200f43-3f72-4f42-af0a-8ced416a38ec} Ringtoets.Common.Data Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/WaveImpactAsphaltCoverFailureMechanismTest.cs =================================================================== diff -u -r43b4218e6e71896eb4f3985555258caeb4c7f6f7 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/WaveImpactAsphaltCoverFailureMechanismTest.cs (.../WaveImpactAsphaltCoverFailureMechanismTest.cs) (revision 43b4218e6e71896eb4f3985555258caeb4c7f6f7) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/WaveImpactAsphaltCoverFailureMechanismTest.cs (.../WaveImpactAsphaltCoverFailureMechanismTest.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -26,15 +26,14 @@ using Rhino.Mocks; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.FailureMechanism; -using Ringtoets.Revetment.Data; namespace Ringtoets.WaveImpactAsphaltCover.Data.Test { [TestFixture] public class WaveImpactAsphaltCoverFailureMechanismTest { [Test] - public void DefaultConstructor_Always_PropertiesSet() + public void Constructor_Always_PropertiesSet() { // Call var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); @@ -44,9 +43,9 @@ Assert.IsInstanceOf>(failureMechanism); Assert.AreEqual("Dijken en dammen - Golfklappen op asfaltbekleding", failureMechanism.Name); Assert.AreEqual("AGK", failureMechanism.Code); + Assert.IsNotNull(failureMechanism.GeneralWaveImpactAsphaltCoverInput); + Assert.IsNotNull(failureMechanism.GeneralInput); - Assert.IsInstanceOf(failureMechanism.GeneralInput); - Assert.AreEqual("Hydraulische randvoorwaarden", failureMechanism.WaveConditionsCalculationGroup.Name); CollectionAssert.IsEmpty(failureMechanism.WaveConditionsCalculationGroup.Children); CollectionAssert.IsEmpty(failureMechanism.ForeshoreProfiles); Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/PropertyClasses/WaveImpactAsphaltCoverFailureMechanismPropertiesTest.cs =================================================================== diff -u -r08d25a2d4cd349395730ef39d3abf2cc51c30508 -rec020ac21468e23c865fe4caf9eb2f3664047368 --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/PropertyClasses/WaveImpactAsphaltCoverFailureMechanismPropertiesTest.cs (.../WaveImpactAsphaltCoverFailureMechanismPropertiesTest.cs) (revision 08d25a2d4cd349395730ef39d3abf2cc51c30508) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/PropertyClasses/WaveImpactAsphaltCoverFailureMechanismPropertiesTest.cs (.../WaveImpactAsphaltCoverFailureMechanismPropertiesTest.cs) (revision ec020ac21468e23c865fe4caf9eb2f3664047368) @@ -19,10 +19,14 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.ComponentModel; -using Core.Common.Gui.PropertyBag; +using Core.Common.Base; +using Core.Common.Base.Data; using Core.Common.TestUtil; using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.WaveImpactAsphaltCover.Data; using Ringtoets.WaveImpactAsphaltCover.Forms.PropertyClasses; @@ -32,56 +36,67 @@ public class WaveImpactAsphaltCoverFailureMechanismPropertiesTest { [Test] - public void Constructor_ExpectedValues() + public void Constructor_DataNull_ThrowsArgumentNullException() { // Call - var properties = new WaveImpactAsphaltCoverFailureMechanismProperties(); + TestDelegate test = () => new WaveImpactAsphaltCoverFailureMechanismProperties(null); // Assert - Assert.IsInstanceOf>(properties); + string paramName = Assert.Throws(test).ParamName; + Assert.AreEqual("data", paramName); } [Test] [TestCase(true)] [TestCase(false)] - public void Data_SetNewWaveImpactAsphaltCoverFailureMechanismContext_ReturnCorrectPropertyValues(bool isRelevant) + public void Constructor_WithWaveImpactAsphaltCoverFailureMechanism_ReturnsCorrectPropertyValues(bool isRelevant) { // Setup var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism { IsRelevant = isRelevant }; - var properties = new WaveImpactAsphaltCoverFailureMechanismProperties(); // Call - properties.Data = failureMechanism; + var properties = new WaveImpactAsphaltCoverFailureMechanismProperties(failureMechanism); // Assert + Assert.AreSame(failureMechanism, properties.Data); Assert.AreEqual(failureMechanism.Name, properties.Name); Assert.AreEqual(failureMechanism.Code, properties.Code); Assert.AreEqual(isRelevant, properties.IsRelevant); Assert.AreEqual(failureMechanism.GeneralInput.A, properties.A); Assert.AreEqual(failureMechanism.GeneralInput.B, properties.B); Assert.AreEqual(failureMechanism.GeneralInput.C, properties.C); + Assert.AreEqual(failureMechanism.GeneralWaveImpactAsphaltCoverInput.DeltaL, properties.DeltaL); + + Assert.AreEqual(2, properties.SectionLength.NumberOfDecimalPlaces); + Assert.AreEqual(failureMechanism.GeneralWaveImpactAsphaltCoverInput.SectionLength, + properties.SectionLength, + properties.SectionLength.GetAccuracy()); + + Assert.AreEqual(2, properties.N.NumberOfDecimalPlaces); + Assert.AreEqual(failureMechanism.GeneralWaveImpactAsphaltCoverInput.N, + properties.N, + properties.N.GetAccuracy()); } [Test] public void Constructor_IsRelevantTrue_PropertiesHaveExpectedAttributesValues() { // Call - var properties = new WaveImpactAsphaltCoverFailureMechanismProperties - { - Data = new WaveImpactAsphaltCoverFailureMechanism + var properties = new WaveImpactAsphaltCoverFailureMechanismProperties( + new WaveImpactAsphaltCoverFailureMechanism { IsRelevant = true - } - }; + }); // Assert PropertyDescriptorCollection dynamicProperties = PropertiesTestHelper.GetAllVisiblePropertyDescriptors(properties); - Assert.AreEqual(6, dynamicProperties.Count); + Assert.AreEqual(9, dynamicProperties.Count); const string generalCategory = "Algemeen"; + const string lengthEffectCategory = "Lengte-effect parameters"; const string modelSettingsCategory = "Modelinstellingen"; PropertyDescriptor nameProperty = dynamicProperties[0]; @@ -105,21 +120,42 @@ "Geeft aan of dit toetsspoor relevant is of niet.", true); - PropertyDescriptor aProperty = dynamicProperties[3]; + PropertyDescriptor sectionLength = dynamicProperties[3]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(sectionLength, + lengthEffectCategory, + "Lengte* [m]", + "Totale lengte van het traject in meters (afgerond).", + true); + + PropertyDescriptor deltaLProperty = dynamicProperties[4]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(deltaLProperty, + lengthEffectCategory, + "ΔL [m]", + "Lengte van onafhankelijke dijkstrekkingen voor dit toetsspoor."); + + PropertyDescriptor nProperty = dynamicProperties[5]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(nProperty, + lengthEffectCategory, + "N* [-]", + "De parameter 'N' die gebruikt wordt om het lengte-effect " + + "mee te nemen in de beoordeling (afgerond).", + true); + + PropertyDescriptor aProperty = dynamicProperties[6]; PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(aProperty, modelSettingsCategory, "a", "De waarde van de parameter 'a' in de berekening voor golf condities.", true); - PropertyDescriptor bProperty = dynamicProperties[4]; + PropertyDescriptor bProperty = dynamicProperties[7]; PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(bProperty, modelSettingsCategory, "b", "De waarde van de parameter 'b' in de berekening voor golf condities.", true); - PropertyDescriptor cProperty = dynamicProperties[5]; + PropertyDescriptor cProperty = dynamicProperties[8]; PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(cProperty, modelSettingsCategory, "c", @@ -131,13 +167,11 @@ public void Constructor_IsRelevantFalse_PropertiesHaveExpectedAttributesValues() { // Call - var properties = new WaveImpactAsphaltCoverFailureMechanismProperties - { - Data = new WaveImpactAsphaltCoverFailureMechanism + var properties = new WaveImpactAsphaltCoverFailureMechanismProperties( + new WaveImpactAsphaltCoverFailureMechanism { IsRelevant = false - } - }; + }); // Assert PropertyDescriptorCollection dynamicProperties = PropertiesTestHelper.GetAllVisiblePropertyDescriptors(properties); @@ -168,24 +202,81 @@ } [Test] + [SetCulture("nl-NL")] + [TestCase(-1)] + [TestCase(-0.005)] + [TestCase(-1000)] + [TestCase(double.NegativeInfinity)] + [TestCase(double.NaN)] + public void DeltaL_SetInvalidValue_ThrowsArgumentOutOfRangeExceptionNoNotifications(double value) + { + // Setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + mocks.ReplayAll(); + + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + failureMechanism.Attach(observer); + + var properties = new WaveImpactAsphaltCoverFailureMechanismProperties(failureMechanism); + + // Call + TestDelegate call = () => properties.DeltaL = (RoundedDouble) value; + + // Assert + const string expectedMessage = "De waarde voor 'ΔL' moet groter zijn dan 0."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); + mocks.VerifyAll(); + } + + [Test] + [TestCase(0.005)] + [TestCase(1)] + [TestCase(1000)] + [TestCase(double.PositiveInfinity)] + public void DeltaL_SetValidValue_SetsValueAndUpdatesObservers(double value) + { + // Setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + observer.Expect(o => o.UpdateObserver()); + mocks.ReplayAll(); + + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + failureMechanism.Attach(observer); + + var properties = new WaveImpactAsphaltCoverFailureMechanismProperties(failureMechanism); + + // Call + properties.DeltaL = (RoundedDouble) value; + + // Assert + Assert.AreEqual(value, + failureMechanism.GeneralWaveImpactAsphaltCoverInput.DeltaL, + failureMechanism.GeneralWaveImpactAsphaltCoverInput.DeltaL.GetAccuracy()); + mocks.VerifyAll(); + } + + [Test] [TestCase(true)] [TestCase(false)] - public void DynamicVisibleValidationMethod_DependingOnRelevancy_ReturnExpectedVisibility(bool isRelevant) + public void DynamicVisibleValidationMethod_DependingOnRelevancy_ReturnsExpectedVisibility(bool isRelevant) { // Setup - var properties = new WaveImpactAsphaltCoverFailureMechanismProperties - { - Data = new WaveImpactAsphaltCoverFailureMechanism + var properties = new WaveImpactAsphaltCoverFailureMechanismProperties( + new WaveImpactAsphaltCoverFailureMechanism { IsRelevant = isRelevant - } - }; + }); // Call & Assert Assert.IsTrue(properties.DynamicVisibleValidationMethod(nameof(properties.Name))); Assert.IsTrue(properties.DynamicVisibleValidationMethod(nameof(properties.Code))); Assert.IsTrue(properties.DynamicVisibleValidationMethod(nameof(properties.IsRelevant))); + Assert.AreEqual(isRelevant, properties.DynamicVisibleValidationMethod(nameof(properties.SectionLength))); + Assert.AreEqual(isRelevant, properties.DynamicVisibleValidationMethod(nameof(properties.DeltaL))); + Assert.AreEqual(isRelevant, properties.DynamicVisibleValidationMethod(nameof(properties.N))); Assert.AreEqual(isRelevant, properties.DynamicVisibleValidationMethod(nameof(properties.A))); Assert.AreEqual(isRelevant, properties.DynamicVisibleValidationMethod(nameof(properties.B))); Assert.AreEqual(isRelevant, properties.DynamicVisibleValidationMethod(nameof(properties.C)));