Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs =================================================================== diff -u -r2009 -r2017 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2009) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2017) @@ -21,6 +21,7 @@ using System.Collections.Generic; using System.IO; +using System.Linq; using NUnit.Framework; using Deltares.MacroStability.Kernel; using Deltares.DamEngine.Data.General; @@ -29,8 +30,12 @@ using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.TestHelpers.Factories; using Deltares.MacroStability.Data; +using Deltares.MacroStability.Geometry; using Deltares.MacroStability.Standard; using KellermanSoftware.CompareNetObjects; +using Soil = Deltares.MacroStability.Geometry.Soil; +using SoilProfile2D = Deltares.DamEngine.Data.Geotechnics.SoilProfile2D; +using SurfaceLine2 = Deltares.DamEngine.Data.Geotechnics.SurfaceLine2; namespace Deltares.DamEngine.Calculators.Tests.KernelWrappers.MacroStabilityCommon { @@ -59,18 +64,20 @@ } [Test] - [Category(Categories.WorkInProgress)] + [Category(Categories.WorkInProgress)] // The actual code has to be implemented public void GivenDamEngineDataModelWhenSerializingAndDeserializingTheDataModelsAreEqual() { // Given DamEngine data (DamProjectData) DamProjectData expectedDamProjectData = CreateExampleDamProjectData(); Location expectedLocation = expectedDamProjectData.Dike.Locations[0]; + SoilList expectedSoilList = expectedDamProjectData.Dike.SoilList; SoilProfile2D expectedSoilProfile2D = expectedLocation.Segment.SoilProfileProbabilities[0].SoilProfile2D; SurfaceLine2 expectedSurfaceLine2D = expectedLocation.SurfaceLine; FailureMechanismParametersMStab expectedParametersMStab = expectedDamProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismParametersMStab; FillWtiKernelData fillWtiKernelData = new FillWtiKernelData() { + SoilList = expectedSoilList, FailureMechanismParametersMStab = expectedParametersMStab, Location = expectedLocation, SoilProfile2D = expectedSoilProfile2D, @@ -89,10 +96,13 @@ // Then the data models are equal var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; - var result = compare.Compare(expectedLocation, fillDamEngineFromWti.Location); - Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel Location"); + ComparisonResult result; result = compare.Compare(expectedSoilProfile2D, fillDamEngineFromWti.SoilProfile2D); Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilProfile2D"); + result = compare.Compare(expectedSoilList, fillDamEngineFromWti.SoilList); + Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilList"); + result = compare.Compare(expectedLocation, fillDamEngineFromWti.Location); + Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel Location"); result = compare.Compare(expectedSurfaceLine2D, fillDamEngineFromWti.SurfaceLine2); Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SurfaceLine2"); result = compare.Compare(expectedParametersMStab, fillDamEngineFromWti.FailureMechanismParametersMStab); @@ -102,7 +112,6 @@ [TestCase("Benchmark 1-01b.wti")] [TestCase("Benchmark 2-04a.wti")] - //[Category(Categories.WorkInProgress)] public void GivenWtiFileWhenFillingToDamEngineDataAndWritingBackToKernelDataThenTheKernelModelsAreEqual(string fileNameIn) { // Given Wti file @@ -117,6 +126,7 @@ // And writing back to kernel data FillWtiKernelData fillWtiKernelData = new FillWtiKernelData() { + SoilList = fillDamEngineFromWti.SoilList, FailureMechanismParametersMStab = fillDamEngineFromWti.FailureMechanismParametersMStab, Location = fillDamEngineFromWti.Location, SoilProfile2D = fillDamEngineFromWti.SoilProfile2D, @@ -130,19 +140,47 @@ // Then the kernel models are equal CompareStabilityModel(expectedKernelModel.StabilityModel, actualKernelModel.StabilityModel); - return; + CompareSoilModel(expectedKernelModel.StabilityModel.SoilModel, actualKernelModel.StabilityModel.SoilModel); + CompareSoilProfile2D(expectedKernelModel.StabilityModel.SoilProfile, actualKernelModel.StabilityModel.SoilProfile); + } - //Enable asserts when code is implemented + private void CompareSoilProfile2D(MacroStability.Geometry.SoilProfile2D expectedSoilProfile, MacroStability.Geometry.SoilProfile2D actualSoilProfile) + { var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; compare.Config.MembersToIgnore = new List { + "StrengthIncreaseExponent", + "RRatio", + "RheologicalCoefficient", + "BondStressCurve", + "UseSoilType" }; - var result = compare.Compare(expectedKernelModel.StabilityModel.SoilModel, actualKernelModel.StabilityModel.SoilModel); - Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilModel"); - result = compare.Compare(expectedKernelModel.StabilityModel.SoilProfile, actualKernelModel.StabilityModel.SoilProfile); - Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilProfile"); + var result = compare.Compare(expectedSoilProfile, actualSoilProfile); + Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilProfile2D"); } + + private void CompareSoilModel(SoilModel expectedSoilModel, SoilModel actualSoilModel) + { + Assert.AreEqual(expectedSoilModel.Soils.Count, actualSoilModel.Soils.Count, "Soil Count does not match"); + foreach (Soil expectedSoil in expectedSoilModel.Soils) + { + var actualSoil = actualSoilModel.Soils.First(soil => soil.Name.Equals(expectedSoil.Name)); + Assert.IsNotNull(actualSoil, string.Format("Soil {0} not found", expectedSoil.Name)); + var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; + compare.Config.MembersToIgnore = new List + { + "StrengthIncreaseExponent", + "RRatio", + "RheologicalCoefficient", + "BondStressCurve", + "UseSoilType" + }; + var result = compare.Compare(expectedSoil, actualSoil); + Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilProfile"); + } + } + private void CompareStabilityModel(StabilityModel expectedStabilityModel, StabilityModel actualStabilityModel) { Assert.AreEqual(expectedStabilityModel.SearchAlgorithm, actualStabilityModel.SearchAlgorithm);