public void CreateUpliftVan_ValidDataWithManualTangentLines_ReturnMacroStabilityInput() { // Setup var random = new Random(21); double tangentZTop = random.NextDouble(); double tangentZBottom = random.NextDouble(); int tangentLineNumber = random.Next(); UpliftVanCalculatorInput input = UpliftVanCalculatorInputTestFactory.Create(tangentZTop, tangentZBottom, tangentLineNumber); LayerWithSoil[] layersWithSoil = LayerWithSoilCreator.Create(input.SoilProfile, out IDictionary <SoilLayer, LayerWithSoil> layerLookup); List <Soil> soils = layersWithSoil.Select(lws => lws.Soil).ToList(); SurfaceLine surfaceLine = SurfaceLineCreator.Create(input.SurfaceLine); SoilProfile soilProfile = SoilProfileCreator.Create(layersWithSoil); var dailyWaternet = new Waternet(); var extremeWaternet = new Waternet(); // Call MacroStabilityInput macroStabilityInput = MacroStabilityInputCreator.CreateUpliftVan( input, soils, layerLookup, surfaceLine, soilProfile, dailyWaternet, extremeWaternet); // Assert SearchAreaConditions searchAreaConditions = macroStabilityInput.PreprocessingInput.SearchAreaConditions; Assert.AreEqual(input.SlipPlane.TangentLinesAutomaticAtBoundaries, searchAreaConditions.AutoTangentLines); Assert.AreEqual(input.SlipPlane.TangentLineNumber, searchAreaConditions.TangentLineNumber); Assert.AreEqual(input.SlipPlane.TangentZTop, searchAreaConditions.TangentLineZTop); Assert.AreEqual(input.SlipPlane.TangentZBottom, searchAreaConditions.TangentLineZBottom); }
/// <summary> /// Asserts whether <paramref name="actual"/> is equal to <paramref name="expected"/>. /// </summary> /// <param name="expected">The expected <see cref="PreprocessingInput"/>.</param> /// <param name="actual">The actual <see cref="PreprocessingInput"/>.</param> /// <exception cref="AssertionException">Thrown when <paramref name="actual"/> /// is not equal to <paramref name="expected"/>.</exception> private static void AssertPreprocessingInput(PreprocessingInput expected, PreprocessingInput actual) { SearchAreaConditions expectedSearchAreaConditions = expected.SearchAreaConditions; SearchAreaConditions actualSearchAreaConditions = actual.SearchAreaConditions; Assert.AreEqual(expectedSearchAreaConditions.MaxSpacingBetweenBoundaries, actualSearchAreaConditions.MaxSpacingBetweenBoundaries); Assert.AreEqual(expectedSearchAreaConditions.OnlyAbovePleistoceen, actualSearchAreaConditions.OnlyAbovePleistoceen); Assert.AreEqual(expectedSearchAreaConditions.AutoSearchArea, actualSearchAreaConditions.AutoSearchArea); Assert.AreEqual(expectedSearchAreaConditions.AutoTangentLines, actualSearchAreaConditions.AutoTangentLines); Assert.AreEqual(expectedSearchAreaConditions.AutomaticForbiddenZones, actualSearchAreaConditions.AutomaticForbiddenZones); Assert.AreEqual(expectedSearchAreaConditions.TangentLineNumber, actualSearchAreaConditions.TangentLineNumber); Assert.AreEqual(expectedSearchAreaConditions.TangentLineZTop, actualSearchAreaConditions.TangentLineZTop); Assert.AreEqual(expectedSearchAreaConditions.TangentLineZBottom, actualSearchAreaConditions.TangentLineZBottom); AssertPreConstructionStages(expected.PreConstructionStages, actual.PreConstructionStages); }
private static void AssertIrrelevantValues(StabilityInput stabilityModel, SearchAreaConditions searchAreaConditions) { Assert.AreEqual(50, stabilityModel.MaxGridMoves); // Irrelevant Assert.IsNotNull(stabilityModel.BishopCalculationCircle); // Irrelevant - Only for Bishop Assert.IsNotNull(stabilityModel.BeeswarmAlgorithmOptions); // Irrelevant - Only for Beeswarm Assert.IsNotNull(stabilityModel.GeneticAlgorithmOptions); // Irrelevant - Only for Genetic Algorithm Assert.IsFalse(searchAreaConditions.AutoGeneticAlgorithmOptions); // Irrelevant - Only for Genetic Algorithm Assert.IsNull(stabilityModel.LevenbergMarquardtOptions); // Irrelevant - Only for Levenberg Marquardt Assert.AreEqual(0, stabilityModel.MaxAllowedAngleBetweenSlices); // Irrelevant - Only for Spencer Assert.AreEqual(0, stabilityModel.RequiredForcePointsInSlices); // Irrelevant - Only for Spencer Assert.IsNotNull(stabilityModel.SpencerSlipPlanes); // Irrelevant - Only for Spencer Assert.AreEqual(2, stabilityModel.TraversalGridPoints); // Irrelevant - Only for Spencer Assert.AreEqual(0, stabilityModel.TraversalRefinements); // Irrelevant - Only for Spencer Assert.AreEqual(SearchAreaConditionsSlipPlanePosition.High, searchAreaConditions.SlipPlanePosition); // Irrelevant - Only for Spencer }
public void CreateUpliftVan_ValidData_ReturnMacroStabilityInput() { // Setup UpliftVanCalculatorInput input = UpliftVanCalculatorInputTestFactory.Create(); LayerWithSoil[] layersWithSoil = LayerWithSoilCreator.Create(input.SoilProfile, out IDictionary <SoilLayer, LayerWithSoil> layerLookup); List <Soil> soils = layersWithSoil.Select(lws => lws.Soil).ToList(); SurfaceLine surfaceLine = SurfaceLineCreator.Create(input.SurfaceLine); SoilProfile soilProfile = SoilProfileCreator.Create(layersWithSoil); var dailyWaternet = new Waternet(); var extremeWaternet = new Waternet(); // Call MacroStabilityInput macroStabilityInput = MacroStabilityInputCreator.CreateUpliftVan( input, soils, layerLookup, surfaceLine, soilProfile, dailyWaternet, extremeWaternet); // Assert StabilityInput stabilityModel = macroStabilityInput.StabilityModel; Assert.AreEqual(Orientation.Inwards, stabilityModel.Orientation); Assert.AreEqual(SearchAlgorithm.Grid, stabilityModel.SearchAlgorithm); Assert.AreEqual(StabilityModelOptionType.UpliftVan, stabilityModel.ModelOption); CollectionAssert.AreEqual(soils, stabilityModel.Soils, new SoilComparer()); Assert.AreEqual(input.MoveGrid, stabilityModel.MoveGrid); Assert.AreEqual(input.MaximumSliceWidth, stabilityModel.MaximumSliceWidth); UpliftVanKernelInputAssert.AssertUpliftVanCalculationGrid( UpliftVanCalculationGridCreator.Create(input.SlipPlane), stabilityModel.UpliftVanCalculationGrid); UpliftVanKernelInputAssert.AssertSlipPlaneConstraints( SlipPlaneConstraintsCreator.Create(input.SlipPlaneConstraints), stabilityModel.SlipPlaneConstraints); AssertConstructionStages(input, stabilityModel, soilProfile, dailyWaternet, extremeWaternet, layerLookup); Assert.AreEqual(input.SlipPlane.GridNumberOfRefinements, stabilityModel.NumberOfRefinementsGrid); Assert.AreEqual(input.SlipPlane.TangentLineNumberOfRefinements, stabilityModel.NumberOfRefinementsTangentLines); SearchAreaConditions searchAreaConditions = macroStabilityInput.PreprocessingInput.SearchAreaConditions; Assert.AreEqual(0.8, searchAreaConditions.MaxSpacingBetweenBoundaries); Assert.IsTrue(searchAreaConditions.OnlyAbovePleistoceen); Assert.AreEqual(input.SlipPlane.GridAutomaticDetermined, searchAreaConditions.AutoSearchArea); Assert.AreEqual(input.SlipPlane.TangentLinesAutomaticAtBoundaries, searchAreaConditions.AutoTangentLines); Assert.AreEqual(1, searchAreaConditions.TangentLineNumber); Assert.AreEqual(0, searchAreaConditions.TangentLineZTop); Assert.AreEqual(0, searchAreaConditions.TangentLineZBottom); Assert.AreEqual(input.SlipPlaneConstraints.AutomaticForbiddenZones, searchAreaConditions.AutomaticForbiddenZones); Assert.AreEqual(2, macroStabilityInput.PreprocessingInput.PreConstructionStages.Count); foreach (PreConstructionStage preConstructionStage in macroStabilityInput.PreprocessingInput.PreConstructionStages) { Assert.IsFalse(preConstructionStage.CreateWaternet); Assert.AreSame(surfaceLine, preConstructionStage.SurfaceLine); Assert.IsNull(preConstructionStage.WaternetCreatorInput); // Not needed as Waternet is already calculated } AssertIrrelevantValues(stabilityModel, searchAreaConditions); }