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 .