Index: DamClients/DamUI/trunk/src/Dam/Tests/WaterBoardImporterTests.cs =================================================================== diff -u -r3527 -r3709 --- DamClients/DamUI/trunk/src/Dam/Tests/WaterBoardImporterTests.cs (.../WaterBoardImporterTests.cs) (revision 3527) +++ DamClients/DamUI/trunk/src/Dam/Tests/WaterBoardImporterTests.cs (.../WaterBoardImporterTests.cs) (revision 3709) @@ -22,38 +22,33 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using NUnit.Framework; -using Deltares.Geometry; using Deltares.Dam.Data; using Deltares.Dam.Data.DataPlugins; using Deltares.Dam.Data.DataPlugins.Configuration; -using Deltares.Geotechnics.Soils; using Deltares.Geotechnics.SurfaceLines; -using Deltares.Standard.Logging; using Deltares.Standard.TestUtils; +using NUnit.Framework; -using Segment = Deltares.Dam.Data.Segment; - namespace Deltares.Dam.Tests { [TestFixture] public class WaterBoardImporterTests { - const string DirectoryWithCsvFiles = @"..\..\..\data\Dam\Waterboards\Groot Salland\Binnenwaarts"; - List srcDataSources; - DataPluginImporter dataPluginImporter; - DataSourceContainer dataSourceContainer; + private const string DirectoryWithCsvFiles = @"..\..\..\data\Dam\Waterboards\Groot Salland\Binnenwaarts"; + private List srcDataSources; + private DataPluginImporter dataPluginImporter; + private DataSourceContainer dataSourceContainer; public void SetupForCsvFilesImport() { srcDataSources = new List - { - new DataSource - { - DataSourceType = DataSourceType.CsvFiles, - DataLocation = DirectoryWithCsvFiles - } - }; + { + new DataSource + { + DataSourceType = DataSourceType.CsvFiles, + DataLocation = DirectoryWithCsvFiles + } + }; dataPluginImporter = new DataPluginImporter(); dataPluginImporter.SetDataSources("", srcDataSources); dataSourceContainer = new DataSourceContainer { DataSourceList = srcDataSources }; @@ -71,57 +66,62 @@ const double cTolerance = 0.00001; const double cToleranceCoordinate = 0.00001; SetupForCsvFilesImport(); - using (var waterBoard = WaterBoardImporter.ImportAllData("", dataSourceContainer, DamProjectType.Calamity, null)) + using (var waterBoard = + WaterBoardImporter.ImportAllData("", dataSourceContainer, DamProjectType.Calamity, null)) { // Check Dike Assert.AreEqual(1, waterBoard.Dikes.Count); - Dike dike = waterBoard.Dikes[0]; + var dike = waterBoard.Dikes[0]; //Check Soils Assert.AreEqual(47, dike.SoilList.Soils.Count); - Soil soil = dike.SoilList.Soils[dike.SoilList.GetSoilIndexByName(soilKleiDuin)]; + var soil = dike.SoilList.Soils[dike.SoilList.GetSoilIndexByName(soilKleiDuin)]; Assert.AreEqual(15.7, soil.AbovePhreaticLevel, cTolerance); // Check Soilprofiles Assert.AreEqual(26, dike.SoilProfiles.Count); - SoilProfile1D soilProfile = dike.SoilProfiles.First(x => x.Name.Equals(soilProfileId)); + var soilProfile = dike.SoilProfiles.First(x => x.Name.Equals(soilProfileId)); Assert.AreEqual(soilKleiDuin, soilProfile.Layers[0].Soil.Name); // Check Segments Assert.AreEqual(24, waterBoard.Segments.Count); - Segment segment = waterBoard.Segments.First(x => x.Name.Equals(segmentId)); + var segment = waterBoard.Segments.First(x => x.Name.Equals(segmentId)); Assert.AreEqual("10Y_024_STBI.sti", segment.SoilProfileProbabilities[0].SoilGeometryName); Assert.AreEqual(100.0, segment.SoilProfileProbabilities[0].Probability, cTolerance); - Assert.IsTrue(segment.SoilProfileProbabilities[0].SegmentFailureMechanismType.Equals(FailureMechanismSystemType.StabilityInside)); + Assert.IsTrue(segment.SoilProfileProbabilities[0].SegmentFailureMechanismType + .Equals(FailureMechanismSystemType.StabilityInside)); // Check segment with stability and piping segment = waterBoard.Segments.Where(x => x.Name.Equals("segment_dijkring10_dwp02_4")).FirstOrDefault(); Assert.AreEqual("10Y_024_STBI.sti", segment.SoilProfileProbabilities[0].SoilGeometryName); Assert.AreEqual(100.0, segment.SoilProfileProbabilities[0].Probability, cTolerance); - Assert.IsTrue(segment.SoilProfileProbabilities[0].SegmentFailureMechanismType.Equals(FailureMechanismSystemType.StabilityInside)); + Assert.IsTrue(segment.SoilProfileProbabilities[0].SegmentFailureMechanismType + .Equals(FailureMechanismSystemType.StabilityInside)); Assert.AreEqual("10Y_024_STBI.sti", segment.SoilProfileProbabilities[1].SoilGeometryName); Assert.AreEqual(100.0, segment.SoilProfileProbabilities[1].Probability, cTolerance); - Assert.IsTrue(segment.SoilProfileProbabilities[1].SegmentFailureMechanismType.Equals(FailureMechanismSystemType.Piping)); + Assert.IsTrue(segment.SoilProfileProbabilities[1].SegmentFailureMechanismType + .Equals(FailureMechanismSystemType.Piping)); // Check surfacelines Assert.AreEqual(13, dike.SurfaceLines2.Count); - SurfaceLine2 surfaceline = dike.SurfaceLines2.First(x => x.Name.Equals(surfacelineId)); + var surfaceline = dike.SurfaceLines2.First(x => x.Name.Equals(surfacelineId)); Assert.IsTrue(surfaceline.Geometry.Points.Any()); Assert.AreEqual(0.0, surfaceline.Geometry.Points[0].X, cToleranceCoordinate); Assert.AreEqual(0.0, surfaceline.Geometry.Points[0].Y, cToleranceCoordinate); Assert.AreEqual(-0.48, surfaceline.Geometry.Points[0].Z, cToleranceCoordinate); - int lastPointIndex = surfaceline.Geometry.Count - 1; + var lastPointIndex = surfaceline.Geometry.Count - 1; Assert.AreEqual(71.25, surfaceline.Geometry.Points[lastPointIndex].X, cToleranceCoordinate); Assert.AreEqual(0.0, surfaceline.Geometry.Points[lastPointIndex].Y, cToleranceCoordinate); Assert.AreEqual(-0.36, surfaceline.Geometry.Points[lastPointIndex].Z, cToleranceCoordinate); - GeometryPoint point = surfaceline.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside); + var point = surfaceline.CharacteristicPoints.GetGeometryPoint( + CharacteristicPointType.SurfaceLevelInside); Assert.AreEqual(71.25, point.X, cToleranceCoordinate); Assert.AreEqual(0.0, point.Y, cToleranceCoordinate); Assert.AreEqual(-0.36, point.Z, cToleranceCoordinate); // Check locations Assert.AreEqual(13, dike.Locations.Count); - Location location = dike.Locations.First(x => x.Name.Equals(locationId)); + var location = dike.Locations.First(x => x.Name.Equals(locationId)); // Assert.AreEqual(0.25, location.MinimalCircleDepth, cTolerance); // is default from modelparameters Assert.AreEqual("segment_dijkring10_dwp04_1", location.Segment.Name); @@ -139,39 +139,40 @@ const string definitionFilename = @".\TestData\CSVData\Full1DProject\Import.defx"; dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); - string damImportFolder = Path.GetDirectoryName(definitionFilename); - List importLogMessages; + var damImportFolder = Path.GetDirectoryName(definitionFilename); IList dikeList = - WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Calamity, out importLogMessages).ToList(); - using (WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeList, DamProjectType.Calamity, null)) + WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Calamity, + out _).ToList(); + using (var waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, + dikeList, DamProjectType.Calamity, null)) { //WaterBoard waterBoard = WaterBoardImporter.ImportAllData(damImportFolder, dataSourceContainer, null); // Check Dike Assert.AreEqual(1, waterBoard.Dikes.Count); - Dike dike = waterBoard.Dikes[0]; + var dike = waterBoard.Dikes[0]; //Check locations Assert.AreEqual(2, dike.Locations.Count); // Check Soilprofiles Assert.AreEqual(23, dike.SoilProfiles.Count); - SoilProfile1D soilProfile = dike.SoilProfiles.First(x => x.Name.Equals("25_2_1_bz_4")); + var soilProfile = dike.SoilProfiles.First(x => x.Name.Equals("25_2_1_bz_4")); Assert.AreEqual("kade", soilProfile.Layers[0].Soil.Name); //Check Soils Assert.AreEqual(51, dike.SoilList.Soils.Count); - Soil soil = dike.SoilList.Soils[dike.SoilList.GetSoilIndexByName("kade")]; + var soil = dike.SoilList.Soils[dike.SoilList.GetSoilIndexByName("kade")]; Assert.AreEqual(17.0, soil.AbovePhreaticLevel, cTolerance); // Check Segments Assert.AreEqual(2, waterBoard.Segments.Count); - Segment segment = waterBoard.Segments.First(x => x.Name.Equals("106")); + var segment = waterBoard.Segments.First(x => x.Name.Equals("106")); Assert.AreEqual("25_2_1_bz_1", segment.SoilProfileProbabilities[0].SoilGeometryName); Assert.AreEqual(35.0, segment.SoilProfileProbabilities[0].Probability, cTolerance); - Assert.IsTrue(segment.SoilProfileProbabilities[0].SegmentFailureMechanismType.Equals(FailureMechanismSystemType.StabilityInside)); + Assert.IsTrue(segment.SoilProfileProbabilities[0].SegmentFailureMechanismType + .Equals(FailureMechanismSystemType.StabilityInside)); } } @@ -182,23 +183,25 @@ //const double cTolerance = 0.0001; const string definitionFilename = @".\TestData\CSVData\Full2DProject\Import.defx"; const string projectFilename = @".\TestData\TestWithGeometries2D.damx"; - using (DamProject damProject = new DamProject()) + using (var damProject = new DamProject()) { dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); - string damImportFolder = Path.GetDirectoryName(definitionFilename); - List importLogMessages; - IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Calamity, out importLogMessages).ToList(); - damProject.DamProjectData.WaterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeList, DamProjectType.Calamity, null); - damProject.AssignGeometry2DMapnameIfNotAssigned(Path.Combine(damImportFolder, dataSourceContainer.MapSoilProfile2D)); + var damImportFolder = Path.GetDirectoryName(definitionFilename); + IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, + DamProjectType.Calamity, out _).ToList(); + damProject.DamProjectData.WaterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, + dataSourceContainer, + dikeList, DamProjectType.Calamity, null); + damProject.AssignGeometry2DMapnameIfNotAssigned(Path.Combine(damImportFolder, + dataSourceContainer.MapSoilProfile2D)); // Save the data damProject.SaveXMLProject(projectFilename, damProject); // Check Dike Assert.AreEqual(1, damProject.DamProjectData.WaterBoard.Dikes.Count); - Dike dike = damProject.DamProjectData.WaterBoard.Dikes[0]; + var dike = damProject.DamProjectData.WaterBoard.Dikes[0]; //Check locations Assert.AreEqual(17, dike.Locations.Count); @@ -212,18 +215,18 @@ const string definitionFilename = @".\TestData\CSVData\DataWithoutPl3AndPl4\Import.defx"; dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); - string damImportFolder = Path.GetDirectoryName(definitionFilename); - List importLogMessages; + var damImportFolder = Path.GetDirectoryName(definitionFilename); IList dikeList = - WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Calamity, out importLogMessages).ToList(); - using (WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeList, DamProjectType.Calamity, null)) + WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Calamity, + out _).ToList(); + using (var waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, + dikeList, DamProjectType.Calamity, null)) { //WaterBoard waterBoard = WaterBoardImporter.ImportAllData(damImportFolder, dataSourceContainer, null); // Check Dike Assert.AreEqual(1, waterBoard.Dikes.Count); - Dike dike = waterBoard.Dikes[0]; + var dike = waterBoard.Dikes[0]; //Check locations Assert.AreEqual(2, dike.Locations.Count); @@ -238,64 +241,70 @@ const string definitionFilename = @".\TestData\CSVData\Full1DProject\Import relative soilprofiles.defx"; dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); - string damImportFolder = Path.GetDirectoryName(definitionFilename); - List importLogMessages; + var damImportFolder = Path.GetDirectoryName(definitionFilename); IList dikeList = - WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Calamity, out importLogMessages).ToList(); - using(WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeList, DamProjectType.Calamity, null)) - using (WaterBoard referenceWaterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeList, DamProjectType.Calamity, null)) + WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Calamity, + out _).ToList(); + using (var waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, + dikeList, DamProjectType.Calamity, null)) + using (var referenceWaterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, + dataSourceContainer, + dikeList, DamProjectType.Calamity, null)) { // If profiles are defined as relative profiles, new absolute profiles will be generated for each location if (dataSourceContainer.IsImportAsRelativeProfiles) - { - WaterBoardPostProcessRelativeProfiles.CreateAbsoluteProfiles(waterBoard, dataSourceContainer.SoilProfileCharacteristicPointReference); - } + WaterBoardPostProcessRelativeProfiles.CreateAbsoluteProfiles(waterBoard, + dataSourceContainer.SoilProfileCharacteristicPointReference); // Check Dike Assert.AreEqual(1, waterBoard.Dikes.Count); - Dike dike = waterBoard.Dikes[0]; + var dike = waterBoard.Dikes[0]; //Check locations Assert.AreEqual(2, dike.Locations.Count); // Check Soilprofiles - Assert.AreEqual(23, dike.SoilProfiles.Count); - SoilProfile1D soilProfile = dike.SoilProfiles.First(x => x.Name.Equals("25_2_1_bz_4")); + // Count is 43: 23 (imported) + 7 (generated for first location) + 13 (generated for second location) + Assert.AreEqual(43, dike.SoilProfiles.Count); + var soilProfile = dike.SoilProfiles.First(x => x.Name.Equals("25_2_1_bz_4")); Assert.AreEqual("kade", soilProfile.Layers[0].Soil.Name); Assert.AreEqual(60.0, soilProfile.TopLevel); // Check if all profiles are made absolute from relative foreach (var location in waterBoard.Locations) + foreach (var soilProfileProbability in location.Segment.SoilProfileProbabilities) { - foreach (var soilProfileProbability in location.Segment.SoilProfileProbabilities) - { - var dikeToeAtPolder = location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); - Assert.AreEqual(soilProfileProbability.SoilProfile.TopLevel, dikeToeAtPolder.Z, cTolerance); - } + var dikeToeAtPolder = + location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType + .DikeToeAtPolder); + Assert.AreEqual(soilProfileProbability.SoilProfile.TopLevel, dikeToeAtPolder.Z, cTolerance); } // Compare reference waterboard to converted waterboard foreach (var location in waterBoard.Locations) { - Location referenceLocation = referenceWaterBoard.Locations.Find(l => l.Name.Equals(location.Name)); - foreach (var soilProfileProbability in location.Segment.SoilProfileProbabilities) + var referenceLocation = referenceWaterBoard.Locations.Find(l => l.Name.Equals(location.Name)); + var soilProbabilityIndex = 0; + foreach (var referenceSoilProfileProbability in referenceLocation.Segment.SoilProfileProbabilities) { - SoilGeometryProbability referenceSoilProfileProbability = - referenceLocation.Segment.SoilProfileProbabilities.Find(s => s.SoilProfile.Name.Equals(soilProfileProbability.SoilProfile.Name)); - for (int layerIndex = 0; layerIndex < soilProfileProbability.SoilProfile.LayerCount; layerIndex++) - { + soilProbabilityIndex++; + var soilProfileProbability = + location.Segment.SoilProfileProbabilities.Find( + s => s.SoilProfile.Name.Equals(string.Format("{0}-{1}", location.Name, + soilProbabilityIndex))); + for (var layerIndex = 0; + layerIndex < soilProfileProbability.SoilProfile.LayerCount; + layerIndex++) Assert.AreEqual(referenceSoilProfileProbability.SoilProfile.Layers[layerIndex].Height, soilProfileProbability.SoilProfile.Layers[layerIndex].Height, cTolerance, - string.Format("Location {0} Segment {1} soilProfile {2} Layer {3} ({4}/{5}), Org ({6}/{7})", - location.Name, location.Segment.Name, soilProfileProbability.SoilProfile.Name, - soilProfileProbability.SoilProfile.Layers[layerIndex].ToString(), - soilProfileProbability.SoilProfile.Layers[layerIndex].TopLevel, - soilProfileProbability.SoilProfile.Layers[layerIndex].BottomLevel, - referenceSoilProfileProbability.SoilProfile.Layers[layerIndex].TopLevel, - referenceSoilProfileProbability.SoilProfile.Layers[layerIndex].BottomLevel)); - } + string.Format( + "Location {0} Segment {1} soilProfile {2} Layer {3} ({4}/{5}), Org ({6}/{7})", + location.Name, location.Segment.Name, soilProfileProbability.SoilProfile.Name, + soilProfileProbability.SoilProfile.Layers[layerIndex], + soilProfileProbability.SoilProfile.Layers[layerIndex].TopLevel, + soilProfileProbability.SoilProfile.Layers[layerIndex].BottomLevel, + referenceSoilProfileProbability.SoilProfile.Layers[layerIndex].TopLevel, + referenceSoilProfileProbability.SoilProfile.Layers[layerIndex].BottomLevel)); } } } @@ -309,16 +318,16 @@ const string definitionFilename = @".\TestData\CSVData\ProjectZoneType\Import.defx"; dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); - string damImportFolder = Path.GetDirectoryName(definitionFilename); - List importLogMessages; + var damImportFolder = Path.GetDirectoryName(definitionFilename); IList dikeList = - WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Calamity, out importLogMessages).ToList(); - using (WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeList, DamProjectType.Calamity, null)) + WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.Calamity, + out _).ToList(); + using (var waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, + dikeList, DamProjectType.Calamity, null)) { // Check Dike Assert.AreEqual(1, waterBoard.Dikes.Count); - Dike dike = waterBoard.Dikes[0]; + var dike = waterBoard.Dikes[0]; //Check locations Assert.AreEqual(2, dike.Locations.Count); @@ -329,4 +338,4 @@ } } } -} +} \ No newline at end of file