private static PersistableWaternet Create(MacroStabilityInwardsWaternet waternet, GeneralMacroStabilityInwardsInput generalInput, MacroStabilityInwardsExportStageType stageType, IdFactory idFactory, MacroStabilityInwardsExportRegistry registry) { var persistableWaternet = new PersistableWaternet { Id = idFactory.Create(), UnitWeightWater = generalInput.WaterVolumetricWeight, HeadLines = waternet.PhreaticLines.Select(pl => Create(pl, idFactory)).ToArray(), ReferenceLines = waternet.WaternetLines.Select(wl => Create(wl, idFactory)).ToArray(), PhreaticLineId = waternet.PhreaticLines.Any() ? createdHeadLines[waternet.PhreaticLines.First()].Id : null }; registry.AddWaternet(stageType, persistableWaternet.Id); return(persistableWaternet); }
/// <summary> /// Asserts whether the <see cref="MacroStabilityInwardsWaternet"/> contains the data /// that is representative for the <paramref name="originalWaternets"/>. /// </summary> /// <param name="originalWaternets">The Waternets that contain the original data.</param> /// <param name="actualWaternets">The <see cref="PersistableWaternet"/> /// that needs to be asserted.</param> /// <exception cref="AssertionException">Thrown when the data in <paramref name="actualWaternets"/> /// is not correct.</exception> public static void AssertWaternets(IEnumerable <MacroStabilityInwardsWaternet> originalWaternets, IEnumerable <PersistableWaternet> actualWaternets) { Assert.AreEqual(originalWaternets.Count(), actualWaternets.Count()); for (var i = 0; i < originalWaternets.Count(); i++) { MacroStabilityInwardsWaternet originalWaternet = originalWaternets.ElementAt(i); PersistableWaternet actualWaternet = actualWaternets.ElementAt(i); Assert.IsNotNull(actualWaternet.Id); Assert.AreEqual(9.81, actualWaternet.UnitWeightWater); PersistableHeadLine firstHeadLine = actualWaternet.HeadLines.FirstOrDefault(); Assert.AreEqual(actualWaternet.PhreaticLineId, firstHeadLine?.Id); Assert.AreEqual(originalWaternet.PhreaticLines.Count(), actualWaternet.HeadLines.Count()); for (var j = 0; j < originalWaternet.PhreaticLines.Count(); j++) { MacroStabilityInwardsPhreaticLine phreaticLine = originalWaternet.PhreaticLines.ElementAt(j); PersistableHeadLine headLine = actualWaternet.HeadLines.ElementAt(j); Assert.IsNotNull(headLine.Id); Assert.AreEqual(phreaticLine.Name, headLine.Label); CollectionAssert.AreEqual(phreaticLine.Geometry.Select(p => new PersistablePoint(p.X, p.Y)), headLine.Points); } Assert.AreEqual(originalWaternet.WaternetLines.Count(), actualWaternet.ReferenceLines.Count()); for (var j = 0; j < originalWaternet.WaternetLines.Count(); j++) { MacroStabilityInwardsWaternetLine waternetLine = originalWaternet.WaternetLines.ElementAt(j); PersistableReferenceLine referenceLine = actualWaternet.ReferenceLines.ElementAt(j); Assert.IsNotNull(referenceLine.Id); Assert.AreEqual(waternetLine.Name, referenceLine.Label); CollectionAssert.AreEqual(waternetLine.Geometry.Select(p => new PersistablePoint(p.X, p.Y)), referenceLine.Points); Assert.AreEqual(firstHeadLine.Id, referenceLine.TopHeadLineId); Assert.AreEqual(firstHeadLine.Id, referenceLine.BottomHeadLineId); } } }
public void Create_WithValidData_ReturnsStages() { // Setup var idFactory = new IdFactory(); var registry = new MacroStabilityInwardsExportRegistry(); var stageTypes = new[] { MacroStabilityInwardsExportStageType.Daily, MacroStabilityInwardsExportStageType.Extreme }; var settingsList = new List <PersistableCalculationSettings>(); var geometryList = new List <PersistableGeometry>(); var soilLayersList = new List <PersistableSoilLayerCollection>(); var waternetList = new List <PersistableWaternet>(); var waternetCreatorSettingsList = new List <PersistableWaternetCreatorSettings>(); var stateList = new List <PersistableState>(); foreach (MacroStabilityInwardsExportStageType stageType in stageTypes) { var settings = new PersistableCalculationSettings { Id = idFactory.Create() }; settingsList.Add(settings); var geometry = new PersistableGeometry { Id = idFactory.Create() }; geometryList.Add(geometry); var persistableSoilLayerCollection = new PersistableSoilLayerCollection { Id = idFactory.Create() }; soilLayersList.Add(persistableSoilLayerCollection); var waternet = new PersistableWaternet { Id = idFactory.Create() }; waternetList.Add(waternet); var waternetCreatorSettings = new PersistableWaternetCreatorSettings { Id = idFactory.Create() }; waternetCreatorSettingsList.Add(waternetCreatorSettings); var state = new PersistableState { Id = idFactory.Create() }; stateList.Add(state); registry.AddSettings(stageType, settings.Id); registry.AddGeometry(stageType, geometry.Id); registry.AddSoilLayer(stageType, persistableSoilLayerCollection.Id); registry.AddWaternet(stageType, waternet.Id); registry.AddWaternetCreatorSettings(stageType, waternetCreatorSettings.Id); registry.AddState(stageType, state.Id); } // Call IEnumerable <PersistableStage> stages = PersistableStageFactory.Create(idFactory, registry); // Assert PersistableDataModelTestHelper.AssertStages(stages, settingsList, geometryList, soilLayersList, waternetList, waternetCreatorSettingsList, stateList); }