Index: Core/Common/src/Core.Common.Base/Properties/Resources.Designer.cs
===================================================================
diff -u -r02670d8c9fceeaea5f829937a2eb269f3488c6b1 -rd2753c88b67dda711ab593c1d8a45ed472049d81
--- Core/Common/src/Core.Common.Base/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 02670d8c9fceeaea5f829937a2eb269f3488c6b1)
+++ Core/Common/src/Core.Common.Base/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision d2753c88b67dda711ab593c1d8a45ed472049d81)
@@ -127,6 +127,46 @@
}
///
+ /// Looks up a localized string similar to De variatiecoëfficient voor '{0}' moet groter zijn dan of gelijk aan 0..
+ ///
+ public static string DistributionValidationService_ValidateDistribution_CoefficientOfVariation_Of_0_must_be_larger_or_equal_to_0 {
+ get {
+ return ResourceManager.GetString("DistributionValidationService_ValidateDistribution_CoefficientOfVariation_Of_0_mu" +
+ "st_be_larger_or_equal_to_0", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to De verwachtingswaarde voor '{0}' moet een geldig getal zijn..
+ ///
+ public static string DistributionValidationService_ValidateDistribution_Mean_of_0_must_be_a_valid_number {
+ get {
+ return ResourceManager.GetString("DistributionValidationService_ValidateDistribution_Mean_of_0_must_be_a_valid_numb" +
+ "er", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to De verwachtingswaarde voor '{0}' moet een positief getal zijn..
+ ///
+ public static string DistributionValidationService_ValidateDistribution_Mean_of_0_must_be_positive_value {
+ get {
+ return ResourceManager.GetString("DistributionValidationService_ValidateDistribution_Mean_of_0_must_be_positive_val" +
+ "ue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to De standaard afwijking voor '{0}' moet groter zijn dan of gelijk aan 0..
+ ///
+ public static string DistributionValidationService_ValidateDistribution_StandardDeviation_of_0_must_be_larger_or_equal_to_0 {
+ get {
+ return ResourceManager.GetString("DistributionValidationService_ValidateDistribution_StandardDeviation_of_0_must_be" +
+ "_larger_or_equal_to_0", resourceCulture);
+ }
+ }
+
+ ///
/// Looks up a localized string similar to Fout.
///
public static string Error {
Index: Core/Common/src/Core.Common.Base/Properties/Resources.resx
===================================================================
diff -u -r02670d8c9fceeaea5f829937a2eb269f3488c6b1 -rd2753c88b67dda711ab593c1d8a45ed472049d81
--- Core/Common/src/Core.Common.Base/Properties/Resources.resx (.../Resources.resx) (revision 02670d8c9fceeaea5f829937a2eb269f3488c6b1)
+++ Core/Common/src/Core.Common.Base/Properties/Resources.resx (.../Resources.resx) (revision d2753c88b67dda711ab593c1d8a45ed472049d81)
@@ -174,4 +174,16 @@
Fout
+
+ De variatiecoëfficient voor '{0}' moet groter zijn dan of gelijk aan 0.
+
+
+ De verwachtingswaarde voor '{0}' moet een geldig getal zijn.
+
+
+ De verwachtingswaarde voor '{0}' moet een positief getal zijn.
+
+
+ De standaard afwijking voor '{0}' moet groter zijn dan of gelijk aan 0.
+
\ No newline at end of file
Index: Ringtoets/Common/src/Ringtoets.Common.Service/DistributionValidationService.cs
===================================================================
diff -u
--- Ringtoets/Common/src/Ringtoets.Common.Service/DistributionValidationService.cs (revision 0)
+++ Ringtoets/Common/src/Ringtoets.Common.Service/DistributionValidationService.cs (revision d2753c88b67dda711ab593c1d8a45ed472049d81)
@@ -0,0 +1,113 @@
+// 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.Base.Data;
+using Core.Common.Base.Properties;
+using Ringtoets.Common.Data.Probabilistics;
+
+namespace Ringtoets.Common.Service
+{
+ ///
+ /// Service that provides validation methods for probabilistic distributions
+ ///
+ public static class DistributionValidationService
+ {
+ ///
+ /// Performs the validation of a
+ ///
+ ///
+ ///
+ ///
+ public static string[] ValidateDistribution(NormalDistribution distribution, string parameterName)
+ {
+ var validationResult = new List();
+
+ if (IsValidNumber(distribution.Mean))
+ {
+ validationResult.Add(string.Format(Resources.DistributionValidationService_ValidateDistribution_Mean_of_0_must_be_a_valid_number, parameterName));
+ }
+
+ if (IsValidNumber(distribution.StandardDeviation))
+ {
+ validationResult.Add(string.Format(Resources.DistributionValidationService_ValidateDistribution_StandardDeviation_of_0_must_be_larger_or_equal_to_0, parameterName));
+ }
+
+ return validationResult.ToArray();
+ }
+
+ public static string[] ValidateDistribution(LogNormalDistribution distribution, string parameterName)
+ {
+ var validationResult = new List();
+
+ if (IsValidNumber(distribution.Mean))
+ {
+ validationResult.Add(string.Format(Resources.DistributionValidationService_ValidateDistribution_Mean_of_0_must_be_positive_value, parameterName));
+ }
+
+ if (IsValidNumber(distribution.StandardDeviation))
+ {
+ validationResult.Add(string.Format(Resources.DistributionValidationService_ValidateDistribution_StandardDeviation_of_0_must_be_larger_or_equal_to_0, parameterName));
+ }
+
+ return validationResult.ToArray();
+ }
+
+ public static string[] ValidateDistribution(VariationCoefficientNormalDistribution distribution, string parameterName)
+ {
+ var validationResult = new List();
+
+ if (IsValidNumber(distribution.Mean))
+ {
+ validationResult.Add(string.Format(Resources.DistributionValidationService_ValidateDistribution_Mean_of_0_must_be_a_valid_number, parameterName));
+ }
+
+ if (IsValidNumber(distribution.CoefficientOfVariation))
+ {
+ validationResult.Add(string.Format(Resources.DistributionValidationService_ValidateDistribution_CoefficientOfVariation_Of_0_must_be_larger_or_equal_to_0, parameterName));
+ }
+
+ return validationResult.ToArray();
+ }
+
+ public static string[] ValidateDistribution(VariationCoefficientLogNormalDistribution distribution, string parameterName)
+ {
+ var validationResult = new List();
+
+ if (IsValidNumber(distribution.Mean))
+ {
+ validationResult.Add(string.Format(Resources.DistributionValidationService_ValidateDistribution_Mean_of_0_must_be_positive_value, parameterName));
+ }
+
+ if (IsValidNumber(distribution.CoefficientOfVariation))
+ {
+ validationResult.Add(string.Format(Resources.DistributionValidationService_ValidateDistribution_CoefficientOfVariation_Of_0_must_be_larger_or_equal_to_0, parameterName));
+ }
+
+ return validationResult.ToArray();
+ }
+
+ private static bool IsValidNumber(RoundedDouble value)
+ {
+ return double.IsNaN(value) || double.IsInfinity(value);
+ }
+ }
+}
Index: Ringtoets/Common/src/Ringtoets.Common.Service/Ringtoets.Common.Service.csproj
===================================================================
diff -u -r02670d8c9fceeaea5f829937a2eb269f3488c6b1 -rd2753c88b67dda711ab593c1d8a45ed472049d81
--- Ringtoets/Common/src/Ringtoets.Common.Service/Ringtoets.Common.Service.csproj (.../Ringtoets.Common.Service.csproj) (revision 02670d8c9fceeaea5f829937a2eb269f3488c6b1)
+++ Ringtoets/Common/src/Ringtoets.Common.Service/Ringtoets.Common.Service.csproj (.../Ringtoets.Common.Service.csproj) (revision d2753c88b67dda711ab593c1d8a45ed472049d81)
@@ -48,6 +48,7 @@
Properties\GlobalAssembly.cs
+
Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/DistributionValidationServiceTest.cs
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.Service.Test/DistributionValidationServiceTest.cs (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/DistributionValidationServiceTest.cs (revision d2753c88b67dda711ab593c1d8a45ed472049d81)
@@ -0,0 +1,235 @@
+// 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 Core.Common.Base.Data;
+using NUnit.Framework;
+using Ringtoets.Common.Data.Probabilistics;
+
+namespace Ringtoets.Common.Service.Test
+{
+ [TestFixture]
+ public class DistributionValidationServiceTest
+ {
+ private const string paramName = "";
+
+ [Test]
+ public void ValidateDistribution_ValidNormalDistribution_NoErrorMessage()
+ {
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(new NormalDistribution(2), paramName);
+
+ // Assert
+ CollectionAssert.IsEmpty(message);
+ }
+
+ [Test]
+ public void ValidateDistribution_ValidLogNormalDistribution_NoErrorMessage()
+ {
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(new LogNormalDistribution(2), paramName);
+
+ // Assert
+ CollectionAssert.IsEmpty(message);
+ }
+
+ [Test]
+ public void ValidateDistribution_ValidVariationCoefficientNormalDistribution_NoErrorMessage()
+ {
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(new VariationCoefficientNormalDistribution(2), paramName);
+
+ // Assert
+ CollectionAssert.IsEmpty(message);
+ }
+
+ [Test]
+ public void ValidateDistribution_ValidVariationCoefficientLogNormalDistribution_NoErrorMessage()
+ {
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(new VariationCoefficientLogNormalDistribution(2), paramName);
+
+ // Assert
+ CollectionAssert.IsEmpty(message);
+ }
+
+ [Test]
+ [TestCase(double.NaN)]
+ [TestCase(double.NegativeInfinity)]
+ [TestCase(double.PositiveInfinity)]
+ public void ValidateDistribution_InvalidMeanNormalDistribution_ErrorMessage(double value)
+ {
+ // Setup
+ var expectedMessage = string.Format("De verwachtingswaarde voor '{0}' moet een geldig getal zijn.", paramName);
+ var distribution = new NormalDistribution(2)
+ {
+ Mean = (RoundedDouble) value
+ };
+
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(distribution, paramName);
+
+ // Assert
+ Assert.AreEqual(1, message.Length);
+ StringAssert.StartsWith(expectedMessage, message[0]);
+ }
+
+ [Test]
+ [TestCase(double.NaN)]
+ [TestCase(double.PositiveInfinity)]
+ public void ValidateDistribution_InvalidMeanLogNormalDistribution_ErrorMessage(double value)
+ {
+ // Setup
+ var expectedMessage = string.Format("De verwachtingswaarde voor '{0}' moet een positief getal zijn.", paramName);
+ var distribution = new LogNormalDistribution(2)
+ {
+ Mean = (RoundedDouble)value
+ };
+
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(distribution, paramName);
+
+ // Assert
+ Assert.AreEqual(1, message.Length);
+ StringAssert.StartsWith(expectedMessage, message[0]);
+ }
+
+ [Test]
+ [TestCase(double.NaN)]
+ [TestCase(double.NegativeInfinity)]
+ [TestCase(double.PositiveInfinity)]
+ public void ValidateDistribution_InvalidMeanVariationCoefficientNormalDistribution_ErrorMessage(double value)
+ {
+ // Setup
+ var expectedMessage = string.Format("De verwachtingswaarde voor '{0}' moet een geldig getal zijn.", paramName);
+ var distribution = new VariationCoefficientNormalDistribution(2)
+ {
+ Mean = (RoundedDouble)value
+ };
+
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(distribution, paramName);
+
+ // Assert
+ Assert.AreEqual(1, message.Length);
+ StringAssert.StartsWith(expectedMessage, message[0]);
+ }
+
+ [Test]
+ [TestCase(double.NaN)]
+ [TestCase(double.PositiveInfinity)]
+ public void ValidateDistribution_InvalidMeanVariationCoefficientLogNormalDistribution_ErrorMessage(double value)
+ {
+ // Setup
+ var expectedMessage = string.Format("De verwachtingswaarde voor '{0}' moet een positief getal zijn.", paramName);
+ var distribution = new VariationCoefficientLogNormalDistribution(2)
+ {
+ Mean = (RoundedDouble)value
+ };
+
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(distribution, paramName);
+
+ // Assert
+ Assert.AreEqual(1, message.Length);
+ StringAssert.StartsWith(expectedMessage, message[0]);
+ }
+
+ [Test]
+ [TestCase(double.NaN)]
+ [TestCase(double.PositiveInfinity)]
+ public void ValidateDistribution_InvalidStandardDeviationNormalDistribution_ErrorMessage(double value)
+ {
+ // Setup
+ var expectedMessage = string.Format("De standaard afwijking voor '{0}' moet groter zijn dan of gelijk aan 0.", paramName);
+ var distribution = new NormalDistribution(2)
+ {
+ StandardDeviation = (RoundedDouble)value
+ };
+
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(distribution, paramName);
+
+ // Assert
+ Assert.AreEqual(1, message.Length);
+ StringAssert.StartsWith(expectedMessage, message[0]);
+ }
+
+ [Test]
+ [TestCase(double.NaN)]
+ [TestCase(double.PositiveInfinity)]
+ public void ValidateDistribution_InvalidStandardDeviationLogNormalDistribution_ErrorMessage(double value)
+ {
+ // Setup
+ var expectedMessage = string.Format("De standaard afwijking voor '{0}' moet groter zijn dan of gelijk aan 0.", paramName);
+ var distribution = new LogNormalDistribution(2)
+ {
+ StandardDeviation = (RoundedDouble)value
+ };
+
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(distribution, paramName);
+
+ // Assert
+ Assert.AreEqual(1, message.Length);
+ StringAssert.StartsWith(expectedMessage, message[0]);
+ }
+
+ [Test]
+ [TestCase(double.NaN)]
+ [TestCase(double.PositiveInfinity)]
+ public void ValidateDistribution_InvalidVariationCoefficientNormalDistribution_ErrorMessage(double value)
+ {
+ // Setup
+ var expectedMessage = string.Format("De variatiecoëfficient voor '{0}' moet groter zijn dan of gelijk aan 0.", paramName);
+ var distribution = new VariationCoefficientNormalDistribution(2)
+ {
+ CoefficientOfVariation = (RoundedDouble)value
+ };
+
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(distribution, paramName);
+
+ // Assert
+ Assert.AreEqual(1, message.Length);
+ StringAssert.StartsWith(expectedMessage, message[0]);
+ }
+
+ [Test]
+ [TestCase(double.NaN)]
+ [TestCase(double.PositiveInfinity)]
+ public void ValidateDistribution_InvalidVariationCoefficientLogNormalDistribution_ErrorMessage(double value)
+ {
+ // Setup
+ var expectedMessage = string.Format("De variatiecoëfficient voor '{0}' moet groter zijn dan of gelijk aan 0.", paramName);
+ var distribution = new VariationCoefficientLogNormalDistribution(2)
+ {
+ CoefficientOfVariation = (RoundedDouble)value
+ };
+
+ // Call
+ string[] message = DistributionValidationService.ValidateDistribution(distribution, paramName);
+
+ // Assert
+ Assert.AreEqual(1, message.Length);
+ StringAssert.StartsWith(expectedMessage, message[0]);
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/Ringtoets.Common.Service.Test.csproj
===================================================================
diff -u -r1b0460d5f81926d0366ab10e4b0e9f6d75809c71 -rd2753c88b67dda711ab593c1d8a45ed472049d81
--- Ringtoets/Common/test/Ringtoets.Common.Service.Test/Ringtoets.Common.Service.Test.csproj (.../Ringtoets.Common.Service.Test.csproj) (revision 1b0460d5f81926d0366ab10e4b0e9f6d75809c71)
+++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/Ringtoets.Common.Service.Test.csproj (.../Ringtoets.Common.Service.Test.csproj) (revision d2753c88b67dda711ab593c1d8a45ed472049d81)
@@ -61,6 +61,7 @@
+
Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationService.cs
===================================================================
diff -u -r12adc4f02f30f7e1d65953624958ed5af436f24f -rd2753c88b67dda711ab593c1d8a45ed472049d81
--- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationService.cs (.../HeightStructuresCalculationService.cs) (revision 12adc4f02f30f7e1d65953624958ed5af436f24f)
+++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationService.cs (.../HeightStructuresCalculationService.cs) (revision d2753c88b67dda711ab593c1d8a45ed472049d81)
@@ -20,13 +20,11 @@
// All rights reserved.
using System.Collections.Generic;
-using System.Diagnostics;
using System.Linq;
using Core.Common.Base.Data;
using log4net;
using Ringtoets.Common.Data.AssessmentSection;
using Ringtoets.Common.Data.FailureMechanism;
-using Ringtoets.Common.Data.Probabilistics;
using Ringtoets.Common.Service;
using Ringtoets.HeightStructures.Data;
using Ringtoets.HeightStructures.Service.Properties;
@@ -191,78 +189,22 @@
}
else
{
- validationResult.AddRange(ValidateProbabilisticDistribution(inputParameters.StormDuration, "stormduur"));
- //DeviationWaveDirection
- validationResult.AddRange(ValidateProbabilisticDistribution(inputParameters.ModelFactorSuperCriticalFlow, "modelfactor overloopdebiet volkomen overlaat"));
- //Orientatie
- validationResult.AddRange(ValidateProbabilisticDistribution(inputParameters.FlowWidthAtBottomProtection, "stroomvoerende breedte bodembescherming"));
- validationResult.AddRange(ValidateProbabilisticDistribution(inputParameters.WidthFlowApertures, "breedte van doorstroomopening"));
- validationResult.AddRange(ValidateProbabilisticDistribution(inputParameters.StorageStructureArea, "kombergend oppervlak"));
- validationResult.AddRange(ValidateProbabilisticDistribution(inputParameters.AllowedLevelIncreaseStorage, "toegestane peilverhoging komberging"));
- validationResult.AddRange(ValidateProbabilisticDistribution(inputParameters.LevelCrestStructure, "kerende hoogte"));
- validationResult.AddRange(ValidateProbabilisticDistribution(inputParameters.CriticalOvertoppingDischarge, "kritiek instromend debiet"));
+ validationResult.AddRange(DistributionValidationService.ValidateDistribution(inputParameters.StormDuration, "stormduur"));
+ //DeviationWaveDirection
+ validationResult.AddRange(DistributionValidationService.ValidateDistribution(inputParameters.ModelFactorSuperCriticalFlow, "modelfactor overloopdebiet volkomen overlaat"));
+ //Orientatie
+ validationResult.AddRange(DistributionValidationService.ValidateDistribution(inputParameters.FlowWidthAtBottomProtection, "stroomvoerende breedte bodembescherming"));
+ validationResult.AddRange(DistributionValidationService.ValidateDistribution(inputParameters.WidthFlowApertures, "breedte van doorstroomopening"));
+ validationResult.AddRange(DistributionValidationService.ValidateDistribution(inputParameters.StorageStructureArea, "kombergend oppervlak"));
+ validationResult.AddRange(DistributionValidationService.ValidateDistribution(inputParameters.AllowedLevelIncreaseStorage, "toegestane peilverhoging komberging"));
+ validationResult.AddRange(DistributionValidationService.ValidateDistribution(inputParameters.LevelCrestStructure, "kerende hoogte"));
+ validationResult.AddRange(DistributionValidationService.ValidateDistribution(inputParameters.CriticalOvertoppingDischarge, "kritiek instromend debiet"));
// Probability structure given erosion
}
return validationResult.ToArray();
}
- private static string[] ValidateProbabilisticDistribution(NormalDistribution distribution, string parameterName)
- {
- var validationResult = new List();
-
- if (IsValidNumber(distribution.Mean))
- {
- validationResult.Add(string.Format("De verwachtingswaarde van '{0}' moet een geldig getal zijn.", parameterName));
- }
-
- if (IsValidNumber(distribution.StandardDeviation)) {}
-
- return validationResult.ToArray();
- }
-
- private static string[] ValidateProbabilisticDistribution(LogNormalDistribution distribution, string parameterName)
- {
- var validationResult = new List();
-
- if (IsValidNumber(distribution.Mean))
- {
- validationResult.Add(string.Format("De verwachtingswaarde van '{0}' moet een positief getal zijn.", parameterName));
- }
-
- if (IsValidNumber(distribution.StandardDeviation)) {}
-
- return validationResult.ToArray();
- }
-
- private static string[] ValidateProbabilisticDistribution(VariationCoefficientNormalDistribution distribution, string parameterName)
- {
- var validationResult = new List();
-
- if (IsValidNumber(distribution.Mean))
- {
- validationResult.Add(string.Format("De verwachtingswaarde van '{0}' moet een geldig getal zijn.", parameterName));
- }
-
- if (IsValidNumber(distribution.CoefficientOfVariation)) {}
-
- return validationResult.ToArray();
- }
-
- private static string[] ValidateProbabilisticDistribution(VariationCoefficientLogNormalDistribution distribution, string parameterName)
- {
- var validationResult = new List();
-
- if (IsValidNumber(distribution.Mean))
- {
- validationResult.Add(string.Format("De verwachtingswaarde van '{0}' moet een positief getal zijn.", parameterName));
- }
-
- if (IsValidNumber(distribution.CoefficientOfVariation)) { }
-
- return validationResult.ToArray();
- }
-
private static bool IsValidNumber(RoundedDouble value)
{
return double.IsNaN(value) || double.IsInfinity(value);