Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Input/WaveConditions/WaveConditionsCalculationInput.cs =================================================================== diff -u --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Input/WaveConditions/WaveConditionsCalculationInput.cs (revision 0) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Input/WaveConditions/WaveConditionsCalculationInput.cs (revision 8797ed1774bf2255a1370fafe122d9150f79e365) @@ -0,0 +1,149 @@ +// Copyright (C) Stichting Deltares 2016. 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.Collections.Generic; +using Core.Common.Utils; + +namespace Ringtoets.HydraRing.Calculation.Data.Input.WaveConditions +{ + /// + /// Container of all data necessary for performing a wave conditions calculation (Q-variant) via Hydra-Ring. + /// + public abstract class WaveConditionsCalculationInput : HydraRingCalculationInput + { + private readonly double beta; + private readonly IEnumerable forelandPoints; + private readonly HydraRingBreakWater breakWater; + private readonly double waterLevel; + private readonly double a; + private readonly double b; + private readonly HydraRingSection section; + + /// + /// Creates a new instance of the class. + /// + /// The id of the section to use during the calculation. + /// The id of the hydraulic station to use during the calculation. + /// The norm to use during the calculation. + /// The foreland points to use during the calculation. + /// The break water to use during the calculation. + /// The water level to calculate the wave conditions for. + /// The a-value to use during the calculation. + /// The b-value to use during the calculation. + /// As a part of the constructor, the is automatically converted into a reliability index. + protected WaveConditionsCalculationInput(int sectionId, + long hydraulicBoundaryLocationId, + double norm, + IEnumerable forelandPoints, + HydraRingBreakWater breakWater, + double waterLevel, + double a, + double b) + : base(hydraulicBoundaryLocationId) + { + beta = StatisticsConverter.NormToBeta(norm); + this.forelandPoints = forelandPoints; + this.breakWater = breakWater; + this.waterLevel = waterLevel; + this.a = a; + this.b = b; + section = new HydraRingSection(sectionId, double.NaN, double.NaN); + } + + public override HydraRingFailureMechanismType FailureMechanismType + { + get + { + return HydraRingFailureMechanismType.QVariant; + } + } + + public override int CalculationTypeId + { + get + { + return 6; + } + } + + public override int VariableId + { + get + { + return 114; + } + } + + public override HydraRingSection Section + { + get + { + return section; + } + } + + public override IEnumerable Variables + { + get + { + // Water level + yield return new HydraRingVariable(113, HydraRingDistributionType.Deterministic, waterLevel, + HydraRingDeviationType.Standard, double.NaN, double.NaN, double.NaN); + + // Resistance Q-variant + yield return new HydraRingVariable(114, HydraRingDistributionType.Deterministic, 1.0, + HydraRingDeviationType.Standard, double.NaN, double.NaN, double.NaN); + + // a-value + yield return new HydraRingVariable(115, HydraRingDistributionType.Deterministic, a, + HydraRingDeviationType.Standard, double.NaN, double.NaN, double.NaN); + + // b-value + yield return new HydraRingVariable(116, HydraRingDistributionType.Deterministic, b, + HydraRingDeviationType.Standard, double.NaN, double.NaN, double.NaN); + } + } + + public override IEnumerable ForelandsPoints + { + get + { + return forelandPoints; + } + } + + public override HydraRingBreakWater BreakWater + { + get + { + return breakWater; + } + } + + public override double Beta + { + get + { + return beta; + } + } + } +} \ No newline at end of file Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Input/WaveConditions/WaveConditionsCosineInput.cs =================================================================== diff -u -rca150e0e418e5e89ba6c3db7bff6f07bfa1c2102 -r8797ed1774bf2255a1370fafe122d9150f79e365 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Input/WaveConditions/WaveConditionsCosineInput.cs (.../WaveConditionsCosineInput.cs) (revision ca150e0e418e5e89ba6c3db7bff6f07bfa1c2102) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Input/WaveConditions/WaveConditionsCosineInput.cs (.../WaveConditionsCosineInput.cs) (revision 8797ed1774bf2255a1370fafe122d9150f79e365) @@ -27,7 +27,7 @@ /// /// Container of all data necessary for performing a cosine based wave conditions calculation (Q-variant) via Hydra-Ring. /// - public class WaveConditionsCosineInput : WaveConditionsInput + public class WaveConditionsCosineInput : WaveConditionsCalculationInput { private readonly double c; Fisheye: Tag 8797ed1774bf2255a1370fafe122d9150f79e365 refers to a dead (removed) revision in file `Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Input/WaveConditions/WaveConditionsInput.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Input/WaveConditions/WaveConditionsTrapezoidInput.cs =================================================================== diff -u -rca150e0e418e5e89ba6c3db7bff6f07bfa1c2102 -r8797ed1774bf2255a1370fafe122d9150f79e365 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Input/WaveConditions/WaveConditionsTrapezoidInput.cs (.../WaveConditionsTrapezoidInput.cs) (revision ca150e0e418e5e89ba6c3db7bff6f07bfa1c2102) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Input/WaveConditions/WaveConditionsTrapezoidInput.cs (.../WaveConditionsTrapezoidInput.cs) (revision 8797ed1774bf2255a1370fafe122d9150f79e365) @@ -27,7 +27,7 @@ /// /// Container of all data necessary for performing a trapezoid based wave conditions calculation (Q-variant) via Hydra-Ring. /// - public class WaveConditionsTrapezoidInput : WaveConditionsInput + public class WaveConditionsTrapezoidInput : WaveConditionsCalculationInput { private readonly double beta1; private readonly double beta2; Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Ringtoets.HydraRing.Calculation.csproj =================================================================== diff -u -r9dd80fda99e5d5b90931986f959b53c52da150b1 -r8797ed1774bf2255a1370fafe122d9150f79e365 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Ringtoets.HydraRing.Calculation.csproj (.../Ringtoets.HydraRing.Calculation.csproj) (revision 9dd80fda99e5d5b90931986f959b53c52da150b1) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Ringtoets.HydraRing.Calculation.csproj (.../Ringtoets.HydraRing.Calculation.csproj) (revision 8797ed1774bf2255a1370fafe122d9150f79e365) @@ -58,7 +58,7 @@ - + Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Input/WaveConditions/WaveConditionsCalculationInputTest.cs =================================================================== diff -u --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Input/WaveConditions/WaveConditionsCalculationInputTest.cs (revision 0) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Input/WaveConditions/WaveConditionsCalculationInputTest.cs (revision 8797ed1774bf2255a1370fafe122d9150f79e365) @@ -0,0 +1,104 @@ +// Copyright (C) Stichting Deltares 2016. 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.Collections.Generic; +using System.Linq; +using Core.Common.Utils; +using NUnit.Framework; +using Ringtoets.HydraRing.Calculation.Data; +using Ringtoets.HydraRing.Calculation.Data.Input; +using Ringtoets.HydraRing.Calculation.Data.Input.WaveConditions; +using Ringtoets.HydraRing.Calculation.TestUtil; + +namespace Ringtoets.HydraRing.Calculation.Test.Data.Input.WaveConditions +{ + [TestFixture] + public class WaveConditionsCalculationInputTest + { + [Test] + public void Constructor_Always_ExpectedValues() + { + // Setup + const int sectionId = 111; + const int hydraulicBoundaryLocationId = 222; + const int norm = 333; + var forelandPoints = Enumerable.Empty(); + var breakWater = new HydraRingBreakWater(1, 4.4); + const double waterLevel = 5.5; + const double a = 6.6; + const double b = 7.7; + + // Call + var waveConditionsInput = new WaveConditionsCalculationInputImplementation(sectionId, + hydraulicBoundaryLocationId, + norm, + forelandPoints, + breakWater, + waterLevel, + a, + b); + + // Assert + const int expectedCalculationTypeId = 6; + const int expectedVariableId = 114; + double expectedBeta = StatisticsConverter.NormToBeta(norm); + Assert.IsInstanceOf(waveConditionsInput); + Assert.AreEqual(HydraRingFailureMechanismType.QVariant, waveConditionsInput.FailureMechanismType); + Assert.AreEqual(expectedCalculationTypeId, waveConditionsInput.CalculationTypeId); + Assert.AreEqual(expectedVariableId, waveConditionsInput.VariableId); + Assert.AreEqual(hydraulicBoundaryLocationId, waveConditionsInput.HydraulicBoundaryLocationId); + Assert.IsNotNull(waveConditionsInput.Section); + Assert.AreEqual(sectionId, waveConditionsInput.Section.SectionId); + HydraRingVariableAssert.AreEqual(GetExpectedVariables(waterLevel, a, b).ToArray(), waveConditionsInput.Variables.ToArray()); + Assert.AreSame(forelandPoints, waveConditionsInput.ForelandsPoints); + Assert.AreSame(breakWater, waveConditionsInput.BreakWater); + Assert.AreEqual(expectedBeta, waveConditionsInput.Beta); + } + + private class WaveConditionsCalculationInputImplementation : WaveConditionsCalculationInput + { + public WaveConditionsCalculationInputImplementation(int sectionId, + long hydraulicBoundaryLocationId, + double norm, + IEnumerable forelandPoints, + HydraRingBreakWater breakWater, + double waterLevel, + double a, + double b) + : base(sectionId, + hydraulicBoundaryLocationId, + norm, + forelandPoints, + breakWater, + waterLevel, + a, + b) {} + } + + private static IEnumerable GetExpectedVariables(double waterLevel, double a, double b) + { + yield return new HydraRingVariable(113, HydraRingDistributionType.Deterministic, waterLevel, HydraRingDeviationType.Standard, double.NaN, double.NaN, double.NaN); + yield return new HydraRingVariable(114, HydraRingDistributionType.Deterministic, 1.0, HydraRingDeviationType.Standard, double.NaN, double.NaN, double.NaN); + yield return new HydraRingVariable(115, HydraRingDistributionType.Deterministic, a, HydraRingDeviationType.Standard, double.NaN, double.NaN, double.NaN); + yield return new HydraRingVariable(116, HydraRingDistributionType.Deterministic, b, HydraRingDeviationType.Standard, double.NaN, double.NaN, double.NaN); + } + } +} \ No newline at end of file Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Input/WaveConditions/WaveConditionsCosineInputTest.cs =================================================================== diff -u -rfc25acac78ccc302ea4fcc0414fc5e6adc0fccae -r8797ed1774bf2255a1370fafe122d9150f79e365 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Input/WaveConditions/WaveConditionsCosineInputTest.cs (.../WaveConditionsCosineInputTest.cs) (revision fc25acac78ccc302ea4fcc0414fc5e6adc0fccae) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Input/WaveConditions/WaveConditionsCosineInputTest.cs (.../WaveConditionsCosineInputTest.cs) (revision 8797ed1774bf2255a1370fafe122d9150f79e365) @@ -62,7 +62,7 @@ const int expectedCalculationTypeId = 6; const int expectedVariableId = 114; double expectedBeta = StatisticsConverter.NormToBeta(norm); - Assert.IsInstanceOf(waveConditionsCosineInput); + Assert.IsInstanceOf(waveConditionsCosineInput); Assert.AreEqual(HydraRingFailureMechanismType.QVariant, waveConditionsCosineInput.FailureMechanismType); Assert.AreEqual(expectedCalculationTypeId, waveConditionsCosineInput.CalculationTypeId); Assert.AreEqual(expectedVariableId, waveConditionsCosineInput.VariableId); Fisheye: Tag 8797ed1774bf2255a1370fafe122d9150f79e365 refers to a dead (removed) revision in file `Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Input/WaveConditions/WaveConditionsInputTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Input/WaveConditions/WaveConditionsTrapezoidInputTest.cs =================================================================== diff -u -rfc25acac78ccc302ea4fcc0414fc5e6adc0fccae -r8797ed1774bf2255a1370fafe122d9150f79e365 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Input/WaveConditions/WaveConditionsTrapezoidInputTest.cs (.../WaveConditionsTrapezoidInputTest.cs) (revision fc25acac78ccc302ea4fcc0414fc5e6adc0fccae) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Input/WaveConditions/WaveConditionsTrapezoidInputTest.cs (.../WaveConditionsTrapezoidInputTest.cs) (revision 8797ed1774bf2255a1370fafe122d9150f79e365) @@ -63,7 +63,7 @@ const int expectedCalculationTypeId = 6; const int expectedVariableId = 114; double expectedBeta = StatisticsConverter.NormToBeta(norm); - Assert.IsInstanceOf(waveConditionsTrapezoidInput); + Assert.IsInstanceOf(waveConditionsTrapezoidInput); Assert.AreEqual(HydraRingFailureMechanismType.QVariant, waveConditionsTrapezoidInput.FailureMechanismType); Assert.AreEqual(expectedCalculationTypeId, waveConditionsTrapezoidInput.CalculationTypeId); Assert.AreEqual(expectedVariableId, waveConditionsTrapezoidInput.VariableId); Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Ringtoets.HydraRing.Calculation.Test.csproj =================================================================== diff -u -rfc25acac78ccc302ea4fcc0414fc5e6adc0fccae -r8797ed1774bf2255a1370fafe122d9150f79e365 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Ringtoets.HydraRing.Calculation.Test.csproj (.../Ringtoets.HydraRing.Calculation.Test.csproj) (revision fc25acac78ccc302ea4fcc0414fc5e6adc0fccae) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Ringtoets.HydraRing.Calculation.Test.csproj (.../Ringtoets.HydraRing.Calculation.Test.csproj) (revision 8797ed1774bf2255a1370fafe122d9150f79e365) @@ -59,7 +59,7 @@ - +