Exemplo n.º 1
0
        public void Validate_SurfaceLineInvalidDitchPointsOrder_ValidationMessageForInvalidDitchPointsOrder(
            int ditchDikeSidePosition,
            int bottomDitchDikeSidePosition,
            int bottomDitchPolderSidePosition,
            int ditchPolderSidePosition)
        {
            // Setup
            PipingCalculatorInput.ConstructionProperties properties = CreateSimpleConstructionProperties();
            properties.SurfaceLine = new PipingSurfaceLine(string.Empty);

            var input = new PipingCalculatorInput(properties);

            input.SurfaceLine.SetGeometry(new[]
            {
                new Point3D(0, 0, 2),
                new Point3D(1, 0, -3),
                new Point3D(2, 0, -4),
                new Point3D(3, 0, 3)
            });
            input.SurfaceLine.SetDitchDikeSideAt(input.SurfaceLine.Points.ElementAt(ditchDikeSidePosition));
            input.SurfaceLine.SetBottomDitchDikeSideAt(input.SurfaceLine.Points.ElementAt(bottomDitchDikeSidePosition));
            input.SurfaceLine.SetBottomDitchPolderSideAt(input.SurfaceLine.Points.ElementAt(bottomDitchPolderSidePosition));
            input.SurfaceLine.SetDitchPolderSideAt(input.SurfaceLine.Points.ElementAt(ditchPolderSidePosition));

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            List <string> validationMessages = calculation.Validate();

            // Assert
            Assert.AreEqual(1, validationMessages.Count);
            Assert.AreEqual("De sloot in de hoogtegeometrie  is niet correct. Niet alle 4 punten zijn gedefinieerd of de volgorde is incorrect.", validationMessages.First());
        }
Exemplo n.º 2
0
        public void Validate_SoilProfileBottomAtTopLevel_ValidationMessageForHavingTooHighBottom(double bottom)
        {
            // Setup
            const int top = 0;

            PipingCalculatorInput.ConstructionProperties properties = CreateSimpleConstructionProperties();
            properties.SoilProfile = new PipingSoilProfile(string.Empty, bottom, new[]
            {
                new PipingSoilLayer(top)
                {
                    IsAquifer = true
                }
            }, SoilProfileType.SoilProfile1D);

            var input = new PipingCalculatorInput(properties);

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            List <string> validationMessages = calculation.Validate();

            // Assert
            string message = $"De onderkant({bottom}) van het ondergrondprofiel is niet laag genoeg. Het moet tenminste {0.001} m onder de bovenkant van de diepste laag ({top}) liggen.";

            Assert.AreEqual(1, validationMessages.Count);
            Assert.AreEqual(message, validationMessages[0]);
        }
Exemplo n.º 3
0
        public void Validate_CompleteValidInput_ReturnsNoValidationMessages()
        {
            // Setup
            var input       = new PipingCalculatorInput(CreateSimpleConstructionProperties());
            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            List <string> validationMessages = calculation.Validate();

            // Assert
            Assert.AreEqual(0, validationMessages.Count);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Calculates the piezometric head at the exit point based on the values of partial piping input.
        /// </summary>
        /// <param name="assessmentLevel">The assessment level.</param>
        /// <param name="dampingFactorExit">The design value of the damping factor at exit point.</param>
        /// <param name="phreaticLevelExit">The design value of the phreatic level at exit point.</param>
        /// <returns>The piezometric head at the exit point.</returns>
        public static double CalculatePiezometricHeadAtExit(RoundedDouble assessmentLevel, RoundedDouble dampingFactorExit, RoundedDouble phreaticLevelExit)
        {
            var calculatorInput = new PipingCalculatorInput(
                new PipingCalculatorInput.ConstructionProperties
            {
                AssessmentLevel   = assessmentLevel,
                DampingFactorExit = dampingFactorExit,
                PhreaticLevelExit = phreaticLevelExit
            });

            return(new PipingCalculator(calculatorInput, PipingSubCalculatorFactory.Instance).CalculatePiezometricHeadAtExit());
        }
Exemplo n.º 5
0
        public void Constructor_FactoryNull_ArgumentNullException()
        {
            // Call
            var input = new PipingCalculatorInput(CreateSimpleConstructionProperties());

            void Call() => new PipingCalculator(input, null);

            // Assert
            const string expectedMessage = "IPipingSubCalculatorFactory required for creating a PipingCalculator.";

            TestHelper.AssertThrowsArgumentExceptionAndTestMessage <ArgumentNullException>(Call, expectedMessage);
        }
Exemplo n.º 6
0
        public void CalculateThicknessCoverageLayer_WithValidInput_ReturnsSomeThickness()
        {
            // Setup
            var input = new PipingCalculatorInput(CreateSimpleConstructionProperties());

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            double result = calculation.CalculateEffectiveThicknessCoverageLayer();

            // Assert
            Assert.AreEqual(1.0, result);
        }
Exemplo n.º 7
0
        public void CalculatePiezometricHeadAtExit_WithValidInput_ReturnsSomeValue()
        {
            // Setup
            var input = new PipingCalculatorInput(CreateSimpleConstructionProperties());

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            double result = calculation.CalculatePiezometricHeadAtExit();

            // Assert
            Assert.IsFalse(double.IsNaN(result));
        }
Exemplo n.º 8
0
        public void Calculate_CompleteValidInput_BottomLevelAquitardLayerAboveExitPointZUsedFromCalculator()
        {
            // Setup
            var    input = new PipingCalculatorInput(CreateSimpleConstructionProperties());
            var    testPipingSubCalculatorFactory     = new TestPipingSubCalculatorFactory();
            double bottomAquitardLayerAboveExitPointZ = new Random(21).NextDouble(0, 10);

            testPipingSubCalculatorFactory.LastCreatedPipingProfilePropertyCalculator.BottomAquitardLayerAboveExitPointZ = bottomAquitardLayerAboveExitPointZ;

            // Call
            new PipingCalculator(input, testPipingSubCalculatorFactory).Calculate();

            // Assert
            Assert.AreEqual(bottomAquitardLayerAboveExitPointZ, testPipingSubCalculatorFactory.LastCreatedSellmeijerCalculator.BottomLevelAquitardAboveExitPointZ);
        }
Exemplo n.º 9
0
        public void CalculateThicknessCoverageLayer_WithExitPointLBeyondSurfaceLineInput_ReturnsNaN()
        {
            // Setup
            PipingCalculatorInput.ConstructionProperties properties = CreateSimpleConstructionProperties();
            properties.ExitPointXCoordinate = (RoundedDouble)2.1;

            var input = new PipingCalculatorInput(properties);

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            double result = calculation.CalculateEffectiveThicknessCoverageLayer();

            // Assert
            Assert.IsNaN(result);
        }
Exemplo n.º 10
0
        public void Validate_NoSoilProfileSet_ValidationMessageForHavingNoSoilProfileSelected()
        {
            // Setup
            PipingCalculatorInput.ConstructionProperties properties = CreateSimpleConstructionProperties();
            properties.SoilProfile = null;

            var input = new PipingCalculatorInput(properties);

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            List <string> validationMessages = calculation.Validate();

            // Assert
            Assert.AreEqual(1, validationMessages.Count);
            Assert.AreEqual("Het ondergrondprofiel is niet gedefinieerd.", validationMessages[0]);
        }
Exemplo n.º 11
0
        public void Validate_ZeroOrNegativeSeepageLength_ValidationMessageForPipingLength(double seepageLength)
        {
            // Setup
            PipingCalculatorInput.ConstructionProperties properties = CreateSimpleConstructionProperties();
            properties.SeepageLength = seepageLength;

            var input = new PipingCalculatorInput(properties);

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            List <string> validationMessages = calculation.Validate();

            // Assert
            Assert.AreEqual(1, validationMessages.Count);
            Assert.AreEqual("Kwelweglengte heeft ongeldige waarde (0 of negatief).", validationMessages[0]);
        }
Exemplo n.º 12
0
        public void Validate_VolumetricWeightWaterZero_ValidationMessageForVolumetricWeightWater()
        {
            // Setup
            PipingCalculatorInput.ConstructionProperties properties = CreateSimpleConstructionProperties();
            properties.WaterVolumetricWeight = 0;

            var input = new PipingCalculatorInput(properties);

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            List <string> validationMessages = calculation.Validate();

            // Assert
            Assert.AreEqual(1, validationMessages.Count);
            Assert.AreEqual("Volumiek gewicht water heeft ongeldige waarde (mag niet nul zijn).", validationMessages[0]);
        }
Exemplo n.º 13
0
        public void Validate_ThicknessAquiferLayerZero_ValidationMessageForDAquifer()
        {
            // Setup
            PipingCalculatorInput.ConstructionProperties properties = CreateSimpleConstructionProperties();
            properties.ThicknessAquiferLayer = 0;

            var input = new PipingCalculatorInput(properties);

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            List <string> validationMessages = calculation.Validate();

            // Assert
            Assert.AreEqual(1, validationMessages.Count);
            Assert.AreEqual("Parameter 'DAquifer' (dikte watervoerend pakket) heeft ongeldige waarde (0 of negatief).", validationMessages[0]);
        }
Exemplo n.º 14
0
        public void Validate_CompleteValidInput_CalculatorsValidated()
        {
            // Setup
            var input = new PipingCalculatorInput(CreateSimpleConstructionProperties());
            var testPipingSubCalculatorFactory = new TestPipingSubCalculatorFactory();
            var calculation = new PipingCalculator(input, testPipingSubCalculatorFactory);

            // Call
            calculation.Validate();

            // Assert
            Assert.IsTrue(testPipingSubCalculatorFactory.LastCreatedEffectiveThicknessCalculator.Validated);
            Assert.IsTrue(testPipingSubCalculatorFactory.LastCreatedHeaveCalculator.Validated);
            Assert.IsTrue(testPipingSubCalculatorFactory.LastCreatedSellmeijerCalculator.Validated);
            Assert.IsTrue(testPipingSubCalculatorFactory.LastCreatedUpliftCalculator.Validated);
            Assert.IsTrue(testPipingSubCalculatorFactory.LastCreatedPipingProfilePropertyCalculator.Validated);
        }
Exemplo n.º 15
0
        public void Validate_NegativeBeddingAngle_ValidationMessageForBeddingAngle(double beddingAngle)
        {
            // Setup
            PipingCalculatorInput.ConstructionProperties properties = CreateSimpleConstructionProperties();
            properties.BeddingAngle = beddingAngle;

            var input = new PipingCalculatorInput(properties);

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            List <string> validationMessages = calculation.Validate();

            // Assert
            Assert.AreEqual(1, validationMessages.Count);
            Assert.AreEqual("Rolweerstandshoek heeft een ongeldige waarde (0 of negatief).", validationMessages[0]);
        }
Exemplo n.º 16
0
        public void Validate_DampingFactorExitZero_TwoValidationMessageForRExit()
        {
            // Setup
            PipingCalculatorInput.ConstructionProperties properties = CreateSimpleConstructionProperties();
            properties.AssessmentLevel   = (RoundedDouble)0.1;
            properties.DampingFactorExit = 0;

            var input = new PipingCalculatorInput(properties);

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            List <string> validationMessages = calculation.Validate();

            // Assert
            Assert.AreEqual(1, validationMessages.Count);
            Assert.AreEqual("Parameter 'RExit' (Dempingsfactor bij uittredepunt) mag niet nul zijn.", validationMessages[0]);
        }
Exemplo n.º 17
0
        public void CalculateThicknessCoverageLayer_WithValidInput_UsedPiezometricHeadAtExitCalculator()
        {
            // Setup
            var input = new PipingCalculatorInput(CreateSimpleConstructionProperties());

            var testPipingSubCalculatorFactory = new TestPipingSubCalculatorFactory();
            var calculation = new PipingCalculator(input, testPipingSubCalculatorFactory);

            // Call
            calculation.CalculatePiezometricHeadAtExit();

            // Assert
            Assert.IsFalse(testPipingSubCalculatorFactory.LastCreatedHeaveCalculator.Calculated);
            Assert.IsFalse(testPipingSubCalculatorFactory.LastCreatedSellmeijerCalculator.Calculated);
            Assert.IsFalse(testPipingSubCalculatorFactory.LastCreatedUpliftCalculator.Calculated);
            Assert.IsFalse(testPipingSubCalculatorFactory.LastCreatedPipingProfilePropertyCalculator.Calculated);
            Assert.IsTrue(testPipingSubCalculatorFactory.LastCreatedPiezometricHeadAtExitCalculator.Calculated);
            Assert.IsFalse(testPipingSubCalculatorFactory.LastCreatedEffectiveThicknessCalculator.Calculated);
        }
Exemplo n.º 18
0
 /// <summary>
 /// Calculates the thickness of the coverage layer based on the values of partial piping input.
 /// </summary>
 /// <param name="waterVolumetricWeight">The volumetric weight of water.</param>
 /// <param name="phreaticLevelExit">The design value of the phreatic level at the exit point.</param>
 /// <param name="exitPointL">The l-coordinate of the exit point.</param>
 /// <param name="surfaceLine">A surface line.</param>
 /// <param name="soilProfile">A soil profile.</param>
 /// <returns>The thickness of the coverage layer, or <see cref="double.NaN"/> if the thickness could not be calculated.</returns>
 public static double CalculateEffectiveThicknessCoverageLayer(double waterVolumetricWeight, RoundedDouble phreaticLevelExit, RoundedDouble exitPointL, PipingSurfaceLine surfaceLine, PipingSoilProfile soilProfile)
 {
     try
     {
         var calculatorInput = new PipingCalculatorInput(
             new PipingCalculatorInput.ConstructionProperties
         {
             WaterVolumetricWeight = waterVolumetricWeight,
             PhreaticLevelExit     = phreaticLevelExit,
             ExitPointXCoordinate  = exitPointL,
             SurfaceLine           = surfaceLine,
             SoilProfile           = soilProfile
         });
         return(new PipingCalculator(calculatorInput, PipingSubCalculatorFactory.Instance).CalculateEffectiveThicknessCoverageLayer());
     }
     catch (PipingCalculatorException)
     {
         return(double.NaN);
     }
 }
Exemplo n.º 19
0
        public void CalculateThicknessCoverageLayer_WithValidInputWithAquiferAboveSurfaceLine_ReturnsNegativeThickness()
        {
            // Setup
            var input = new PipingCalculatorInput(CreateSimpleConstructionProperties());

            input.SurfaceLine.SetGeometry(new[]
            {
                new Point3D(0, 0, 0.5),
                new Point3D(1, 0, 1.5),
                new Point3D(2, 0, -1)
            });

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            double result = calculation.CalculateEffectiveThicknessCoverageLayer();

            // Assert
            Assert.AreEqual(result, -3.0);
        }
Exemplo n.º 20
0
        public void Validate_DifferenceAssessmentLevelAndPhreaticLevelExitEqualToSellmeijerReductionFactorTimesThicknessCoverageLayer_ValidationMessageForHRiverHExitRcDTotal(
            double assessmentLevel, double phreaticLevelExit, double sellmeijerReductionFactor, double thicknessCoverageLayer)
        {
            // Setup
            PipingCalculatorInput.ConstructionProperties properties = CreateSimpleConstructionProperties();
            properties.AssessmentLevel           = (RoundedDouble)assessmentLevel;
            properties.PhreaticLevelExit         = phreaticLevelExit;
            properties.SellmeijerReductionFactor = sellmeijerReductionFactor;
            properties.ThicknessCoverageLayer    = thicknessCoverageLayer;

            var input = new PipingCalculatorInput(properties);

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            List <string> validationMessages = calculation.Validate();

            // Assert
            Assert.AreEqual(1, validationMessages.Count);
            Assert.AreEqual("De term HRiver - HExit - (Rc*DTotal) mag niet nul zijn.", validationMessages[0]);
        }
Exemplo n.º 21
0
        public void CalculateThicknessCoverageLayer_SoilProfileWithoutAquiferSet_ThrowsPipingCalculatorException()
        {
            // Setup
            PipingCalculatorInput.ConstructionProperties properties = CreateSimpleConstructionProperties();
            properties.SoilProfile = new PipingSoilProfile(string.Empty, -1.0, new[]
            {
                new PipingSoilLayer(0)
            }, SoilProfileType.SoilProfile1D);

            var input = new PipingCalculatorInput(properties);

            var calculation = new PipingCalculator(input, PipingSubCalculatorFactory.Instance);

            // Call
            void Call() => calculation.CalculateEffectiveThicknessCoverageLayer();

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

            Assert.IsInstanceOf <NullReferenceException>(exception.InnerException);
        }
Exemplo n.º 22
0
        public void Calculate_CompleteValidInput_ReturnsResultWithNoNaN()
        {
            // Setup
            var input = new PipingCalculatorInput(CreateSimpleConstructionProperties());
            var testPipingSubCalculatorFactory = new TestPipingSubCalculatorFactory();

            // Call
            PipingCalculatorResult actual = new PipingCalculator(input, testPipingSubCalculatorFactory).Calculate();

            // Assert
            Assert.IsNotNull(actual);
            Assert.IsFalse(double.IsNaN(actual.UpliftEffectiveStress));
            Assert.IsFalse(double.IsNaN(actual.UpliftFactorOfSafety));
            Assert.IsFalse(double.IsNaN(actual.HeaveFactorOfSafety));
            Assert.IsFalse(double.IsNaN(actual.SellmeijerFactorOfSafety));

            Assert.IsTrue(testPipingSubCalculatorFactory.LastCreatedHeaveCalculator.Calculated);
            Assert.IsTrue(testPipingSubCalculatorFactory.LastCreatedSellmeijerCalculator.Calculated);
            Assert.IsTrue(testPipingSubCalculatorFactory.LastCreatedUpliftCalculator.Calculated);
            Assert.IsTrue(testPipingSubCalculatorFactory.LastCreatedPipingProfilePropertyCalculator.Calculated);
            Assert.IsFalse(testPipingSubCalculatorFactory.LastCreatedPiezometricHeadAtExitCalculator.Calculated);
            Assert.IsFalse(testPipingSubCalculatorFactory.LastCreatedEffectiveThicknessCalculator.Calculated);
        }
Exemplo n.º 23
0
        public void Constructor_WithConstructionProperties_PropertiesAreSet()
        {
            // Setup
            var random = new Random(22);

            double volumetricWeightOfWaterValue          = random.NextDouble();
            double saturatedVolumicWeightOfCoverageLayer = random.NextDouble();
            double modelFactorUpliftValue = random.NextDouble();
            double hRiverValue            = random.NextDouble();
            double phiExit     = random.NextDouble();
            double rExitValue  = random.NextDouble();
            double hExitValue  = random.NextDouble();
            double ichValue    = random.NextDouble();
            double dTotalValue = random.NextDouble();
            double effectiveThicknessCoverageLayerValue = random.NextDouble();
            double sellmeijerModelFactorValue           = random.NextDouble();
            double reductionFactorValue            = random.NextDouble();
            double seepageLengthValue              = random.NextDouble();
            double sandParticlesVolumicWeightValue = random.NextDouble();
            double whitesDragCoefficientValue      = random.NextDouble();
            double diameter70Value              = random.NextDouble();
            double darcyPermeabilityValue       = random.NextDouble();
            double waterKinematicViscosityValue = random.NextDouble();
            double gravityValue = random.NextDouble();
            double thicknessAquiferLayerValue = random.NextDouble();
            double meanDiameter70Value        = random.NextDouble();
            double beddingAngleValue          = random.NextDouble();
            double exitPointXCoordinate       = random.NextDouble();
            var    surfaceLine = new PipingSurfaceLine(string.Empty);
            var    soilProfile = new PipingSoilProfile(string.Empty, random.NextDouble(), new[]
            {
                new PipingSoilLayer(random.NextDouble())
                {
                    IsAquifer = true
                }
            }, SoilProfileType.SoilProfile1D);

            // Call
            var input = new PipingCalculatorInput(
                new PipingCalculatorInput.ConstructionProperties
            {
                WaterVolumetricWeight = volumetricWeightOfWaterValue,
                SaturatedVolumicWeightOfCoverageLayer = saturatedVolumicWeightOfCoverageLayer,
                UpliftModelFactor               = modelFactorUpliftValue,
                AssessmentLevel                 = hRiverValue,
                PiezometricHeadExit             = phiExit,
                DampingFactorExit               = rExitValue,
                PhreaticLevelExit               = hExitValue,
                CriticalHeaveGradient           = ichValue,
                ThicknessCoverageLayer          = dTotalValue,
                EffectiveThicknessCoverageLayer = effectiveThicknessCoverageLayerValue,
                SellmeijerModelFactor           = sellmeijerModelFactorValue,
                SellmeijerReductionFactor       = reductionFactorValue,
                SeepageLength = seepageLengthValue,
                SandParticlesVolumicWeight = sandParticlesVolumicWeightValue,
                WhitesDragCoefficient      = whitesDragCoefficientValue,
                Diameter70              = diameter70Value,
                DarcyPermeability       = darcyPermeabilityValue,
                WaterKinematicViscosity = waterKinematicViscosityValue,
                Gravity = gravityValue,
                ThicknessAquiferLayer = thicknessAquiferLayerValue,
                MeanDiameter70        = meanDiameter70Value,
                BeddingAngle          = beddingAngleValue,
                ExitPointXCoordinate  = exitPointXCoordinate,
                SurfaceLine           = surfaceLine,
                SoilProfile           = soilProfile
            });

            // Assert
            Assert.AreEqual(volumetricWeightOfWaterValue, input.WaterVolumetricWeight);
            Assert.AreEqual(saturatedVolumicWeightOfCoverageLayer, input.SaturatedVolumicWeightOfCoverageLayer);
            Assert.AreEqual(modelFactorUpliftValue, input.UpliftModelFactor);
            Assert.AreEqual(hRiverValue, input.AssessmentLevel);
            Assert.AreEqual(phiExit, input.PiezometricHeadExit);
            Assert.AreEqual(rExitValue, input.DampingFactorExit);
            Assert.AreEqual(hExitValue, input.PhreaticLevelExit);
            Assert.AreEqual(ichValue, input.CriticalHeaveGradient);
            Assert.AreEqual(dTotalValue, input.ThicknessCoverageLayer);
            Assert.AreEqual(effectiveThicknessCoverageLayerValue, input.EffectiveThicknessCoverageLayer);
            Assert.AreEqual(sellmeijerModelFactorValue, input.SellmeijerModelFactor);
            Assert.AreEqual(reductionFactorValue, input.SellmeijerReductionFactor);
            Assert.AreEqual(seepageLengthValue, input.SeepageLength);
            Assert.AreEqual(sandParticlesVolumicWeightValue, input.SandParticlesVolumicWeight);
            Assert.AreEqual(whitesDragCoefficientValue, input.WhitesDragCoefficient);
            Assert.AreEqual(diameter70Value, input.Diameter70);
            Assert.AreEqual(darcyPermeabilityValue, input.DarcyPermeability);
            Assert.AreEqual(waterKinematicViscosityValue, input.WaterKinematicViscosity);
            Assert.AreEqual(gravityValue, input.Gravity);
            Assert.AreEqual(thicknessAquiferLayerValue, input.ThicknessAquiferLayer);
            Assert.AreEqual(meanDiameter70Value, input.MeanDiameter70);
            Assert.AreEqual(beddingAngleValue, input.BeddingAngle);
            Assert.AreEqual(exitPointXCoordinate, input.ExitPointXCoordinate);
            Assert.AreSame(surfaceLine, input.SurfaceLine);
            Assert.AreSame(soilProfile, input.SoilProfile);
        }