Index: Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/IllustrationPoints/WindDirectionClosingScenarioIllustrationPoint.cs =================================================================== diff -u -rf1e6b4ad5dddc6e771288f17a0b619d6dd23ec07 -rb526c46d60f56864ef0da2b8dd2b7442fe42c997 --- Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/IllustrationPoints/WindDirectionClosingScenarioIllustrationPoint.cs (.../WindDirectionClosingScenarioIllustrationPoint.cs) (revision f1e6b4ad5dddc6e771288f17a0b619d6dd23ec07) +++ Ringtoets/Common/src/Ringtoets.Common.Data/Hydraulics/IllustrationPoints/WindDirectionClosingScenarioIllustrationPoint.cs (.../WindDirectionClosingScenarioIllustrationPoint.cs) (revision b526c46d60f56864ef0da2b8dd2b7442fe42c997) @@ -33,34 +33,34 @@ /// Creates an instance of . /// /// The wind direction. - /// The closing situation. + /// The closing situation. /// The illustrationPoint. public WindDirectionClosingScenarioIllustrationPoint(WindDirection windDirection, - string closingSituation, + string closingScenario, IllustrationPoint illustrationPoint) { if (windDirection == null) { throw new ArgumentNullException(nameof(windDirection)); } - if (closingSituation == null) + if (closingScenario == null) { - throw new ArgumentNullException(nameof(closingSituation)); + throw new ArgumentNullException(nameof(closingScenario)); } if (illustrationPoint == null) { throw new ArgumentNullException(nameof(illustrationPoint)); } WindDirection = windDirection; - ClosingSituation = closingSituation; + ClosingScenario = closingScenario; IllustrationPoint = illustrationPoint; } /// /// Gets the closing situation. /// - public string ClosingSituation { get; } + public string ClosingScenario { get; } /// /// Gets the wind direction. Index: Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/WindDirectionClosingScenarioIllustrationPointConverter.cs =================================================================== diff -u --- Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/WindDirectionClosingScenarioIllustrationPointConverter.cs (revision 0) +++ Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/WindDirectionClosingScenarioIllustrationPointConverter.cs (revision b526c46d60f56864ef0da2b8dd2b7442fe42c997) @@ -0,0 +1,71 @@ +// 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 Ringtoets.Common.Data.Hydraulics.IllustrationPoints; +using Ringtoets.HydraRing.Calculation.Parsers.IllustrationPoints; +using HydraWindDirection = Ringtoets.HydraRing.Calculation.Parsers.IllustrationPoints.WindDirection; +using WindDirection = Ringtoets.Common.Data.Hydraulics.IllustrationPoints.WindDirection; + +namespace Ringtoets.Common.Service.IllustrationPoints +{ + /// + /// + /// + public static class WindDirectionClosingScenarioIllustrationPointConverter + { + /// + /// + /// + /// + /// + /// + /// Thrown when any of: + /// + /// , + /// , + /// , + /// + /// are null. + /// Thrown when + /// is not in the interval of [0, 360]. + public static WindDirectionClosingScenarioIllustrationPoint CreateWindDirectionClosingScenarioIllustrationPoint( + WindDirectionClosingSituation hydraWindDirectionClosingSituation, + SubMechanismIllustrationPoint hydraSubMechanismIllustrationPoint) + { + if (hydraWindDirectionClosingSituation == null) + { + throw new ArgumentNullException(nameof(hydraWindDirectionClosingSituation)); + } + if (hydraSubMechanismIllustrationPoint == null) + { + throw new ArgumentNullException(nameof(hydraSubMechanismIllustrationPoint)); + } + + WindDirection windDirection = WindDirectionConverter.CreateWindDirection(hydraWindDirectionClosingSituation.WindDirection); + IllustrationPoint illustrationPoint = IllustrationPointConverter.CreateIllustrationPoint(hydraSubMechanismIllustrationPoint); + + return new WindDirectionClosingScenarioIllustrationPoint(windDirection, + hydraWindDirectionClosingSituation.ClosingSituation, + illustrationPoint); + } + } +} \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Service/Ringtoets.Common.Service.csproj =================================================================== diff -u -rd5f48f10a49754d2b135f5e0208b933a38cb3e00 -rb526c46d60f56864ef0da2b8dd2b7442fe42c997 --- Ringtoets/Common/src/Ringtoets.Common.Service/Ringtoets.Common.Service.csproj (.../Ringtoets.Common.Service.csproj) (revision d5f48f10a49754d2b135f5e0208b933a38cb3e00) +++ Ringtoets/Common/src/Ringtoets.Common.Service/Ringtoets.Common.Service.csproj (.../Ringtoets.Common.Service.csproj) (revision b526c46d60f56864ef0da2b8dd2b7442fe42c997) @@ -52,6 +52,7 @@ + Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/IllustrationPoints/WindDirectionClosingScenarioIllustrationPointTest.cs =================================================================== diff -u -rf1e6b4ad5dddc6e771288f17a0b619d6dd23ec07 -rb526c46d60f56864ef0da2b8dd2b7442fe42c997 --- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/IllustrationPoints/WindDirectionClosingScenarioIllustrationPointTest.cs (.../WindDirectionClosingScenarioIllustrationPointTest.cs) (revision f1e6b4ad5dddc6e771288f17a0b619d6dd23ec07) +++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Hydraulics/IllustrationPoints/WindDirectionClosingScenarioIllustrationPointTest.cs (.../WindDirectionClosingScenarioIllustrationPointTest.cs) (revision b526c46d60f56864ef0da2b8dd2b7442fe42c997) @@ -57,7 +57,7 @@ // Assert var exception = Assert.Throws(call); - Assert.AreEqual("closingSituation", exception.ParamName); + Assert.AreEqual("closingScenario", exception.ParamName); } [Test] @@ -79,16 +79,16 @@ public void Constructor_ValidArguments_ReturnsExpectedProperties() { // Setup - const string closingSituation = "closing situation"; + const string closingScenario = "closing scenario"; var windDirection = new TestWindDirection(); var illustrationPoint = new TestIllustrationPoint(); // Call var windDirectionClosingScenarioIllustrationPoint = - new WindDirectionClosingScenarioIllustrationPoint(windDirection, closingSituation, illustrationPoint); + new WindDirectionClosingScenarioIllustrationPoint(windDirection, closingScenario, illustrationPoint); // Assert - Assert.AreEqual(closingSituation, windDirectionClosingScenarioIllustrationPoint.ClosingSituation); + Assert.AreEqual(closingScenario, windDirectionClosingScenarioIllustrationPoint.ClosingScenario); Assert.AreSame(windDirection, windDirectionClosingScenarioIllustrationPoint.WindDirection); Assert.AreSame(illustrationPoint, windDirectionClosingScenarioIllustrationPoint.IllustrationPoint); } Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/IllustrationPoints/TestIllustrationPoint.cs =================================================================== diff -u -rf1e6b4ad5dddc6e771288f17a0b619d6dd23ec07 -rb526c46d60f56864ef0da2b8dd2b7442fe42c997 --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/IllustrationPoints/TestIllustrationPoint.cs (.../TestIllustrationPoint.cs) (revision f1e6b4ad5dddc6e771288f17a0b619d6dd23ec07) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/IllustrationPoints/TestIllustrationPoint.cs (.../TestIllustrationPoint.cs) (revision b526c46d60f56864ef0da2b8dd2b7442fe42c997) @@ -32,7 +32,7 @@ /// /// Creates a . /// - public TestIllustrationPoint() + public TestIllustrationPoint() : base("Illustration Point", Enumerable.Empty(), Enumerable.Empty(), 3.14) {} } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/WindDirectionClosingScenarioIllustrationPointConverterTest.cs =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/WindDirectionClosingScenarioIllustrationPointConverterTest.cs (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/IllustrationPoints/WindDirectionClosingScenarioIllustrationPointConverterTest.cs (revision b526c46d60f56864ef0da2b8dd2b7442fe42c997) @@ -0,0 +1,138 @@ +// 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 Core.Common.TestUtil; +using NUnit.Framework; +using Ringtoets.Common.Data.Hydraulics.IllustrationPoints; +using Ringtoets.Common.Data.TestUtil; +using Ringtoets.Common.Service.IllustrationPoints; +using HydraWindDirection = Ringtoets.HydraRing.Calculation.Parsers.IllustrationPoints.WindDirection; +using HydraSubMechanismIllustrationPoint = Ringtoets.HydraRing.Calculation.Parsers.IllustrationPoints.SubMechanismIllustrationPoint; +using HydraWindDirectionClosingSituation = Ringtoets.HydraRing.Calculation.Parsers.IllustrationPoints.WindDirectionClosingSituation; +using HydraIllustrationPointResult = Ringtoets.HydraRing.Calculation.Parsers.IllustrationPoints.IllustrationPointResult; +using HydraRealizedStochast = Ringtoets.HydraRing.Calculation.Parsers.IllustrationPoints.RealizedStochast; + +namespace Ringtoets.Common.Service.Test.IllustrationPoints +{ + [TestFixture] + public class WindDirectionClosingScenarioIllustrationPointConverterTest + { + [Test] + public void CreateWindDirectionClosingScenarioIllustrationPoint_HydraWindDirectionNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => + WindDirectionClosingScenarioIllustrationPointConverter.CreateWindDirectionClosingScenarioIllustrationPoint( + null, + new HydraSubMechanismIllustrationPoint()); + + // Assert + string paramName = Assert.Throws(call).ParamName; + Assert.AreEqual("hydraWindDirectionClosingSituation", paramName); + } + + [Test] + public void CreateWindDirectionClosingScenarioIllustrationPoint_SubMechanismIllustrationPointNull_ThrowsArgumentNullException() + { + // Setup + var hydraWindDirection = new HydraWindDirection(); + + // Call + TestDelegate call = () => + WindDirectionClosingScenarioIllustrationPointConverter.CreateWindDirectionClosingScenarioIllustrationPoint( + new HydraWindDirectionClosingSituation(hydraWindDirection, string.Empty), + null); + + // Assert + string paramName = Assert.Throws(call).ParamName; + Assert.AreEqual("hydraSubMechanismIllustrationPoint", paramName); + } + + [Test] + public void CreateWindDirectionClosingScenarioIllustrationPoint_ValidArguments_ExpectedProperties() + { + // Setup + const string closingScenario = "closing scenario"; + + var random = new Random(21); + var hydraWindDirection = new HydraWindDirection + { + Angle = random.GetFromRange(0.0, 360.0), + Name = "Name" + }; + var windDirectionClosingSituation = new HydraWindDirectionClosingSituation(hydraWindDirection, closingScenario); + + var hydraIllustrationPointResult = new HydraIllustrationPointResult + { + Description = "HydraIllustrationPointResult", + Value = random.NextDouble() + }; + var hydraRealizedStochast = new HydraRealizedStochast + { + Alpha = random.NextDouble(), + Duration = random.NextDouble(), + Name = "HydraRealizedStochast", + Realization = random.NextDouble() + }; + var subMechanismIllustrationPoint = new HydraSubMechanismIllustrationPoint + { + Beta = random.NextDouble(), + Name = "name", + Results = + { + hydraIllustrationPointResult + }, + Stochasts = + { + hydraRealizedStochast + } + }; + + // Call + WindDirectionClosingScenarioIllustrationPoint combination = + WindDirectionClosingScenarioIllustrationPointConverter.CreateWindDirectionClosingScenarioIllustrationPoint(windDirectionClosingSituation, subMechanismIllustrationPoint); + + // Assert + WindDirection windDirection = combination.WindDirection; + Assert.AreEqual(hydraWindDirection.Angle, windDirection.Angle, windDirection.Angle.GetAccuracy()); + Assert.AreEqual(hydraWindDirection.Name, windDirection.Name); + + Assert.AreEqual(closingScenario, combination.ClosingScenario); + + IllustrationPoint illustrationPoint = combination.IllustrationPoint; + Assert.AreEqual(subMechanismIllustrationPoint.Beta, illustrationPoint.Beta, illustrationPoint.Beta.GetAccuracy()); + Assert.AreEqual(subMechanismIllustrationPoint.Name, illustrationPoint.Name); + + IllustrationPointResult illustrationPointResult = illustrationPoint.IllustrationPointResults.Single(); + Assert.AreEqual(hydraIllustrationPointResult.Description, illustrationPointResult.Description); + Assert.AreEqual(hydraIllustrationPointResult.Value, illustrationPointResult.Value, illustrationPointResult.Value.GetAccuracy()); + + RealizedStochast stochast = illustrationPoint.Stochasts.Single(); + Assert.AreEqual(hydraRealizedStochast.Alpha, stochast.Alpha, stochast.Alpha.GetAccuracy()); + int duration = Convert.ToInt32(hydraRealizedStochast.Duration); + Assert.AreEqual(duration, stochast.Duration); + Assert.AreEqual(hydraRealizedStochast.Name, stochast.Name); + Assert.AreEqual(hydraRealizedStochast.Realization, stochast.Realization, stochast.Realization.GetAccuracy()); + } + } +} \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/Ringtoets.Common.Service.Test.csproj =================================================================== diff -u -rd5f48f10a49754d2b135f5e0208b933a38cb3e00 -rb526c46d60f56864ef0da2b8dd2b7442fe42c997 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/Ringtoets.Common.Service.Test.csproj (.../Ringtoets.Common.Service.Test.csproj) (revision d5f48f10a49754d2b135f5e0208b933a38cb3e00) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/Ringtoets.Common.Service.Test.csproj (.../Ringtoets.Common.Service.Test.csproj) (revision b526c46d60f56864ef0da2b8dd2b7442fe42c997) @@ -69,6 +69,7 @@ +