Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.BlighCalculator/Deltares.DamPiping.BlighCalculator.csproj =================================================================== diff -u -r324 -r325 --- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.BlighCalculator/Deltares.DamPiping.BlighCalculator.csproj (.../Deltares.DamPiping.BlighCalculator.csproj) (revision 324) +++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.BlighCalculator/Deltares.DamPiping.BlighCalculator.csproj (.../Deltares.DamPiping.BlighCalculator.csproj) (revision 325) @@ -59,6 +59,7 @@ ResXFileCodeGenerator Resources.Designer.cs + Designer Index: dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.BlighCalculatorTests/PipingCalculatorBlighTests.cs =================================================================== diff -u -r320 -r325 --- dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.BlighCalculatorTests/PipingCalculatorBlighTests.cs (.../PipingCalculatorBlighTests.cs) (revision 320) +++ dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.BlighCalculatorTests/PipingCalculatorBlighTests.cs (.../PipingCalculatorBlighTests.cs) (revision 325) @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Deltares.DamPiping.BlighCalculator; +using Deltares.DamPiping.BlighCalculator; using NUnit.Framework; namespace Deltares.DamPiping.BlighCalculatorTests @@ -29,15 +25,17 @@ public void TestCalculation() { const double diff = 0.0001; - var bc = new PipingCalculatorBligh(); - bc.HRiver = 2.0; - bc.ModelFactorPiping = 1.0; - bc.HExit = 0.0; - bc.Rc = 0.3; - bc.DTotal = 5.0; - bc.SeepageLength = 40.5; - //bc.D50 = 2.5e-3; // WTI Test succeeds with CreepFactorWTI todo: remove D50 and CreepFactorWTI? - bc.D70 = 180.0; // Dam: set D70 instead of D50 + var bc = new PipingCalculatorBligh + { + HRiver = 2.0, + ModelFactorPiping = 1.0, + HExit = 0.0, + Rc = 0.3, + DTotal = 5.0, + SeepageLength = 40.5, + //bc.D50 = 2.5e-3; // WTI Test succeeds with CreepFactorWTI todo: remove D50 and CreepFactorWTI? + D70 = 180.0 // Dam: set D70 instead of D50 + }; bc.Calculate(); Assert.AreEqual(4.5, bc.FoSp, diff); Assert.AreEqual(2.25, bc.Hc, diff); @@ -46,5 +44,96 @@ Assert.AreEqual(3.75, bc.Hcp, diff); // not relevant for Dam todo: remove Hcp? } + [Test] + public void TestValidateNaNParameter() + { + var bc = new PipingCalculatorBligh + { + HRiver = 2.0, + ModelFactorPiping = 1.0, + HExit = 0.0, + Rc = 0.3, + DTotal = 5.0, + SeepageLength = 40.5, + D70 = 180.0 + }; + var originalErrors = bc.Validate(); + + bc.HRiver = double.NaN; + bc.ModelFactorPiping = double.NaN; + bc.HExit = double.NaN; + bc.Rc = double.NaN; + bc.DTotal = double.NaN; + bc.SeepageLength = double.NaN; + bc.D70 = double.NaN; + var nanErrors = bc.Validate(); + Assert.AreEqual(originalErrors.Count + 7, nanErrors.Count); + + // D70 is allowed to be null + bc.D70 = null; + nanErrors = bc.Validate(); + Assert.AreEqual(originalErrors.Count + 6, nanErrors.Count); + } + + [Test] + [SetUICulture("en-US")] + public void TestValidateRcLessThan0En() + { + var calculator = new PipingCalculatorBligh + { + HRiver = 2.0, + ModelFactorPiping = 1.0, + HExit = 0.0, + Rc = -1e-6, + DTotal = 5.0, + SeepageLength = 40.5, + D70 = 180.0 + }; + var errors = calculator.Validate(); + Assert.AreEqual(1, errors.Count); + var expectedMessageEN = "Rc may not be less than 0."; + CollectionAssert.AreEqual(new[] {expectedMessageEN}, errors); + } + + [Test] + [SetUICulture("nl-NL")] + public void TestValidateRcLessThan0Nl() + { + var calculator = new PipingCalculatorBligh + { + HRiver = 2.0, + ModelFactorPiping = 1.0, + HExit = 0.0, + Rc = -1e-6, + DTotal = 5.0, + SeepageLength = 40.5, + D70 = 180.0 + }; + var errors = calculator.Validate(); + Assert.AreEqual(1, errors.Count); + var expectedMessageNL = "De waarde voor de dempingsfactor mag niet lager dan 0 zijn."; + CollectionAssert.AreEqual(new[] { expectedMessageNL }, errors); + } + + [Test] + [SetUICulture("en-US")] + public void TestValidateReducedFall() + { + var calculator = new PipingCalculatorBligh + { + HRiver = 2.0, + ModelFactorPiping = 1.0, + HExit = 2.0, + Rc = 0, + DTotal = 5.0, + SeepageLength = 40.5, + D70 = 180.0 + }; + var errors = calculator.Validate(); + Assert.AreEqual(1, errors.Count); + var expectedMessageEN = "HRiver - HExit - (Rc*DTotal) may not be 0."; + CollectionAssert.AreEqual(new[] { expectedMessageEN }, errors); + } + } } Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.BlighCalculator/PipingCalculatorBligh.cs =================================================================== diff -u -r324 -r325 --- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.BlighCalculator/PipingCalculatorBligh.cs (.../PipingCalculatorBligh.cs) (revision 324) +++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.BlighCalculator/PipingCalculatorBligh.cs (.../PipingCalculatorBligh.cs) (revision 325) @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Text; +using System.Threading; using Deltares.DamPiping.BlighCalculator.Properties; namespace Deltares.DamPiping.BlighCalculator @@ -284,6 +286,10 @@ { LogParameterIsNaN(errors, "D50"); } + if (D70 != null && double.IsNaN((double) D70)) + { + LogParameterIsNaN(errors, "D70"); + } return errors; }