Example #1
0
        public void DynamicReadOnlyValidationMethod_DrainageConstructionPresent_DependsOnSoilScenario(
            [Values(true, false)] bool drainageConstructionPresent,
            [Values(MacroStabilityInwardsDikeSoilScenario.ClayDikeOnSand,
                    MacroStabilityInwardsDikeSoilScenario.ClayDikeOnClay,
                    MacroStabilityInwardsDikeSoilScenario.SandDikeOnSand,
                    MacroStabilityInwardsDikeSoilScenario.SandDikeOnClay)]
            MacroStabilityInwardsDikeSoilScenario soilScenario)
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.Stub <IObservablePropertyChangeHandler>();

            mocks.ReplayAll();

            var input = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties())
            {
                DrainageConstructionPresent = drainageConstructionPresent,
                DikeSoilScenario            = soilScenario
            };

            var properties = new MacroStabilityInwardsDrainageProperties(input, handler);

            // Call
            bool result = properties.DynamicReadOnlyValidationMethod(nameof(properties.DrainageConstructionPresent));

            // Assert
            bool isClayDike = input.DikeSoilScenario == MacroStabilityInwardsDikeSoilScenario.ClayDikeOnClay ||
                              input.DikeSoilScenario == MacroStabilityInwardsDikeSoilScenario.ClayDikeOnSand;

            Assert.AreEqual(isClayDike, result);
        }
        /// <summary>
        /// Converts a <see cref="MacroStabilityInwardsDikeSoilScenario"/> into a <see cref="DikeSoilScenario"/>.
        /// </summary>
        /// <param name="dikeSoilScenario">The <see cref="MacroStabilityInwardsDikeSoilScenario"/> to convert.</param>
        /// <returns>A <see cref="DikeSoilScenario"/> based on <paramref name="dikeSoilScenario"/>.</returns>
        /// <exception cref="InvalidEnumArgumentException">Thrown when <paramref name="dikeSoilScenario"/>
        /// is an invalid value.</exception>
        /// <exception cref="NotSupportedException">Thrown when <paramref name="dikeSoilScenario"/>
        /// is a valid value, but unsupported.</exception>
        public static DikeSoilScenario ConvertDikeSoilScenario(MacroStabilityInwardsDikeSoilScenario dikeSoilScenario)
        {
            if (!Enum.IsDefined(typeof(MacroStabilityInwardsDikeSoilScenario), dikeSoilScenario))
            {
                throw new InvalidEnumArgumentException(nameof(dikeSoilScenario),
                                                       (int)dikeSoilScenario,
                                                       typeof(MacroStabilityInwardsDikeSoilScenario));
            }

            switch (dikeSoilScenario)
            {
            case MacroStabilityInwardsDikeSoilScenario.ClayDikeOnClay:
                return(DikeSoilScenario.ClayDikeOnClay);

            case MacroStabilityInwardsDikeSoilScenario.SandDikeOnClay:
                return(DikeSoilScenario.SandDikeOnClay);

            case MacroStabilityInwardsDikeSoilScenario.ClayDikeOnSand:
                return(DikeSoilScenario.ClayDikeOnSand);

            case MacroStabilityInwardsDikeSoilScenario.SandDikeOnSand:
                return(DikeSoilScenario.SandDikeOnSand);

            default:
                throw new NotSupportedException();
            }
        }
Example #3
0
        public void ConvertDikeSoilScenario_ValidDikeSoilScenario_ReturnExpectedDikeSoilScenario(
            MacroStabilityInwardsDikeSoilScenario macroStabilityInwardsDikeSoilScenario,
            DikeSoilScenario expectedDikeSoilScenario)
        {
            // Call
            DikeSoilScenario convertedDikeSoilScenario = WaternetCreatorInputHelper.ConvertDikeSoilScenario(macroStabilityInwardsDikeSoilScenario);

            // Assert
            Assert.AreEqual(expectedDikeSoilScenario, convertedDikeSoilScenario);
        }
Example #4
0
        public void ConvertDikeSoilScenario_InvalidDikeSoilScenario_ThrowInvalidEnumArgumentException()
        {
            // Setup
            const MacroStabilityInwardsDikeSoilScenario dikeSoilScenario = (MacroStabilityInwardsDikeSoilScenario)99;

            // Call
            void Call() => WaternetCreatorInputHelper.ConvertDikeSoilScenario(dikeSoilScenario);

            // Assert
            string message = $"The value of argument 'dikeSoilScenario' ({dikeSoilScenario}) is invalid for Enum type '{nameof(MacroStabilityInwardsDikeSoilScenario)}'.";

            TestHelper.AssertThrowsArgumentExceptionAndTestMessage <InvalidEnumArgumentException>(Call, message);
        }
        public void ConvertFrom_InvalidMacroStabilityInwardsDikeSoilScenario_ThrowsInvalidEnumArgumentException()
        {
            // Setup
            const MacroStabilityInwardsDikeSoilScenario invalidValue = (MacroStabilityInwardsDikeSoilScenario)9999;
            var converter = new ConfigurationDikeSoilScenarioTypeConverter();

            // Call
            TestDelegate call = () => converter.ConvertFrom(invalidValue);

            // Assert
            string expectedMessage = $"The value of argument 'value' ({invalidValue}) is invalid for Enum type '{nameof(MacroStabilityInwardsDikeSoilScenario)}'.";
            string parameterName   = TestHelper.AssertThrowsArgumentExceptionAndTestMessage <InvalidEnumArgumentException>(call, expectedMessage).ParamName;

            Assert.AreEqual("value", parameterName);
        }
Example #6
0
        public void DynamicReadOnlyValidationMethod_GivenDikeSoilScenario_ReturnsExpectedReadOnly(
            MacroStabilityInwardsDikeSoilScenario dikeSoilScenario, bool expectedReadOnly)
        {
            // Setup
            var calculation = new MacroStabilityInwardsCalculationScenario
            {
                InputParameters =
                {
                    DikeSoilScenario = dikeSoilScenario
                }
            };

            var handler    = new ObservablePropertyChangeHandler(calculation, calculation.InputParameters);
            var properties = new MacroStabilityInwardsLocationInputExtremeProperties(calculation.InputParameters, handler);

            // Call & Assert
            Assert.AreEqual(expectedReadOnly, properties.DynamicReadOnlyValidationMethod(nameof(MacroStabilityInwardsLocationInputExtremeProperties.PenetrationLength)));
        }
        /// <summary>
        /// Gets the <see cref="PersistableEmbankmentSoilScenario"/> based on the <paramref name="dikeSoilScenario"/>.
        /// </summary>
        /// <param name="dikeSoilScenario">The <see cref="MacroStabilityInwardsDikeSoilScenario"/>
        /// to get the <see cref="PersistableEmbankmentSoilScenario"/> for.</param>
        /// <returns>The <see cref="PersistableEmbankmentSoilScenario"/>.</returns>
        /// <exception cref="NotSupportedException">Thrown when <paramref name="dikeSoilScenario"/>
        /// has an unsupported value.</exception>
        public static PersistableEmbankmentSoilScenario GetEmbankmentSoilScenario(MacroStabilityInwardsDikeSoilScenario dikeSoilScenario)
        {
            switch (dikeSoilScenario)
            {
            case MacroStabilityInwardsDikeSoilScenario.ClayDikeOnClay:
                return(PersistableEmbankmentSoilScenario.ClayEmbankmentOnClay);

            case MacroStabilityInwardsDikeSoilScenario.SandDikeOnClay:
                return(PersistableEmbankmentSoilScenario.SandEmbankmentOnClay);

            case MacroStabilityInwardsDikeSoilScenario.ClayDikeOnSand:
                return(PersistableEmbankmentSoilScenario.ClayEmbankmentOnSand);

            case MacroStabilityInwardsDikeSoilScenario.SandDikeOnSand:
                return(PersistableEmbankmentSoilScenario.SandEmbankmentOnSand);

            default:
                throw new NotSupportedException();
            }
        }
Example #8
0
        public void Create_ValidDikeSoilScenario_ReturnInputWithDikeSoilScenario(MacroStabilityInwardsDikeSoilScenario macroStabilityInwardsDikeSoilScenario,
                                                                                 DikeSoilScenario expectedDikeSoilScenario)
        {
            // Setup
            var input = new WaternetCalculatorInput(
                new WaternetCalculatorInput.ConstructionProperties
            {
                DrainageConstruction = new DrainageConstruction(),
                PhreaticLineOffsets  = new PhreaticLineOffsets(),
                SurfaceLine          = new MacroStabilityInwardsSurfaceLine("test"),
                SoilProfile          = new TestSoilProfile(),
                DikeSoilScenario     = macroStabilityInwardsDikeSoilScenario
            });

            // Call
            WaternetCreatorInput waternetCreatorInput = WaternetCreatorInputCreator.Create(input);

            // Assert
            Assert.AreEqual(expectedDikeSoilScenario, waternetCreatorInput.DikeSoilScenario);
        }
Example #9
0
        public void Convert_ClayDikeAndDrainageConstructionPresentTrue_ReturnDrainageConstruction(MacroStabilityInwardsDikeSoilScenario soilScenario)
        {
            // Setup
            var random = new Random(21);
            var input  = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties())
            {
                DrainageConstructionPresent     = true,
                XCoordinateDrainageConstruction = random.NextRoundedDouble(),
                ZCoordinateDrainageConstruction = random.NextRoundedDouble(),
                DikeSoilScenario = soilScenario
            };

            // Call
            DrainageConstruction drainageConstruction = DrainageConstructionConverter.Convert(input);

            // Assert
            Assert.IsFalse(drainageConstruction.IsPresent);
            Assert.IsNaN(drainageConstruction.XCoordinate);
            Assert.IsNaN(drainageConstruction.ZCoordinate);
        }
Example #10
0
        public void DynamicReadOnlyValidationMethod_OtherDikeSoilScenario_ReturnsExpectedReadOnly(MacroStabilityInwardsDikeSoilScenario dikeSoilScenario)
        {
            // Setup
            var mocks = new MockRepository();
            var propertyChangeHandler = mocks.Stub <IObservablePropertyChangeHandler>();

            mocks.ReplayAll();

            var input = new MacroStabilityInwardsInput(new MacroStabilityInwardsInput.ConstructionProperties())
            {
                DikeSoilScenario = dikeSoilScenario
            };
            var properties = new MacroStabilityInwardsWaterStressesProperties(input,
                                                                              new GeneralMacroStabilityInwardsInput(),
                                                                              AssessmentSectionTestHelper.GetTestAssessmentLevel(),
                                                                              propertyChangeHandler);

            // Call & Assert
            Assert.IsFalse(properties.DynamicReadOnlyValidationMethod(nameof(MacroStabilityInwardsWaterStressesProperties.AdjustPhreaticLine3And4ForUplift)));
            Assert.IsFalse(properties.DynamicReadOnlyValidationMethod(nameof(MacroStabilityInwardsWaterStressesProperties.LeakageLengthInwardsPhreaticLine3)));
            Assert.IsFalse(properties.DynamicReadOnlyValidationMethod(nameof(MacroStabilityInwardsWaterStressesProperties.LeakageLengthOutwardsPhreaticLine3)));
            Assert.IsFalse(properties.DynamicReadOnlyValidationMethod(nameof(MacroStabilityInwardsWaterStressesProperties.LeakageLengthInwardsPhreaticLine4)));
            Assert.IsFalse(properties.DynamicReadOnlyValidationMethod(nameof(MacroStabilityInwardsWaterStressesProperties.LeakageLengthOutwardsPhreaticLine4)));
            Assert.IsFalse(properties.DynamicReadOnlyValidationMethod(nameof(MacroStabilityInwardsWaterStressesProperties.PiezometricHeadPhreaticLine2Inwards)));
            Assert.IsFalse(properties.DynamicReadOnlyValidationMethod(nameof(MacroStabilityInwardsWaterStressesProperties.PiezometricHeadPhreaticLine2Outwards)));
            Assert.IsFalse(properties.DynamicReadOnlyValidationMethod(nameof(MacroStabilityInwardsWaterStressesProperties.WaterLevelRiverAverage)));
            Assert.IsFalse(properties.DynamicReadOnlyValidationMethod(nameof(MacroStabilityInwardsWaterStressesProperties.MinimumLevelPhreaticLineAtDikeTopPolder)));
            Assert.IsFalse(properties.DynamicReadOnlyValidationMethod(nameof(MacroStabilityInwardsWaterStressesProperties.MinimumLevelPhreaticLineAtDikeTopRiver)));
        }
Example #11
0
        /// <summary>
        /// Creates the <see cref="PersistableEmbankmentSoilScenario"/>.
        /// </summary>
        /// <param name="dikeSoilScenario">The <see cref="MacroStabilityInwardsDikeSoilScenario"/>
        /// to create the <see cref="PersistableEmbankmentSoilScenario"/> for.</param>
        /// <returns>The created <see cref="PersistableEmbankmentSoilScenario"/>.</returns>
        /// <exception cref="InvalidEnumArgumentException">Thrown when <paramref name="dikeSoilScenario"/>
        /// has an invalid value for <see cref="MacroStabilityInwardsDikeSoilScenario"/>.</exception>
        /// <exception cref="NotSupportedException">Thrown when <paramref name="dikeSoilScenario"/>
        /// is not supported.</exception>
        private static PersistableEmbankmentSoilScenario CreateEmbankmentSoilScenario(MacroStabilityInwardsDikeSoilScenario dikeSoilScenario)
        {
            if (!Enum.IsDefined(typeof(MacroStabilityInwardsDikeSoilScenario), dikeSoilScenario))
            {
                throw new InvalidEnumArgumentException(nameof(dikeSoilScenario),
                                                       (int)dikeSoilScenario,
                                                       typeof(MacroStabilityInwardsDikeSoilScenario));
            }

            switch (dikeSoilScenario)
            {
            case MacroStabilityInwardsDikeSoilScenario.ClayDikeOnClay:
                return(PersistableEmbankmentSoilScenario.ClayEmbankmentOnClay);

            case MacroStabilityInwardsDikeSoilScenario.SandDikeOnClay:
                return(PersistableEmbankmentSoilScenario.SandEmbankmentOnClay);

            case MacroStabilityInwardsDikeSoilScenario.ClayDikeOnSand:
                return(PersistableEmbankmentSoilScenario.ClayEmbankmentOnSand);

            case MacroStabilityInwardsDikeSoilScenario.SandDikeOnSand:
                return(PersistableEmbankmentSoilScenario.SandEmbankmentOnSand);

            default:
                throw new NotSupportedException();
            }
        }
        public void Create_WithDifferentDikeSoilScenarios_ReturnsPersistableWaternetCreatorSettingsCollection(MacroStabilityInwardsDikeSoilScenario soilScenario)
        {
            // Setup
            MacroStabilityInwardsCalculationScenario calculation = MacroStabilityInwardsCalculationScenarioTestFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(
                new TestHydraulicBoundaryLocation());
            MacroStabilityInwardsInput input = calculation.InputParameters;

            input.DikeSoilScenario = soilScenario;

            var idFactory = new IdFactory();
            var registry  = new MacroStabilityInwardsExportRegistry();

            PersistableGeometryFactory.Create(input.SoilProfileUnderSurfaceLine, idFactory, registry);

            // Call
            IEnumerable <PersistableWaternetCreatorSettings> waternetCreatorSettingsCollection = PersistableWaternetCreatorSettingsFactory.Create(
                input, RoundedDouble.NaN, idFactory, registry);

            // Assert
            foreach (PersistableWaternetCreatorSettings waternetCreatorSettings in waternetCreatorSettingsCollection)
            {
                Assert.AreEqual(PersistableDataModelTestHelper.GetEmbankmentSoilScenario(input.DikeSoilScenario), waternetCreatorSettings.EmbankmentSoilScenario);
            }
        }