Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/TestData/StixImporter/DWP_1.stix =================================================================== diff -u Binary files differ Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj =================================================================== diff -u -r4808 -r4830 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 4808) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 4830) @@ -1307,6 +1307,9 @@ PreserveNewest + + PreserveNewest + Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.StixFileReader.Tests/StixFileReaderTest.cs =================================================================== diff -u -r4539 -r4830 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.StixFileReader.Tests/StixFileReaderTest.cs (.../StixFileReaderTest.cs) (revision 4539) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.StixFileReader.Tests/StixFileReaderTest.cs (.../StixFileReaderTest.cs) (revision 4830) @@ -21,6 +21,7 @@ using System.IO; using Deltares.Geotechnics.Soils; +using Deltares.Standard.Validation; using DGeoSuite.Components.Persistence; using NUnit.Framework; @@ -43,14 +44,37 @@ } [Test] - public void WhenStixFileIsRead_ThenSoilProfile2DIsNotNull() + public void WhenStixFileIsRead_ThenSoilProfile2DIsAsExpected() { const string fileName = @".\TestFiles\DWP_1.stix"; SoilProfile2D soilProfile2D = new StixFileReader().ReadSoilProfile(fileName); Assert.That(soilProfile2D, Is.Not.Null); - Assert.That(soilProfile2D.Name, Is.EqualTo("DWP_1.stix")); - Assert.That(soilProfile2D.Geometry, Is.Not.Null); + Assert.Multiple(() => + { + Assert.That(soilProfile2D.Name, Is.EqualTo("DWP_1.stix")); + Assert.That(soilProfile2D.Geometry, Is.Not.Null); + }); + Assert.That(soilProfile2D.Geometry.Surfaces, Has.Count.EqualTo(12)); + + ValidationResult[] validationResults = System.Array.Empty(); + for (int index = 0; index < 11; index++) + { + Assert.That(validationResults, Has.Length.EqualTo(0)); + validationResults = soilProfile2D.Surfaces[index].ValidateLayer(); + } + + validationResults = soilProfile2D.Geometry.ValidateGeometry(); + Assert.That(validationResults, Has.Length.EqualTo(1)); + Assert.Multiple(() => + { + Assert.That(validationResults[0].MessageType, Is.EqualTo(ValidationResultType.Error)); + Assert.That(validationResults[0].Text, Is.EqualTo("Loose lines are not allowed.")); + }); + + soilProfile2D.Geometry.RegenerateGeometry(); + validationResults = soilProfile2D.Geometry.ValidateGeometry(); + Assert.That(validationResults, Has.Length.EqualTo(0)); } } \ No newline at end of file Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Geometry2DImporter/SoilProfile2DImporterTest.cs =================================================================== diff -u -r4820 -r4830 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Geometry2DImporter/SoilProfile2DImporterTest.cs (.../SoilProfile2DImporterTest.cs) (revision 4820) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Geometry2DImporter/SoilProfile2DImporterTest.cs (.../SoilProfile2DImporterTest.cs) (revision 4830) @@ -24,7 +24,9 @@ using System.Linq; using Deltares.Dam.Data; using Deltares.Dam.Data.Geometry2DImporter; +using Deltares.Geometry; using Deltares.Geotechnics.Soils; +using Deltares.Standard.Validation; using NUnit.Framework; using GeotechnicsWaterPressureInterpolationModel = Deltares.Geotechnics.Soils.WaterpressureInterpolationModel; @@ -33,7 +35,8 @@ [TestFixture] public class SoilProfile2DImporterTest { - private const string TestDataFolder = @"TestData\StiImporter\"; + private const string StiTestDataFolder = @"TestData\StiImporter\"; + private const string StixTestDataFolder = @"TestData\StixImporter\"; [Test] [TestCase(null)] @@ -93,7 +96,7 @@ }); // Call - IEnumerable soilProfiles = SoilProfile2DImporter.Import(TestDataFolder, segment, availableSoils); + IEnumerable soilProfiles = SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils); // Assert Assert.That(soilProfiles.Count, Is.EqualTo(2)); @@ -139,7 +142,7 @@ }); // Call - IEnumerable soilProfiles = SoilProfile2DImporter.Import(TestDataFolder, segment, availableSoils); + IEnumerable soilProfiles = SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils); // Assert Assert.That(soilProfiles.Count, Is.EqualTo(2)); @@ -181,7 +184,7 @@ "Muck" }); - Assert.That(() => SoilProfile2DImporter.Import(TestDataFolder, segment, availableSoils), + Assert.That(() => SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils), Throws.Exception.TypeOf().With.Message.EqualTo($"'{invalidSoilProfile}' contains the undefined soil: Sand.")); } @@ -200,10 +203,38 @@ "Muck" }); - Assert.That(() => SoilProfile2DImporter.Import(TestDataFolder, segment, availableSoils), + Assert.That(() => SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils), Throws.TypeOf().With.Message.Contains($"Could not import soil profile '{invalidSoilProfileName}': ")); } + [Test] + public void WhenStixFileIsImported_ThenSoilProfile2DHasValidGeometry() + { + // Setup + const string fileName = "DWP_1.stix"; + Segment segment = CreateSegmentWithProfiles(new[] + { + fileName + }); + SoilList availableSoils = CreateSoilList(new[] + { + "wl_zand (1)", + "veen (1)", + "klei (1)", + "klei antropogeen (1)", + "zand antropogeen (1)" + }); + + // Call + IEnumerable soilProfiles = SoilProfile2DImporter.Import(StixTestDataFolder, segment, availableSoils); + + // Assert + GeometryData geometry = soilProfiles.ElementAt(0).Geometry; + Assert.That(geometry.Surfaces, Has.Count.EqualTo(12)); + ValidationResult[] validationResults = geometry.ValidateGeometry(); + Assert.That(validationResults, Has.Length.EqualTo(0)); + } + private static Segment CreateSegmentWithProfiles(IEnumerable soilProfileNames) { var random = new Random(21); Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.StixFileReader.Tests/SoilProfile2DDataModelTest.cs =================================================================== diff -u -r4823 -r4830 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.StixFileReader.Tests/SoilProfile2DDataModelTest.cs (.../SoilProfile2DDataModelTest.cs) (revision 4823) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.StixFileReader.Tests/SoilProfile2DDataModelTest.cs (.../SoilProfile2DDataModelTest.cs) (revision 4830) @@ -24,6 +24,7 @@ using Components.Persistence.Stability.Version2.Data; using Deltares.Geometry; using Deltares.Geotechnics.Soils; +using Deltares.Standard.Validation; using NUnit.Framework; namespace Deltares.Dam.StixFileReader.Tests; @@ -55,8 +56,8 @@ public void WhenDataModelWithMultipleLayersIsCreated_ThenSoilProfile2DIsAsExpected() { PersistableDataModel dataModel = PersistableDataModelFactory.CreateSimpleDataModelWithMultipleLayers(); - SoilProfile2D soilProfile2D = new SoilProfile2DDataModel().Create(dataModel); + IList points = soilProfile2D.Geometry.Points; Assert.Multiple(() => { @@ -143,5 +144,24 @@ Assert.That(curves.ElementAt(11).LocationEquals(new GeometryCurve(new GeometryPoint(15, 0, 5), new GeometryPoint(15, 0, 5))), Is.True); }); + + ValidationResult[] validationResults = soilProfile2D.Surfaces[0].ValidateLayer(); + Assert.That(validationResults, Has.Length.EqualTo(0)); + validationResults = soilProfile2D.Surfaces[1].ValidateLayer(); + Assert.That(validationResults, Has.Length.EqualTo(0)); + validationResults = soilProfile2D.Surfaces[2].ValidateLayer(); + Assert.That(validationResults, Has.Length.EqualTo(0)); + + validationResults = soilProfile2D.Geometry.ValidateGeometry(); + Assert.That(validationResults, Has.Length.EqualTo(1)); + Assert.Multiple(() => + { + Assert.That(validationResults[0].MessageType, Is.EqualTo(ValidationResultType.Error)); + Assert.That(validationResults[0].Text, Is.EqualTo("Loose lines are not allowed.")); + }); + + soilProfile2D.Geometry.RegenerateGeometry(); + validationResults = soilProfile2D.Geometry.ValidateGeometry(); + Assert.That(validationResults, Has.Length.EqualTo(0)); } } \ No newline at end of file Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Geometry2DImporter/SoilProfile2DImporter.cs =================================================================== diff -u -r4818 -r4830 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Geometry2DImporter/SoilProfile2DImporter.cs (.../SoilProfile2DImporter.cs) (revision 4818) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Geometry2DImporter/SoilProfile2DImporter.cs (.../SoilProfile2DImporter.cs) (revision 4830) @@ -127,6 +127,7 @@ { var reader = new StixFileReader.StixFileReader(); SoilProfile2D readSoilProfile = reader.ReadSoilProfile(filePath); + readSoilProfile.Geometry.RegenerateGeometry(); return readSoilProfile; }