Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.TestUtil/MacroStabilityInwardsOutputViewChartDataAssert.cs =================================================================== diff -u -rdb798825b9ed601ec3716399ce46e19d2ff2d8ea -r267a288e1b639c9aa05e9325e9f444a8e924ec58 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.TestUtil/MacroStabilityInwardsOutputViewChartDataAssert.cs (.../MacroStabilityInwardsOutputViewChartDataAssert.cs) (revision db798825b9ed601ec3716399ce46e19d2ff2d8ea) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.TestUtil/MacroStabilityInwardsOutputViewChartDataAssert.cs (.../MacroStabilityInwardsOutputViewChartDataAssert.cs) (revision 267a288e1b639c9aa05e9325e9f444a8e924ec58) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Collections.Generic; using System.Linq; using Core.Common.Base.Data; @@ -59,8 +60,25 @@ private const int slipPlaneIndex = 20; private const int activeCircleRadiusIndex = 21; private const int passiveCircleRadiusIndex = 22; - private const int nrOfChartData = 23; + private const int sliceParameterIndex = 23; + private const int nrOfChartData = 24; + private const int sliceParameterLoadStressIndex = 0; + private const int sliceParameterShearStressIndex = 1; + private const int sliceParameterNormalStressIndex = 2; + private const int sliceParameterPopIndex = 3; + private const int sliceParameterOverConsolidationRatioIndex = 4; + private const int sliceParameterHorizontalPorePressureIndex = 5; + private const int sliceParameterVerticalPorePressureIndex = 6; + private const int sliceParameterPorePressureIndex = 7; + private const int sliceParameterPiezometricPorePressureIndex = 8; + private const int sliceParameterWeightIndex = 9; + private const int sliceParameterTotalPorePressureIndex = 10; + private const int sliceParameterEffectiveStressDailyIndex = 11; + private const int sliceParameterEffectiveStressIndex = 12; + private const int sliceParameterCohesionIndex = 13; + private const int sliceParameterNrOfChartData = 14; + /// /// Asserts whether corresponds to the input of . /// @@ -105,6 +123,9 @@ AssertSlicesChartData(calculationScenario.Output.SlidingCurve.Slices, (ChartMultipleAreaData) actual.Collection.ElementAt(slicesIndex)); + AssertSliceParametersChartData(calculationScenario.Output.SlidingCurve.Slices, + (ChartDataCollection) actual.Collection.ElementAt(sliceParameterIndex)); + AssertSlipPlaneChartData(calculationScenario.Output.SlidingCurve, (ChartLineData) actual.Collection.ElementAt(slipPlaneIndex)); @@ -163,6 +184,8 @@ Assert.AreEqual("Glijvlak", slipPlaneData.Name); Assert.AreEqual("Radius actieve cirkel", activeCircleRadiusData.Name); Assert.AreEqual("Radius passieve cirkel", passiveCircleRadiusData.Name); + + AssertEmptySliceParameterChartData((ChartDataCollection) chartDataArray[sliceParameterIndex]); } /// @@ -222,6 +245,92 @@ } /// + /// Asserts whether corresponds to . + /// + /// The original slices. + /// The actual . + /// Thrown when + /// does not correspond to . + public static void AssertSliceParametersChartData(IEnumerable slices, ChartDataCollection actual) + { + MacroStabilityInwardsSlice[] macroStabilityInwardsSlices = slices.ToArray(); + CollectionAssert.IsNotEmpty(macroStabilityInwardsSlices); + + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.Cohesion), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterCohesionIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.EffectiveStress), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterEffectiveStressIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.EffectiveStressDaily), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterEffectiveStressDailyIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.TotalPorePressure), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterTotalPorePressureIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.Weight), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterWeightIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.PiezometricPorePressure), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterPiezometricPorePressureIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.PorePressure), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterPorePressureIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.VerticalPorePressure), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterVerticalPorePressureIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.HorizontalPorePressure), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterHorizontalPorePressureIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.OverConsolidationRatio), 20), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterOverConsolidationRatioIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.Pop), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterPopIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.NormalStress), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterNormalStressIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.ShearStress), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterShearStressIndex)).Areas); + CollectionAssert.AreEqual(CreateExpectedSliceParameterAreas(macroStabilityInwardsSlices, nameof(MacroStabilityInwardsSlice.LoadStress), 8), + ((ChartMultipleAreaData) actual.Collection.ElementAt(sliceParameterLoadStressIndex)).Areas); + } + + /// + /// Asserts whether contains no slice values chart data. + /// + /// The actual . + /// Thrown when a slice value area is present. + private static void AssertEmptySliceParameterChartData(ChartDataCollection chartDataCollection) + { + Assert.AreEqual("Uitvoer per lamel", chartDataCollection.Name); + + ChartData[] chartDataArray = chartDataCollection.Collection.ToArray(); + Assert.AreEqual(sliceParameterNrOfChartData, chartDataArray.Length); + var cohesionSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterCohesionIndex]; + var effectiveStressSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterEffectiveStressIndex]; + var effectiveStressDailySliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterEffectiveStressDailyIndex]; + var totalPorePressureSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterTotalPorePressureIndex]; + var weightSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterWeightIndex]; + var piezometricPorePressureSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterPiezometricPorePressureIndex]; + var porePressureSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterPorePressureIndex]; + var verticalPorePressureSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterVerticalPorePressureIndex]; + var horizontalPorePressureSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterHorizontalPorePressureIndex]; + var overConsolidationRatioSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterOverConsolidationRatioIndex]; + var popSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterPopIndex]; + var normalStressSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterNormalStressIndex]; + var shearStressSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterShearStressIndex]; + var loadStressSliceData = (ChartMultipleAreaData) chartDataArray[sliceParameterLoadStressIndex]; + + CollectionAssert.IsEmpty(cohesionSliceData.Areas); + + Assert.AreEqual("Cohesie", cohesionSliceData.Name); + Assert.AreEqual("Effectieve spanning", effectiveStressSliceData.Name); + Assert.AreEqual("Effectieve spanning (dagelijks)", effectiveStressDailySliceData.Name); + Assert.AreEqual("Totale waterspanning", totalPorePressureSliceData.Name); + Assert.AreEqual("Gewicht", weightSliceData.Name); + Assert.AreEqual("Piezometrische waterspanning", piezometricPorePressureSliceData.Name); + Assert.AreEqual("Waterspanning op maaiveld", porePressureSliceData.Name); + Assert.AreEqual("Verticale waterspanning op maaiveld", verticalPorePressureSliceData.Name); + Assert.AreEqual("Horizontale waterspanning op maaiveld", horizontalPorePressureSliceData.Name); + Assert.AreEqual("OCR", overConsolidationRatioSliceData.Name); + Assert.AreEqual("POP", popSliceData.Name); + Assert.AreEqual("Normaalspanning", normalStressSliceData.Name); + Assert.AreEqual("Schuifspanning", shearStressSliceData.Name); + Assert.AreEqual("Spanning belasting", loadStressSliceData.Name); + } + + /// /// Asserts whether corresponds to /// and . /// @@ -273,6 +382,31 @@ } } + private static IEnumerable CreateExpectedSliceParameterAreas(IEnumerable slices, + string propertyName, + int scaleFactor) + { + var areas = new List(); + foreach (MacroStabilityInwardsSlice slice in slices) + { + var value = (RoundedDouble?) slice.GetType().GetProperty(propertyName)?.GetValue(slice, null); + double offset = value.Value / scaleFactor; + double length = Math.Sqrt(Math.Pow(slice.BottomLeftPoint.X - slice.BottomRightPoint.X, 2) + + Math.Pow(slice.BottomLeftPoint.Y - slice.BottomRightPoint.Y, 2)); + + areas.Add(new[] + { + slice.BottomLeftPoint, + slice.BottomRightPoint, + new Point2D(slice.BottomRightPoint.X + offset * (slice.BottomRightPoint.Y - slice.BottomLeftPoint.Y) / length, + slice.BottomRightPoint.Y + offset * (slice.BottomLeftPoint.X - slice.BottomRightPoint.X) / length), + new Point2D(slice.BottomLeftPoint.X + offset * (slice.BottomRightPoint.Y - slice.BottomLeftPoint.Y) / length, + slice.BottomLeftPoint.Y + offset * (slice.BottomLeftPoint.X - slice.BottomRightPoint.X) / length) + }); + } + return areas; + } + /// /// Asserts whether corresponds to /// and .