Index: src/Deltares.DSoilModel.Data/Translations.xml
===================================================================
diff -u -r631 -r639
--- src/Deltares.DSoilModel.Data/Translations.xml (.../Translations.xml) (revision 631)
+++ src/Deltares.DSoilModel.Data/Translations.xml (.../Translations.xml) (revision 639)
@@ -70,7 +70,7 @@
-
+
Index: src/Deltares.DSoilModel.Data.Tests/DSoilModelProjectTest.cs
===================================================================
diff -u -r631 -r639
--- src/Deltares.DSoilModel.Data.Tests/DSoilModelProjectTest.cs (.../DSoilModelProjectTest.cs) (revision 631)
+++ src/Deltares.DSoilModel.Data.Tests/DSoilModelProjectTest.cs (.../DSoilModelProjectTest.cs) (revision 639)
@@ -47,6 +47,8 @@
[TestFixture]
public class DSoilModelProjectTest
{
+ private bool oldIsDataEventPublishStopped;
+ private IContext oldContext;
private object geographicHelper;
[TestFixtureSetUp]
@@ -57,15 +59,34 @@
geographicHelper = GeographicHelper.Instance;
GeographicHelper.Instance = new DotSpatialGeographicHelper();
+
+ oldContext = Context.CurrentContext;
+ Context.CurrentContext = new DSoilModelContext();
}
[TestFixtureTearDown]
public void FixtureTearDown()
{
DataEventPublisher.IsDataEventPublishStopped = oldIsDataEventPublishStopped;
GeographicHelper.Instance = geographicHelper as GeographicHelper;
+ Context.CurrentContext = new DSoilModelContext();
}
+ [TestCase(ParameterViewSettings.ProbabilisticParameters, 9)]
+ [TestCase(ParameterViewSettings.AsIsParameters, 22)]
+ [TestCase(ParameterViewSettings.AllParameters, 31)]
+ public void TestValidationOfDefaultSoilProperties(ParameterViewSettings parameterView, int errorCount)
+ {
+ var project = new DSoilModelProject { ParameterView = parameterView };
+ var context = (DSoilModelContext)Context.CurrentContext;
+ context.ParameterView = parameterView;
+
+ project.Soils.Soils.Add(new Soil {Name = "TestSoil"} );
+ var result = Validator.Validate(project);
+
+ Assert.AreEqual(errorCount, result.Count(r => r.MessageType == ValidationResultType.Error));
+ }
+
[TestCase("Boring_RDNAP.gef", true, false)]
[TestCase("Boring_RDNAPParis.gef", true, true)]
[TestCase("Boring_UserXYID.gef", false, false)]
@@ -849,8 +870,6 @@
Soil.Mechanisms = oldMechanisms;
}
- private bool oldIsDataEventPublishStopped;
-
private static Soil CreateTestSoil(bool defineStressTables = true)
{
Soil.Mechanisms = new[]
Index: src/Deltares.DSoilModel.Data/DSoilModelProject.cs
===================================================================
diff -u -r631 -r639
--- src/Deltares.DSoilModel.Data/DSoilModelProject.cs (.../DSoilModelProject.cs) (revision 631)
+++ src/Deltares.DSoilModel.Data/DSoilModelProject.cs (.../DSoilModelProject.cs) (revision 639)
@@ -25,6 +25,7 @@
using System.ComponentModel;
using System.IO;
using System.Linq;
+using System.Reflection;
using Deltares.Geographic;
using Deltares.Geometry;
using Deltares.Geotechnics;
@@ -734,6 +735,34 @@
}
///
+ /// Validation of soil properties that may not be empty (NaN).
+ ///
+ [Validate]
+ public ValidationResult[] ValidateSoilPropertiesSpecified()
+ {
+ // note, for Stochastic soil properties, DSL gives validation errors if the Stochast mean and/or other fields are empty (NaN)
+ // for other soil propertyies DSL does not check for empty cells unless the [NotClear] attribute was specified, which is not the cae for Soil class.
+ var result = new List();
+
+ // only check the non-stochastic public properties
+ var properties = typeof(Soil).GetProperties(BindingFlags.Instance | BindingFlags.Public).Where(p => p.PropertyType == typeof(double));
+
+ foreach (var soil in Soils.Soils)
+ {
+ foreach (var property in properties)
+ {
+ if (Context.IsVisible(soil, property.Name) == true && double.NaN.Equals(property.GetValue(soil, null)))
+ {
+ var msg = String.Format(LocalizationManager.GetTranslatedText(this, "ValidationNoValue"),
+ LocalizationManager.GetTranslatedText(typeof(Soil), property.Name));
+ result.Add(new ValidationResult(ValidationResultType.Error, msg, soil));
+ }
+ }
+ }
+ return result.ToArray();
+ }
+
+ ///
/// Validation for the specific mechanism point locations on soil profile 2D.
///
[Validate]