private static void AssertConstructionStages(
            UpliftVanCalculatorInput input, StabilityInput stabilityModel, SoilProfile soilProfile,
            Waternet dailyWaternet, Waternet extremeWaternet, IDictionary <SoilLayer, LayerWithSoil> layerLookup)
        {
            Assert.AreEqual(2, stabilityModel.ConstructionStages.Count);

            ConstructionStage dailyConstructionStage = stabilityModel.ConstructionStages.ElementAt(0);

            Assert.AreSame(soilProfile, dailyConstructionStage.SoilProfile);
            Assert.AreSame(dailyWaternet, dailyConstructionStage.Waternet);
            CollectionAssert.AreEqual(FixedSoilStressCreator.Create(layerLookup),
                                      dailyConstructionStage.FixedSoilStresses, new FixedSoilStressComparer());
            CollectionAssert.AreEqual(PreconsolidationStressCreator.Create(input.SoilProfile.PreconsolidationStresses),
                                      dailyConstructionStage.PreconsolidationStresses, new PreconsolidationStressComparer());
            AssertMultiplicationFactors(dailyConstructionStage.MultiplicationFactorsCPhiForUplift.Single());
            AssertIrrelevantValues(dailyConstructionStage);

            ConstructionStage extremeConstructionStage = stabilityModel.ConstructionStages.ElementAt(1);

            Assert.AreSame(soilProfile, extremeConstructionStage.SoilProfile);
            Assert.AreSame(extremeWaternet, extremeConstructionStage.Waternet);
            CollectionAssert.IsEmpty(extremeConstructionStage.FixedSoilStresses);
            CollectionAssert.IsEmpty(extremeConstructionStage.PreconsolidationStresses);
            AssertMultiplicationFactors(extremeConstructionStage.MultiplicationFactorsCPhiForUplift.Single());
            AssertIrrelevantValues(extremeConstructionStage);
        }
        public void Create_PreconsolidationStressesNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => PreconsolidationStressCreator.Create(null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("preconsolidationStresses", exception.ParamName);
        }
        public void Create_WithValidData_ReturnsPreConsolidationStresses()
        {
            // Setup
            var preconsolidationStresses = new[]
            {
                new PreconsolidationStress(new Point2D(3.2, 4.8), 1.5),
                new PreconsolidationStress(new Point2D(1.2, 0.5), 17.9),
                new PreconsolidationStress(new Point2D(50.8, 9.9), 3.8)
            };

            // Call
            IEnumerable <CSharpWrapperPreconsolidationStress> stabilityPreconsolidationStresses = PreconsolidationStressCreator.Create(preconsolidationStresses);

            // Assert
            Assert.AreEqual(preconsolidationStresses.Length, stabilityPreconsolidationStresses.Count());

            for (var i = 0; i < preconsolidationStresses.Length; i++)
            {
                PreconsolidationStress preconsolidationStress = preconsolidationStresses[i];
                CSharpWrapperPreconsolidationStress stabilityPreconsolidationStress = stabilityPreconsolidationStresses.ElementAt(i);

                Assert.AreEqual(preconsolidationStress.Coordinate.X, stabilityPreconsolidationStress.Point.X);
                Assert.AreEqual(preconsolidationStress.Coordinate.Y, stabilityPreconsolidationStress.Point.Z);
                Assert.AreEqual(preconsolidationStress.Stress, stabilityPreconsolidationStress.StressValue);
            }
        }