public void Constructor_WithSoilLayerData_ExpectedValues()
        {
            // Setup
            var soilLayerData = new MacroStabilityInwardsSoilLayerData
            {
                MaterialName       = "Sand",
                Color              = Color.Black,
                IsAquifer          = true,
                AbovePhreaticLevel = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)1.0,
                    Mean  = (RoundedDouble)1.0,
                    Shift = (RoundedDouble)0.5
                },
                BelowPhreaticLevel = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)2.0,
                    Mean  = (RoundedDouble)2.0,
                    Shift = (RoundedDouble)1.0
                },
                ShearStrengthModel = MacroStabilityInwardsShearStrengthModel.CPhi,
                ShearStrengthRatio = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)3.0,
                    Mean = (RoundedDouble)3.0
                },
                Cohesion = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)4.0,
                    Mean = (RoundedDouble)4.0
                },
                FrictionAngle = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)5.0,
                    Mean = (RoundedDouble)5.0
                },
                StrengthIncreaseExponent = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)6.0,
                    Mean = (RoundedDouble)6.0
                },
                UsePop = true,
                Pop    = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)7.0,
                    Mean = (RoundedDouble)7.0
                }
            };

            // Call
            var formattedSoilLayerDataRow = new MacroStabilityInwardsFormattedSoilLayerDataRow(soilLayerData);

            // Assert
            TestHelper.AssertTypeConverter <MacroStabilityInwardsFormattedSoilLayerDataRow, EnumTypeConverter>(
                nameof(MacroStabilityInwardsFormattedSoilLayerDataRow.ShearStrengthModel));

            Assert.AreEqual(soilLayerData.MaterialName, formattedSoilLayerDataRow.MaterialName);
            Assert.AreEqual(soilLayerData.Color, formattedSoilLayerDataRow.Color);
            Assert.AreEqual(soilLayerData.IsAquifer, formattedSoilLayerDataRow.IsAquifer);
            Assert.AreEqual("1,00 (Verwachtingswaarde = 1,00, Variatiecoëfficiënt = 1,00, Verschuiving = 0,50)", formattedSoilLayerDataRow.AbovePhreaticLevel);
            Assert.AreEqual("2,00 (Verwachtingswaarde = 2,00, Variatiecoëfficiënt = 2,00, Verschuiving = 1,00)", formattedSoilLayerDataRow.BelowPhreaticLevel);
            Assert.AreEqual(soilLayerData.ShearStrengthModel, formattedSoilLayerDataRow.ShearStrengthModel);
            Assert.AreEqual("0,08 (Verwachtingswaarde = 3,00, Variatiecoëfficiënt = 3,00)", formattedSoilLayerDataRow.ShearStrengthRatio);
            Assert.AreEqual("0,06 (Verwachtingswaarde = 4,00, Variatiecoëfficiënt = 4,00)", formattedSoilLayerDataRow.Cohesion);
            Assert.AreEqual("0,05 (Verwachtingswaarde = 5,00, Variatiecoëfficiënt = 5,00)", formattedSoilLayerDataRow.FrictionAngle);
            Assert.AreEqual("0,04 (Verwachtingswaarde = 6,00, Variatiecoëfficiënt = 6,00)", formattedSoilLayerDataRow.StrengthIncreaseExponent);
            Assert.AreEqual(soilLayerData.UsePop, formattedSoilLayerDataRow.UsePop);
            Assert.AreEqual("0,04 (Verwachtingswaarde = 7,00, Variatiecoëfficiënt = 7,00)", formattedSoilLayerDataRow.Pop);
        }
        public void Constructor_WithSoilLayerDataEmptyAndNaN_ExpectedValues()
        {
            // Setup
            var soilLayerData = new MacroStabilityInwardsSoilLayerData
            {
                MaterialName       = string.Empty,
                Color              = Color.Empty,
                IsAquifer          = true,
                AbovePhreaticLevel = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)double.NaN,
                    Mean = (RoundedDouble)double.NaN
                },
                BelowPhreaticLevel = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)double.NaN,
                    Mean = (RoundedDouble)double.NaN
                },
                ShearStrengthModel = MacroStabilityInwardsShearStrengthModel.CPhi,
                ShearStrengthRatio = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)double.NaN,
                    Mean = (RoundedDouble)double.NaN
                },
                Cohesion = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)double.NaN,
                    Mean = (RoundedDouble)double.NaN
                },
                FrictionAngle = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)double.NaN,
                    Mean = (RoundedDouble)double.NaN
                },
                StrengthIncreaseExponent = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)double.NaN,
                    Mean = (RoundedDouble)double.NaN
                },
                UsePop = true,
                Pop    = new VariationCoefficientLogNormalDistribution
                {
                    CoefficientOfVariation = (RoundedDouble)double.NaN,
                    Mean = (RoundedDouble)double.NaN
                }
            };

            // Call
            var formattedSoilLayerDataRow = new MacroStabilityInwardsFormattedSoilLayerDataRow(soilLayerData);

            // Assert
            TestHelper.AssertTypeConverter <MacroStabilityInwardsFormattedSoilLayerDataRow, EnumTypeConverter>(
                nameof(MacroStabilityInwardsFormattedSoilLayerDataRow.ShearStrengthModel));

            Assert.AreEqual("Onbekend", formattedSoilLayerDataRow.MaterialName);
            Assert.AreEqual(Color.White, formattedSoilLayerDataRow.Color);
            Assert.AreEqual(soilLayerData.IsAquifer, formattedSoilLayerDataRow.IsAquifer);
            Assert.AreEqual("NaN", formattedSoilLayerDataRow.AbovePhreaticLevel);
            Assert.AreEqual("NaN", formattedSoilLayerDataRow.BelowPhreaticLevel);
            Assert.AreEqual(soilLayerData.ShearStrengthModel, formattedSoilLayerDataRow.ShearStrengthModel);
            Assert.AreEqual("NaN", formattedSoilLayerDataRow.ShearStrengthRatio);
            Assert.AreEqual("NaN", formattedSoilLayerDataRow.Cohesion);
            Assert.AreEqual("NaN", formattedSoilLayerDataRow.FrictionAngle);
            Assert.AreEqual("NaN", formattedSoilLayerDataRow.StrengthIncreaseExponent);
            Assert.AreEqual(soilLayerData.UsePop, formattedSoilLayerDataRow.UsePop);
            Assert.AreEqual("NaN", formattedSoilLayerDataRow.Pop);
        }