Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillXmlOutputFromDamTests.cs =================================================================== diff -u -r4015 -r4052 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillXmlOutputFromDamTests.cs (.../FillXmlOutputFromDamTests.cs) (revision 4015) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillXmlOutputFromDamTests.cs (.../FillXmlOutputFromDamTests.cs) (revision 4052) @@ -36,509 +36,508 @@ using TimeSerie = Deltares.DamEngine.Data.General.TimeSeries.TimeSerie; using UpliftSituation = Deltares.DamEngine.Data.General.UpliftSituation; -namespace Deltares.DamEngine.Interface.Tests +namespace Deltares.DamEngine.Interface.Tests; + +[TestFixture] +public class FillXmlOutputFromDamTests { - [TestFixture] - public class FillXmlOutputFromDamTests + [Test] + public void CanWriteAndReadDamProjectDataToXml() { - [Test] - public void CanWriteAndReadDamProjectDataToXml() - { - const string outputFilename = "OutputFile.xml"; - DamProjectData expectedDamProjectData = CreateExampleDamProjectData(); - Output output = FillXmlOutputFromDam.CreateOutput(expectedDamProjectData); - DamXmlSerialization.SaveOutputAsXmlFile(outputFilename, output); - output = DamXmlSerialization.LoadOutputFromXmlFile(outputFilename); - DamProjectData inputData = CreateExampleDamProjectData(); - DamProjectData actualDamProjectData = FillDamFromXmlOutput.CreateDamProjectData(inputData, output); - CompareDamProjectData(actualDamProjectData, expectedDamProjectData); - } + const string outputFilename = "OutputFile.xml"; + DamProjectData expectedDamProjectData = CreateExampleDamProjectData(); + Output output = FillXmlOutputFromDam.CreateOutput(expectedDamProjectData); + DamXmlSerialization.SaveOutputAsXmlFile(outputFilename, output); + output = DamXmlSerialization.LoadOutputFromXmlFile(outputFilename); + DamProjectData inputData = CreateExampleDamProjectData(); + DamProjectData actualDamProjectData = FillDamFromXmlOutput.CreateDamProjectData(inputData, output); + CompareDamProjectData(actualDamProjectData, expectedDamProjectData); + } - [Test] - public void CanWriteAndReadDamProjectDataToXmlString() - { - DamProjectData expectedDamProjectData = CreateExampleDamProjectData(); - Output output = FillXmlOutputFromDam.CreateOutput(expectedDamProjectData); - string xmlString = DamXmlSerialization.SaveOutputAsXmlString(output); - output = DamXmlSerialization.LoadOutputFromXmlString(xmlString); - DamProjectData inputData = CreateExampleDamProjectData(); - DamProjectData actualDamProjectData = FillDamFromXmlOutput.CreateDamProjectData(inputData, output); - CompareDamProjectData(actualDamProjectData, expectedDamProjectData); - } + [Test] + public void CanWriteAndReadDamProjectDataToXmlString() + { + DamProjectData expectedDamProjectData = CreateExampleDamProjectData(); + Output output = FillXmlOutputFromDam.CreateOutput(expectedDamProjectData); + string xmlString = DamXmlSerialization.SaveOutputAsXmlString(output); + output = DamXmlSerialization.LoadOutputFromXmlString(xmlString); + DamProjectData inputData = CreateExampleDamProjectData(); + DamProjectData actualDamProjectData = FillDamFromXmlOutput.CreateDamProjectData(inputData, output); + CompareDamProjectData(actualDamProjectData, expectedDamProjectData); + } - [Test] - public void CreateOutput_DamProjectDataWithStabilityDesignResults_CreatesOutputWithStabilityResults() + [Test] + public void CreateOutput_DamProjectDataWithStabilityDesignResults_CreatesOutputWithStabilityResults() + { + // Setup + var random = new Random(21); + var project = new DamProjectData { - // Setup - var random = new Random(21); - var project = new DamProjectData + CalculationMessages = new List(), + DesignCalculations = new List { - CalculationMessages = new List(), - DesignCalculations = new List - { - CreateStabilityDesignResults(random.Next()), - CreateStabilityDesignResults(random.Next()), - CreateStabilityDesignResults(random.Next()), - CreateStabilityDesignResults(random.Next()) - } - }; - - // Call - Output output = FillXmlOutputFromDam.CreateOutput(project); - - // Assert - Io.XmlOutput.DesignResult[] calculationResults = output.Results.CalculationResults; - int expectedNrOfCalculationResults = project.DesignCalculations.Count; - Assert.AreEqual(expectedNrOfCalculationResults, calculationResults.Length); - - for (var i = 0; i < expectedNrOfCalculationResults; i++) - { - AssertStabilityDesignResults(project.DesignCalculations[i].StabilityDesignResults, - calculationResults[i].StabilityDesignResults); + CreateStabilityDesignResults(random.Next()), + CreateStabilityDesignResults(random.Next()), + CreateStabilityDesignResults(random.Next()), + CreateStabilityDesignResults(random.Next()) } - } + }; - private DamProjectData CreateExampleDamProjectData() - { - const int designResultsCount = 3; - const int locationResultsCount = 2; - var damProjectData = new DamProjectData - { - DesignCalculations = new List() - }; - for (var i = 0; i < designResultsCount; i++) - { - var result = new DesignResult("location " + i, "Scenario " + (i * 2)) - { - BaseFileName = "my basefilename " + i, - CalculationSubDir = "CalcSubDir", - ProfileName = "profile" + i - }; - result.CalculationResult = CalculationResult.RunFailed; - // Note : as Wti2017BackwardErosionHcritical is in use in this test, the modeltype MUST be Wti2017. - result.PipingDesignResults = new PipingDesignResults(PipingModelType.Wti2017) - { - ResultMessage = "no run made", - UpliftFactor = 1.3 * i, - HeaveFactor = 1.1 * i, - BlighFactor = 1.03 * i, - BlighHcritical = 0.4, - LocalExitPointX = 34.21, - Wti2017UpliftDeltaPhiC = 1.09 * i, - EffectiveStress = 13.23 * i, - Wti2017UpliftHcritical = 1.19 * i, - Wti2017BackwardErosionHcritical = 1.29 * i, - Wti2017BackwardErosionDeltaPhiC = 1.34 * i, - Wti2017BackwardErosionDeltaPhiReduced = 1.27 * i, - Wti2017HeaveHcritical = 1.24 * i, - Wti2017BackwardErosionSafetyFactor = 1.39 * i, - Wti2017UpliftSafetyFactor = 1.49 * i, - Wti2017HeaveSafetyFactor = 1.59 * i, - Wti2017Gradient = 1.69 * i, - Wti2017HcriticalOverall = 1.79 * i, - Wti2017SafetyFactorOverall = 3.21 * i, - CCreep = 234.1 * i - }; - var situation = new UpliftSituation - { - IsUplift = true, - Pl3MinUplift = 0.1, - Pl3HeadAdjusted = 0.2, - Pl3LocationXMinUplift = 0.3, - Pl4MinUplift = 0.1 * i, - Pl4HeadAdjusted = 0.2 * i, - Pl4LocationXMinUplift = 0.3 * i - }; - var surfaceline = new SurfaceLine2(); - surfaceline.Name = "Redesigned Surfaceline"; - surfaceline.CharacteristicPoints.Geometry = surfaceline.Geometry; - var p1 = new CharacteristicPoint - { - CharacteristicPointType = CharacteristicPointType.SurfaceLevelOutside, - GeometryPoint = new GeometryPoint(), - X = 0, - Z = 0 - }; - surfaceline.CharacteristicPoints.Add(p1); - var p2 = new CharacteristicPoint - { - CharacteristicPointType = CharacteristicPointType.DikeToeAtRiver, - GeometryPoint = new GeometryPoint(), - X = 10, - Z = 0 - }; - surfaceline.CharacteristicPoints.Add(p2); - var p3 = new CharacteristicPoint - { - CharacteristicPointType = CharacteristicPointType.DikeTopAtRiver, - GeometryPoint = new GeometryPoint(), - X = 15, - Z = 2 - }; - surfaceline.CharacteristicPoints.Add(p3); - var p4 = new CharacteristicPoint - { - CharacteristicPointType = CharacteristicPointType.DikeTopAtPolder, - GeometryPoint = new GeometryPoint(), - X = 18, - Z = 2 - }; - surfaceline.CharacteristicPoints.Add(p4); - var p5 = new CharacteristicPoint - { - CharacteristicPointType = CharacteristicPointType.DikeToeAtPolder, - GeometryPoint = new GeometryPoint(), - X = 23, - Z = 0 - }; - surfaceline.CharacteristicPoints.Add(p5); - var p6 = new CharacteristicPoint - { - CharacteristicPointType = CharacteristicPointType.SurfaceLevelInside, - GeometryPoint = new GeometryPoint(), - X = 100, - Z = 0 - }; - surfaceline.CharacteristicPoints.Add(p6); - result.PipingDesignResults.RedesignedSurfaceLine = surfaceline; - result.PipingDesignResults.UpliftSituation = situation; + // Call + Output output = FillXmlOutputFromDam.CreateOutput(project); - var stabilityMStabModelTypes = new[] - { - MStabModelType.Bishop, - MStabModelType.UpliftVan, - MStabModelType.BishopUpliftVan - }; + // Assert + Io.XmlOutput.DesignResult[] calculationResults = output.Results.CalculationResults; + int expectedNrOfCalculationResults = project.DesignCalculations.Count; + Assert.AreEqual(expectedNrOfCalculationResults, calculationResults.Length); - result.StabilityDesignResults = new StabilityDesignResults - { - ResultMessage = "no problemo", - SafetyFactor = (i + 1) * 0.66, - NumberOfIterations = (i + 1) * 3, - UpliftSituation = situation, - RedesignedSurfaceLine = surfaceline, - StabilityModelType = stabilityMStabModelTypes[i] - }; - CreateSlipCircleResults(result.StabilityDesignResults); - damProjectData.DesignCalculations.Add(result); - } - - damProjectData.Dike = new Dike(); - for (var i = 0; i < locationResultsCount; i++) - { - var location = new Location(); - location.Name = "A" + (i + 1); - location.DistanceToEntryPoint = 0.2 * i + 0.56; - location.Segment = new Segment(); - var soilGeometryProbability = new SoilGeometryProbability(); - soilGeometryProbability.SoilProfile1D = new SoilProfile1D(); - soilGeometryProbability.SoilProfile1DName = soilGeometryProbability.SoilProfile1D.Name; - location.Segment.SoilProfileProbabilities.Add(soilGeometryProbability); - damProjectData.Dike.Locations.Add(location); - } - - damProjectData.CalculationMessages = new List(); - damProjectData.CalculationMessages.Add(new LogMessage(LogMessageType.Error, null, "Error 1")); - damProjectData.CalculationMessages.Add(new LogMessage(LogMessageType.Error, null, "Error 2")); - damProjectData.CalculationMessages.Add(new LogMessage(LogMessageType.Warning, null, "Warning 1")); - - FillOutputTimeSeries(damProjectData); - return damProjectData; - } - - private void CreateSlipCircleResults(StabilityDesignResults stabilityDesignResults) + for (var i = 0; i < expectedNrOfCalculationResults; i++) { - switch (stabilityDesignResults.StabilityModelType) - { - case MStabModelType.Bishop: - stabilityDesignResults.ActiveCenterPoint = new Point2D - { - X = 100, - Z = -10 - }; - stabilityDesignResults.ActiveCenterPointRadius = 50; - break; - case MStabModelType.UpliftVan: - stabilityDesignResults.ActiveCenterPoint = new Point2D - { - X = 100, - Z = -10 - }; - stabilityDesignResults.ActiveCenterPointRadius = 50; - stabilityDesignResults.PassiveCenterPoint = new Point2D - { - X = 101, - Z = -11 - }; - stabilityDesignResults.PassiveCenterPointRadius = 51; - break; - } - - if (stabilityDesignResults.StabilityModelType == MStabModelType.Bishop || - stabilityDesignResults.StabilityModelType == MStabModelType.UpliftVan) - { - stabilityDesignResults.ResultSlices = new List(); - for (var i = 0; i < 9; i++) - { - var slice = new StabilityResultSlice(); - slice.TopLeftPoint = new Point2D(i + 1.3, i + 2.3); - slice.TopRightPoint = new Point2D(i + 12.3, i + 22.3); - slice.BottomLeftPoint = new Point2D(i - 1.3, i - 2.3); - slice.BottomRightPoint = new Point2D(i - 12.3, i - 22.3); - stabilityDesignResults.ResultSlices.Add(slice); - } - } + AssertStabilityDesignResults(project.DesignCalculations[i].StabilityDesignResults, + calculationResults[i].StabilityDesignResults); } + } - private void FillOutputTimeSeries(DamProjectData damProjectData) + private DamProjectData CreateExampleDamProjectData() + { + const int designResultsCount = 3; + const int locationResultsCount = 2; + var damProjectData = new DamProjectData { - const int timeSeriesCount = 2; - const int timeEntriesCount = 3; - const string idPipingBligh = "PipingFactorBligh"; - const string idStabilityInsideFactor = "StabilityInsideFactor"; - damProjectData.OutputTimeSerieCollection = new TimeSerieCollection(); - for (var i = 0; i < timeSeriesCount; i++) - { - string locationId = String.Format("location{0}", i); - TimeSerie timeSerie = damProjectData.OutputTimeSerieCollection.AddNewSeries(locationId); - timeSerie.ParameterId = (i % 2 == 0) ? idPipingBligh : idStabilityInsideFactor; - timeSerie.ForecastDateTime = DateTime.Now; - timeSerie.Type = "instantaneous"; - timeSerie.StartDateTime = new DateTime(2012, 12, 31); - timeSerie.EndDateTime = new DateTime(2012, 12, 31, 1, 0, 0); - timeSerie.MissVal = -9999.0; - timeSerie.LongName = timeSerie.LocationId + "long"; - timeSerie.StationName = String.Format("station{0}", i); - timeSerie.Units = "m"; - timeSerie.SourceOrganisation = String.Format("organisation{0}", i); - timeSerie.SourceSystem = String.Format("system{0}", i); - timeSerie.FileDescription = String.Format("filedescription{0}", i); - timeSerie.Region = String.Format("region{0}", i); - timeSerie.TimeStep.Multiplier = 3600; - timeSerie.TimeStep.Unit = TimeStepUnit.Second; - for (var j = 0; j < timeEntriesCount; j++) - { - timeSerie.Entries.Add(new TimeSerieEntry - { - DateTime = new DateTime(2012, 12, 31, 1, j * 10, 0), - Value = 1 + j * 0.1, - Flag = 1, - BasisFileName = String.Format("BasisFileName{0}", i) - }); - } - } - } - - private static DesignResult CreateStabilityDesignResults(int seed) + DesignCalculations = new List() + }; + for (var i = 0; i < designResultsCount; i++) { - var random = new Random(seed); - - var supportedModelTypeValues = new[] + var result = new DesignResult("location " + i, "Scenario " + (i * 2)) { - MStabModelType.Bishop, - MStabModelType.UpliftVan, - MStabModelType.BishopUpliftVan + BaseFileName = "my basefilename " + i, + CalculationSubDir = "CalcSubDir", + ProfileName = "profile" + i }; - var stabilityDesignResults = new StabilityDesignResults + result.CalculationResult = CalculationResult.RunFailed; + // Note : as Wti2017BackwardErosionHcritical is in use in this test, the modeltype MUST be Wti2017. + result.PipingDesignResults = new PipingDesignResults(PipingModelType.Wti2017) { - ResultMessage = "ResultMessage", - SafetyFactor = random.Next(0, 2) == 1 ? random.NextDouble() : null, - NumberOfIterations = random.Next(0, 2) == 1 ? random.Next() : null, - UpliftSituation = random.Next(0, 2) == 1 ? CreateUpliftSituation(seed) : null, - StabilityModelType = random.Next(0, 2) == 1 - ? supportedModelTypeValues[random.Next(supportedModelTypeValues.Length - 1)] - : null, - RedesignedSurfaceLine = random.Next(0, 2) == 1 ? CreateSurfaceLine(seed) : null, - ActiveCenterPoint = CreatePoint2D(seed), - ActiveCenterPointRadius = random.NextDouble(), - PassiveCenterPoint = CreatePoint2D(seed), - PassiveCenterPointRadius = random.NextDouble() + ResultMessage = "no run made", + UpliftFactor = 1.3 * i, + HeaveFactor = 1.1 * i, + BlighFactor = 1.03 * i, + BlighHcritical = 0.4, + LocalExitPointX = 34.21, + Wti2017UpliftDeltaPhiC = 1.09 * i, + EffectiveStress = 13.23 * i, + Wti2017UpliftHcritical = 1.19 * i, + Wti2017BackwardErosionHcritical = 1.29 * i, + Wti2017BackwardErosionDeltaPhiC = 1.34 * i, + Wti2017BackwardErosionDeltaPhiReduced = 1.27 * i, + Wti2017HeaveHcritical = 1.24 * i, + Wti2017BackwardErosionSafetyFactor = 1.39 * i, + Wti2017UpliftSafetyFactor = 1.49 * i, + Wti2017HeaveSafetyFactor = 1.59 * i, + Wti2017Gradient = 1.69 * i, + Wti2017HcriticalOverall = 1.79 * i, + Wti2017SafetyFactorOverall = 3.21 * i, + CCreep = 234.1 * i }; - - return new DesignResult + var situation = new UpliftSituation { - StabilityDesignResults = stabilityDesignResults - }; - } - - private static UpliftSituation CreateUpliftSituation(int seed) - { - var random = new Random(seed); - return new UpliftSituation - { IsUplift = true, - Pl3MinUplift = random.NextDouble(), - Pl3HeadAdjusted = random.NextDouble(), - Pl3LocationXMinUplift = random.NextDouble(), - Pl4MinUplift = random.NextDouble(), - Pl4HeadAdjusted = random.NextDouble(), - Pl4LocationXMinUplift = random.NextDouble() + Pl3MinUplift = 0.1, + Pl3HeadAdjusted = 0.2, + Pl3LocationXMinUplift = 0.3, + Pl4MinUplift = 0.1 * i, + Pl4HeadAdjusted = 0.2 * i, + Pl4LocationXMinUplift = 0.3 * i }; - } - - private static SurfaceLine2 CreateSurfaceLine(int seed) - { - var random = new Random(seed); - var surfaceLine = new SurfaceLine2 + var surfaceline = new SurfaceLine2(); + surfaceline.Name = "Redesigned Surfaceline"; + surfaceline.CharacteristicPoints.Geometry = surfaceline.Geometry; + var p1 = new CharacteristicPoint { - Name = "Redesigned Surfaceline" - }; - - surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint - { CharacteristicPointType = CharacteristicPointType.SurfaceLevelOutside, GeometryPoint = new GeometryPoint(), - X = random.NextDouble(), - Z = random.NextDouble() - }); - surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint + X = 0, + Z = 0 + }; + surfaceline.CharacteristicPoints.Add(p1); + var p2 = new CharacteristicPoint { CharacteristicPointType = CharacteristicPointType.DikeToeAtRiver, GeometryPoint = new GeometryPoint(), - X = random.NextDouble(), - Z = random.NextDouble() - }); - surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint + X = 10, + Z = 0 + }; + surfaceline.CharacteristicPoints.Add(p2); + var p3 = new CharacteristicPoint { CharacteristicPointType = CharacteristicPointType.DikeTopAtRiver, GeometryPoint = new GeometryPoint(), - X = random.NextDouble(), - Z = random.NextDouble() - }); - surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint + X = 15, + Z = 2 + }; + surfaceline.CharacteristicPoints.Add(p3); + var p4 = new CharacteristicPoint { CharacteristicPointType = CharacteristicPointType.DikeTopAtPolder, GeometryPoint = new GeometryPoint(), - X = random.NextDouble(), - Z = random.NextDouble() - }); - surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint + X = 18, + Z = 2 + }; + surfaceline.CharacteristicPoints.Add(p4); + var p5 = new CharacteristicPoint { CharacteristicPointType = CharacteristicPointType.DikeToeAtPolder, GeometryPoint = new GeometryPoint(), - X = random.NextDouble(), - Z = random.NextDouble() - }); - surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint + X = 23, + Z = 0 + }; + surfaceline.CharacteristicPoints.Add(p5); + var p6 = new CharacteristicPoint { CharacteristicPointType = CharacteristicPointType.SurfaceLevelInside, GeometryPoint = new GeometryPoint(), - X = random.NextDouble(), - Z = random.NextDouble() - }); + X = 100, + Z = 0 + }; + surfaceline.CharacteristicPoints.Add(p6); + result.PipingDesignResults.RedesignedSurfaceLine = surfaceline; + result.PipingDesignResults.UpliftSituation = situation; - return surfaceLine; - } + var stabilityMStabModelTypes = new[] + { + MStabModelType.Bishop, + MStabModelType.UpliftVan, + MStabModelType.BishopUpliftVan + }; - private static Point2D CreatePoint2D(int seed) - { - var random = new Random(seed); - return new Point2D + result.StabilityDesignResults = new StabilityDesignResults { - X = random.NextDouble(), - Z = random.NextDouble() + ResultMessage = "no problemo", + SafetyFactor = (i + 1) * 0.66, + NumberOfIterations = (i + 1) * 3, + UpliftSituation = situation, + RedesignedSurfaceLine = surfaceline, + StabilityModelType = stabilityMStabModelTypes[i] }; + CreateSlipCircleResults(result.StabilityDesignResults); + damProjectData.DesignCalculations.Add(result); } - private static DesignResultStabilityDesignResultsStabilityModelType? Convert(MStabModelType? stabilityModelType) + damProjectData.Dike = new Dike(); + for (var i = 0; i < locationResultsCount; i++) { - if (stabilityModelType.HasValue) + var location = new Location(); + location.Name = "A" + (i + 1); + location.DistanceToEntryPoint = 0.2 * i + 0.56; + location.Segment = new Segment(); + var soilGeometryProbability = new SoilGeometryProbability(); + soilGeometryProbability.SoilProfile1D = new SoilProfile1D(); + soilGeometryProbability.SoilProfile1DName = soilGeometryProbability.SoilProfile1D.Name; + location.Segment.SoilProfileProbabilities.Add(soilGeometryProbability); + damProjectData.Dike.Locations.Add(location); + } + + damProjectData.CalculationMessages = new List(); + damProjectData.CalculationMessages.Add(new LogMessage(LogMessageType.Error, null, "Error 1")); + damProjectData.CalculationMessages.Add(new LogMessage(LogMessageType.Error, null, "Error 2")); + damProjectData.CalculationMessages.Add(new LogMessage(LogMessageType.Warning, null, "Warning 1")); + + FillOutputTimeSeries(damProjectData); + return damProjectData; + } + + private void CreateSlipCircleResults(StabilityDesignResults stabilityDesignResults) + { + switch (stabilityDesignResults.StabilityModelType) + { + case MStabModelType.Bishop: + stabilityDesignResults.ActiveCenterPoint = new Point2D + { + X = 100, + Z = -10 + }; + stabilityDesignResults.ActiveCenterPointRadius = 50; + break; + case MStabModelType.UpliftVan: + stabilityDesignResults.ActiveCenterPoint = new Point2D + { + X = 100, + Z = -10 + }; + stabilityDesignResults.ActiveCenterPointRadius = 50; + stabilityDesignResults.PassiveCenterPoint = new Point2D + { + X = 101, + Z = -11 + }; + stabilityDesignResults.PassiveCenterPointRadius = 51; + break; + } + + if (stabilityDesignResults.StabilityModelType == MStabModelType.Bishop || + stabilityDesignResults.StabilityModelType == MStabModelType.UpliftVan) + { + stabilityDesignResults.ResultSlices = new List(); + for (var i = 0; i < 9; i++) { - return ConversionHelper.ConvertToOutputStabilityModelType(stabilityModelType.Value); + var slice = new StabilityResultSlice(); + slice.TopLeftPoint = new Point2D(i + 1.3, i + 2.3); + slice.TopRightPoint = new Point2D(i + 12.3, i + 22.3); + slice.BottomLeftPoint = new Point2D(i - 1.3, i - 2.3); + slice.BottomRightPoint = new Point2D(i - 12.3, i - 22.3); + stabilityDesignResults.ResultSlices.Add(slice); } + } + } - throw new NotSupportedException(); + private void FillOutputTimeSeries(DamProjectData damProjectData) + { + const int timeSeriesCount = 2; + const int timeEntriesCount = 3; + const string idPipingBligh = "PipingFactorBligh"; + const string idStabilityInsideFactor = "StabilityInsideFactor"; + damProjectData.OutputTimeSerieCollection = new TimeSerieCollection(); + for (var i = 0; i < timeSeriesCount; i++) + { + string locationId = String.Format("location{0}", i); + TimeSerie timeSerie = damProjectData.OutputTimeSerieCollection.AddNewSeries(locationId); + timeSerie.ParameterId = (i % 2 == 0) ? idPipingBligh : idStabilityInsideFactor; + timeSerie.ForecastDateTime = DateTime.Now; + timeSerie.Type = "instantaneous"; + timeSerie.StartDateTime = new DateTime(2012, 12, 31); + timeSerie.EndDateTime = new DateTime(2012, 12, 31, 1, 0, 0); + timeSerie.MissVal = -9999.0; + timeSerie.LongName = timeSerie.LocationId + "long"; + timeSerie.StationName = String.Format("station{0}", i); + timeSerie.Units = "m"; + timeSerie.SourceOrganisation = String.Format("organisation{0}", i); + timeSerie.SourceSystem = String.Format("system{0}", i); + timeSerie.FileDescription = String.Format("filedescription{0}", i); + timeSerie.Region = String.Format("region{0}", i); + timeSerie.TimeStep.Multiplier = 3600; + timeSerie.TimeStep.Unit = TimeStepUnit.Second; + for (var j = 0; j < timeEntriesCount; j++) + { + timeSerie.Entries.Add(new TimeSerieEntry + { + DateTime = new DateTime(2012, 12, 31, 1, j * 10, 0), + Value = 1 + j * 0.1, + Flag = 1, + BasisFileName = String.Format("BasisFileName{0}", i) + }); + } } + } - private static void AssertStabilityDesignResults(StabilityDesignResults expected, - DesignResultStabilityDesignResults actual) + private static DesignResult CreateStabilityDesignResults(int seed) + { + var random = new Random(seed); + + var supportedModelTypeValues = new[] { - Assert.AreEqual(expected.ResultMessage, actual.ResultMessage); - AssertUpliftSituation(expected.UpliftSituation, actual.UpliftSituation); + MStabModelType.Bishop, + MStabModelType.UpliftVan, + MStabModelType.BishopUpliftVan + }; + var stabilityDesignResults = new StabilityDesignResults + { + ResultMessage = "ResultMessage", + SafetyFactor = random.Next(0, 2) == 1 ? random.NextDouble() : null, + NumberOfIterations = random.Next(0, 2) == 1 ? random.Next() : null, + UpliftSituation = random.Next(0, 2) == 1 ? CreateUpliftSituation(seed) : null, + StabilityModelType = random.Next(0, 2) == 1 + ? supportedModelTypeValues[random.Next(supportedModelTypeValues.Length - 1)] + : null, + RedesignedSurfaceLine = random.Next(0, 2) == 1 ? CreateSurfaceLine(seed) : null, + ActiveCenterPoint = CreatePoint2D(seed), + ActiveCenterPointRadius = random.NextDouble(), + PassiveCenterPoint = CreatePoint2D(seed), + PassiveCenterPointRadius = random.NextDouble() + }; - bool safetyFactorHasValue = expected.SafetyFactor.HasValue; - Assert.AreEqual(safetyFactorHasValue, actual.SafetyFactorSpecified); - Assert.AreEqual(safetyFactorHasValue ? expected.SafetyFactor : 0, actual.SafetyFactor); + return new DesignResult + { + StabilityDesignResults = stabilityDesignResults + }; + } - bool numberOfIterationsHasValue = expected.NumberOfIterations.HasValue; - Assert.AreEqual(numberOfIterationsHasValue, actual.NumberOfIterationsSpecified); - Assert.AreEqual(numberOfIterationsHasValue ? expected.NumberOfIterations : 0, actual.NumberOfIterations); + private static UpliftSituation CreateUpliftSituation(int seed) + { + var random = new Random(seed); + return new UpliftSituation + { + IsUplift = true, + Pl3MinUplift = random.NextDouble(), + Pl3HeadAdjusted = random.NextDouble(), + Pl3LocationXMinUplift = random.NextDouble(), + Pl4MinUplift = random.NextDouble(), + Pl4HeadAdjusted = random.NextDouble(), + Pl4LocationXMinUplift = random.NextDouble() + }; + } - bool mStabModelTypeHasValue = expected.StabilityModelType.HasValue; - Assert.AreEqual(mStabModelTypeHasValue, actual.StabilityModelTypeSpecified); - DesignResultStabilityDesignResultsStabilityModelType? expectedModelType = mStabModelTypeHasValue - ? Convert(expected.StabilityModelType) - : DesignResultStabilityDesignResultsStabilityModelType.Bishop; - Assert.AreEqual(expectedModelType, actual.StabilityModelType); + private static SurfaceLine2 CreateSurfaceLine(int seed) + { + var random = new Random(seed); + var surfaceLine = new SurfaceLine2 + { + Name = "Redesigned Surfaceline" + }; - AssertSurfaceLine(expected.RedesignedSurfaceLine, actual.RedesignedSurfaceLine); - } + surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint + { + CharacteristicPointType = CharacteristicPointType.SurfaceLevelOutside, + GeometryPoint = new GeometryPoint(), + X = random.NextDouble(), + Z = random.NextDouble() + }); + surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint + { + CharacteristicPointType = CharacteristicPointType.DikeToeAtRiver, + GeometryPoint = new GeometryPoint(), + X = random.NextDouble(), + Z = random.NextDouble() + }); + surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint + { + CharacteristicPointType = CharacteristicPointType.DikeTopAtRiver, + GeometryPoint = new GeometryPoint(), + X = random.NextDouble(), + Z = random.NextDouble() + }); + surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint + { + CharacteristicPointType = CharacteristicPointType.DikeTopAtPolder, + GeometryPoint = new GeometryPoint(), + X = random.NextDouble(), + Z = random.NextDouble() + }); + surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint + { + CharacteristicPointType = CharacteristicPointType.DikeToeAtPolder, + GeometryPoint = new GeometryPoint(), + X = random.NextDouble(), + Z = random.NextDouble() + }); + surfaceLine.CharacteristicPoints.Add(new CharacteristicPoint + { + CharacteristicPointType = CharacteristicPointType.SurfaceLevelInside, + GeometryPoint = new GeometryPoint(), + X = random.NextDouble(), + Z = random.NextDouble() + }); - private static void AssertUpliftSituation(UpliftSituation? expected, Io.XmlOutput.UpliftSituation actual) + return surfaceLine; + } + + private static Point2D CreatePoint2D(int seed) + { + var random = new Random(seed); + return new Point2D { - if (!expected.HasValue) - { - Assert.IsNull(actual); - return; - } + X = random.NextDouble(), + Z = random.NextDouble() + }; + } - Assert.AreEqual(expected.Value.IsUplift, actual.IsUplift); - Assert.AreEqual(expected.Value.Pl3MinUplift, actual.Pl3MinUplift); - Assert.AreEqual(expected.Value.Pl3HeadAdjusted, actual.Pl3HeadAdjusted); - Assert.AreEqual(expected.Value.Pl3LocationXMinUplift, actual.Pl3LocationXMinUplift); - Assert.AreEqual(expected.Value.Pl4MinUplift, actual.Pl4MinUplift); - Assert.AreEqual(expected.Value.Pl4HeadAdjusted, actual.Pl4HeadAdjusted); - Assert.AreEqual(expected.Value.Pl4LocationXMinUplift, actual.Pl4LocationXMinUplift); + private static DesignResultStabilityDesignResultsStabilityModelType? Convert(MStabModelType? stabilityModelType) + { + if (stabilityModelType.HasValue) + { + return ConversionHelper.ConvertToOutputStabilityModelType(stabilityModelType.Value); } - private static void AssertSurfaceLine(SurfaceLine2 expected, SurfaceLine actual) + throw new NotSupportedException(); + } + + private static void AssertStabilityDesignResults(StabilityDesignResults expected, + DesignResultStabilityDesignResults actual) + { + Assert.AreEqual(expected.ResultMessage, actual.ResultMessage); + AssertUpliftSituation(expected.UpliftSituation, actual.UpliftSituation); + + bool safetyFactorHasValue = expected.SafetyFactor.HasValue; + Assert.AreEqual(safetyFactorHasValue, actual.SafetyFactorSpecified); + Assert.AreEqual(safetyFactorHasValue ? expected.SafetyFactor : 0, actual.SafetyFactor); + + bool numberOfIterationsHasValue = expected.NumberOfIterations.HasValue; + Assert.AreEqual(numberOfIterationsHasValue, actual.NumberOfIterationsSpecified); + Assert.AreEqual(numberOfIterationsHasValue ? expected.NumberOfIterations : 0, actual.NumberOfIterations); + + bool mStabModelTypeHasValue = expected.StabilityModelType.HasValue; + Assert.AreEqual(mStabModelTypeHasValue, actual.StabilityModelTypeSpecified); + DesignResultStabilityDesignResultsStabilityModelType? expectedModelType = mStabModelTypeHasValue + ? Convert(expected.StabilityModelType) + : DesignResultStabilityDesignResultsStabilityModelType.Bishop; + Assert.AreEqual(expectedModelType, actual.StabilityModelType); + + AssertSurfaceLine(expected.RedesignedSurfaceLine, actual.RedesignedSurfaceLine); + } + + private static void AssertUpliftSituation(UpliftSituation? expected, Io.XmlOutput.UpliftSituation actual) + { + if (!expected.HasValue) { - if (expected == null) - { - Assert.IsNull(actual); - return; - } + Assert.IsNull(actual); + return; + } - Assert.AreEqual(expected.Name, actual.Name); + Assert.AreEqual(expected.Value.IsUplift, actual.IsUplift); + Assert.AreEqual(expected.Value.Pl3MinUplift, actual.Pl3MinUplift); + Assert.AreEqual(expected.Value.Pl3HeadAdjusted, actual.Pl3HeadAdjusted); + Assert.AreEqual(expected.Value.Pl3LocationXMinUplift, actual.Pl3LocationXMinUplift); + Assert.AreEqual(expected.Value.Pl4MinUplift, actual.Pl4MinUplift); + Assert.AreEqual(expected.Value.Pl4HeadAdjusted, actual.Pl4HeadAdjusted); + Assert.AreEqual(expected.Value.Pl4LocationXMinUplift, actual.Pl4LocationXMinUplift); + } - int expectedNrOfCharacteristicPoints = expected.CharacteristicPoints.Count; - Assert.AreEqual(expectedNrOfCharacteristicPoints, actual.Points.Length); - for (var i = 0; i < expectedNrOfCharacteristicPoints; i++) - { - CharacteristicPoint expectedCharacteristicPoint = expected.CharacteristicPoints[i]; - SurfaceLinePoint actualCharacteristicPoint = actual.Points[i]; - AssertCharacteristicPoint(expectedCharacteristicPoint, actualCharacteristicPoint); - } + private static void AssertSurfaceLine(SurfaceLine2 expected, SurfaceLine actual) + { + if (expected == null) + { + Assert.IsNull(actual); + return; } - private static void AssertCharacteristicPoint(CharacteristicPoint expected, SurfaceLinePoint actual) + Assert.AreEqual(expected.Name, actual.Name); + + int expectedNrOfCharacteristicPoints = expected.CharacteristicPoints.Count; + Assert.AreEqual(expectedNrOfCharacteristicPoints, actual.Points.Length); + for (var i = 0; i < expectedNrOfCharacteristicPoints; i++) { - Assert.AreEqual(expected.X, actual.X); - Assert.AreEqual(expected.Z, actual.Z); - Assert.AreEqual(ConversionHelper.ConvertToInputPointType(expected.CharacteristicPointType), - actual.PointType); + CharacteristicPoint expectedCharacteristicPoint = expected.CharacteristicPoints[i]; + SurfaceLinePoint actualCharacteristicPoint = actual.Points[i]; + AssertCharacteristicPoint(expectedCharacteristicPoint, actualCharacteristicPoint); } + } - private void CompareDamProjectData(DamProjectData actual, DamProjectData expected) + private static void AssertCharacteristicPoint(CharacteristicPoint expected, SurfaceLinePoint actual) + { + Assert.AreEqual(expected.X, actual.X); + Assert.AreEqual(expected.Z, actual.Z); + Assert.AreEqual(ConversionHelper.ConvertToInputPointType(expected.CharacteristicPointType), + actual.PointType); + } + + private void CompareDamProjectData(DamProjectData actual, DamProjectData expected) + { + var compare = new CompareLogic { - var compare = new CompareLogic + Config = { - Config = - { - MaxDifferences = 100 - } - }; - ComparisonResult result = compare.Compare(expected, actual); - var fakeDiffCount = 0; - foreach (Difference resultDifference in result.Differences) + MaxDifferences = 100 + } + }; + ComparisonResult result = compare.Compare(expected, actual); + var fakeDiffCount = 0; + foreach (Difference resultDifference in result.Differences) + { + if (resultDifference.PropertyName.Contains("ForecastDateTime")) { - if (resultDifference.PropertyName.Contains("ForecastDateTime")) - { - fakeDiffCount++; - } + fakeDiffCount++; } - - Assert.AreEqual(fakeDiffCount, result.Differences.Count, "Differences found read/write Input object"); } + + Assert.AreEqual(fakeDiffCount, result.Differences.Count, "Differences found read/write Input object"); } } \ No newline at end of file