Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/MacroStabilityInwards/MacroStabilityInwardsPreconsolidationStressEntityReadExtensionsTest.cs =================================================================== diff -u -reae3622163e0c8bdfc32f73eda6f5bd8d3b02484 -r49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/MacroStabilityInwards/MacroStabilityInwardsPreconsolidationStressEntityReadExtensionsTest.cs (.../MacroStabilityInwardsPreconsolidationStressEntityReadExtensionsTest.cs) (revision eae3622163e0c8bdfc32f73eda6f5bd8d3b02484) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/MacroStabilityInwards/MacroStabilityInwardsPreconsolidationStressEntityReadExtensionsTest.cs (.../MacroStabilityInwardsPreconsolidationStressEntityReadExtensionsTest.cs) (revision 49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0) @@ -61,8 +61,8 @@ // Assert Assert.IsNotNull(stress); - Assert.AreEqual(entity.CoordinateX, stress.XCoordinate); - Assert.AreEqual(entity.CoordinateZ, stress.ZCoordinate); + Assert.AreEqual(entity.CoordinateX, stress.XCoordinate, stress.XCoordinate.GetAccuracy()); + Assert.AreEqual(entity.CoordinateZ, stress.ZCoordinate, stress.ZCoordinate.GetAccuracy()); VariationCoefficientLogNormalDistribution preconsolidationStressDistribution = stress.PreconsolidationStress; Assert.AreEqual(entity.PreconsolidationStressMean, preconsolidationStressDistribution.Mean, Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsPreconsolidationStressProperties.cs =================================================================== diff -u -reae3622163e0c8bdfc32f73eda6f5bd8d3b02484 -r49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsPreconsolidationStressProperties.cs (.../MacroStabilityInwardsPreconsolidationStressProperties.cs) (revision eae3622163e0c8bdfc32f73eda6f5bd8d3b02484) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsPreconsolidationStressProperties.cs (.../MacroStabilityInwardsPreconsolidationStressProperties.cs) (revision 49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0) @@ -61,7 +61,7 @@ { get { - return new RoundedDouble(2, data.XCoordinate); + return data.XCoordinate; } } @@ -72,7 +72,7 @@ { get { - return new RoundedDouble(2, data.ZCoordinate); + return data.ZCoordinate; } } Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Primitives/MacroStabilityInwardsPreconsolidationStress.cs =================================================================== diff -u -re64377104810125b438aaf229d489a76debca60d -r49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Primitives/MacroStabilityInwardsPreconsolidationStress.cs (.../MacroStabilityInwardsPreconsolidationStress.cs) (revision e64377104810125b438aaf229d489a76debca60d) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Primitives/MacroStabilityInwardsPreconsolidationStress.cs (.../MacroStabilityInwardsPreconsolidationStress.cs) (revision 49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0) @@ -42,6 +42,11 @@ /// The coefficient of /// variation of the stochastic distribution for the preconsolidation stress. /// Thrown when any of the parameters are . + /// Thrown when: + /// + /// is less than or equal to 0. + /// is less than 0. + /// public MacroStabilityInwardsPreconsolidationStress(double xCoordinate, double zCoordinate, double preconsolidationStressMean, @@ -52,8 +57,8 @@ ValidateParameter(preconsolidationStressMean, Resources.MacroStabilityInwardsPreconsolidationStress_PreconsolidationStressMean_ParameterName); ValidateParameter(preconsolidationStressCoefficientOfVariation, Resources.MacroStabilityInwardsPreconsolidationStress_PreconsolidationStressCoefficientOfVariation_ParameterName); - XCoordinate = xCoordinate; - ZCoordinate = zCoordinate; + XCoordinate = new RoundedDouble(2, xCoordinate); + ZCoordinate = new RoundedDouble(2, zCoordinate); PreconsolidationStress = new VariationCoefficientLogNormalDistribution(2) { @@ -66,13 +71,13 @@ /// Gets the value representing the X coordinate of the preconsolidation stress location. /// [m] /// - public double XCoordinate { get; } + public RoundedDouble XCoordinate { get; } /// /// Gets the value representing the Z coordinate of the preconsolidation stress location. /// [m] /// - public double ZCoordinate { get; } + public RoundedDouble ZCoordinate { get; } /// /// Gets the distribution for the preconsolidation stress. Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Primitives/MacroStabilityInwardsSoilUnderSurfaceLine/MacroStabilityInwardsPreconsolidationStressUnderSurfaceLine.cs =================================================================== diff -u -r388ce371afb320cab772545f0292d1954fdc38ef -r49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Primitives/MacroStabilityInwardsSoilUnderSurfaceLine/MacroStabilityInwardsPreconsolidationStressUnderSurfaceLine.cs (.../MacroStabilityInwardsPreconsolidationStressUnderSurfaceLine.cs) (revision 388ce371afb320cab772545f0292d1954fdc38ef) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Primitives/MacroStabilityInwardsSoilUnderSurfaceLine/MacroStabilityInwardsPreconsolidationStressUnderSurfaceLine.cs (.../MacroStabilityInwardsPreconsolidationStressUnderSurfaceLine.cs) (revision 49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0) @@ -36,6 +36,12 @@ /// The object containing the value for the properties of /// the new . /// Thrown when is null. + /// Thrown when: + /// + /// is less than or equal to 0. + /// is less than 0. + /// + /// public MacroStabilityInwardsPreconsolidationStressUnderSurfaceLine(ConstructionProperties properties) { if (properties == null) @@ -52,30 +58,27 @@ }; } - /// /// Gets the value representing the X coordinate of the preconsolidation stress location. /// [m] /// public double XCoordinate { get; } - /// /// Gets the value representing the Z coordinate of the preconsolidation stress location. /// [m] /// public double ZCoordinate { get; } - /// /// Gets the preconsolidation stress distribution. - /// [kN/m³] + /// [kN/m²] /// public VariationCoefficientLogNormalDistribution PreconsolidationStress { get; } /// /// Gets or sets the preconsolidation stress distribution design variable. - /// [kN/m³] + /// [kN/m²] /// public RoundedDouble PreconsolidationStressDesignVariable { get; set; } = RoundedDouble.NaN; @@ -99,13 +102,13 @@ /// /// Gets or sets the mean of the preconsolidation stress distribution. - /// [kN/m³] + /// [kN/m²] /// public double PreconsolidationStressMean { get; set; } = double.NaN; /// /// Gets or sets the coefficient of variation of the preconsolidation stress distribution. - /// [kN/m³] + /// [kN/m²] /// public double PreconsolidationStressCoefficientOfVariation { get; set; } = double.NaN; } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/PropertyClasses/MacroStabilityInwardsPreconsolidationStressPropertiesTest.cs =================================================================== diff -u -reae3622163e0c8bdfc32f73eda6f5bd8d3b02484 -r49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/PropertyClasses/MacroStabilityInwardsPreconsolidationStressPropertiesTest.cs (.../MacroStabilityInwardsPreconsolidationStressPropertiesTest.cs) (revision eae3622163e0c8bdfc32f73eda6f5bd8d3b02484) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/PropertyClasses/MacroStabilityInwardsPreconsolidationStressPropertiesTest.cs (.../MacroStabilityInwardsPreconsolidationStressPropertiesTest.cs) (revision 49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0) @@ -63,9 +63,7 @@ Assert.IsInstanceOf>(properties); Assert.AreSame(stress, properties.Data); - Assert.AreEqual(2, properties.XCoordinate.NumberOfDecimalPlaces); Assert.AreEqual(stress.XCoordinate, properties.XCoordinate, properties.XCoordinate.GetAccuracy()); - Assert.AreEqual(2, properties.ZCoordinate.NumberOfDecimalPlaces); Assert.AreEqual(stress.ZCoordinate, properties.ZCoordinate, properties.ZCoordinate.GetAccuracy()); Assert.IsInstanceOf(properties.PreconsolidationStress); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsPreconsolidationStressTransformerTest.cs =================================================================== diff -u -rc55a333c4b0d017ec75a2f8afb8d2f621361c668 -r49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsPreconsolidationStressTransformerTest.cs (.../MacroStabilityInwardsPreconsolidationStressTransformerTest.cs) (revision c55a333c4b0d017ec75a2f8afb8d2f621361c668) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsPreconsolidationStressTransformerTest.cs (.../MacroStabilityInwardsPreconsolidationStressTransformerTest.cs) (revision 49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0) @@ -65,8 +65,10 @@ MacroStabilityInwardsPreconsolidationStressTransformer.Transform(preconsolidationStress); // Assert - Assert.AreEqual(preconsolidationStress.XCoordinate, transformedStress.XCoordinate); - Assert.AreEqual(preconsolidationStress.ZCoordinate, transformedStress.ZCoordinate); + Assert.AreEqual(preconsolidationStress.XCoordinate, transformedStress.XCoordinate, + transformedStress.XCoordinate.GetAccuracy()); + Assert.AreEqual(preconsolidationStress.ZCoordinate, transformedStress.ZCoordinate, + transformedStress.ZCoordinate.GetAccuracy()); VariationCoefficientLogNormalDistribution transformedPreconsolidationStressDistribution = transformedStress.PreconsolidationStress; Assert.AreEqual(preconsolidationStress.PreconsolidationStressMean, transformedPreconsolidationStressDistribution.Mean, @@ -170,28 +172,28 @@ ZCoordinate = zCoordinate, PreconsolidationStressMean = preconsolidationStressMean, PreconsolidationStressCoefficientOfVariation = preconsolidationStressCoefficientOfVariation - }, "X-coördinaat").SetName("Invalid XCoordinate"); + }, "X-coördinaat").SetName("XCoordinate NaN"); yield return new TestCaseData(new PreconsolidationStress { XCoordinate = xCoordinate, ZCoordinate = double.NaN, PreconsolidationStressMean = preconsolidationStressMean, PreconsolidationStressCoefficientOfVariation = preconsolidationStressCoefficientOfVariation - }, "Z-coördinaat").SetName("Invalid ZCoordinate"); + }, "Z-coördinaat").SetName("ZCoordinate NaN"); yield return new TestCaseData(new PreconsolidationStress { XCoordinate = xCoordinate, ZCoordinate = zCoordinate, PreconsolidationStressMean = double.NaN, PreconsolidationStressCoefficientOfVariation = preconsolidationStressCoefficientOfVariation - }, "gemiddelde").SetName("Invalid Mean"); + }, "gemiddelde").SetName("Mean NaN"); yield return new TestCaseData(new PreconsolidationStress { XCoordinate = xCoordinate, ZCoordinate = zCoordinate, PreconsolidationStressMean = preconsolidationStressMean, PreconsolidationStressCoefficientOfVariation = double.NaN - }, "variatiecoëfficient").SetName("Invalid Coefficient of Variation"); + }, "variatiecoëfficient").SetName("Coefficient of Variation NaN"); } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsSoilProfileTransformerTest.cs =================================================================== diff -u -reae3622163e0c8bdfc32f73eda6f5bd8d3b02484 -r49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsSoilProfileTransformerTest.cs (.../MacroStabilityInwardsSoilProfileTransformerTest.cs) (revision eae3622163e0c8bdfc32f73eda6f5bd8d3b02484) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsSoilProfileTransformerTest.cs (.../MacroStabilityInwardsSoilProfileTransformerTest.cs) (revision 49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0) @@ -139,9 +139,11 @@ MacroStabilityInwardsPreconsolidationStress transformedPreconsolidationStress) { Assert.AreEqual(preconsolidationStress.XCoordinate, - transformedPreconsolidationStress.XCoordinate); + transformedPreconsolidationStress.XCoordinate, + transformedPreconsolidationStress.XCoordinate.GetAccuracy()); Assert.AreEqual(preconsolidationStress.ZCoordinate, - transformedPreconsolidationStress.ZCoordinate); + transformedPreconsolidationStress.ZCoordinate, + transformedPreconsolidationStress.ZCoordinate.GetAccuracy()); DistributionAssert.AreEqual(new VariationCoefficientLogNormalDistribution(2) { Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.Test/MacroStabilityInwardsPreconsolidationStressTest.cs =================================================================== diff -u -re64377104810125b438aaf229d489a76debca60d -r49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.Test/MacroStabilityInwardsPreconsolidationStressTest.cs (.../MacroStabilityInwardsPreconsolidationStressTest.cs) (revision e64377104810125b438aaf229d489a76debca60d) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.Test/MacroStabilityInwardsPreconsolidationStressTest.cs (.../MacroStabilityInwardsPreconsolidationStressTest.cs) (revision 49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0) @@ -49,8 +49,12 @@ stressMean, stressCoefficientOfVariation); // Assert - Assert.AreEqual(xCoordinate, stress.XCoordinate); - Assert.AreEqual(zCoordinate, stress.ZCoordinate); + Assert.AreEqual(2, stress.XCoordinate.NumberOfDecimalPlaces); + Assert.AreEqual(xCoordinate, stress.XCoordinate, + stress.XCoordinate.GetAccuracy()); + Assert.AreEqual(2, stress.ZCoordinate.NumberOfDecimalPlaces); + Assert.AreEqual(zCoordinate, stress.ZCoordinate, + stress.ZCoordinate.GetAccuracy()); DistributionAssert.AreEqual(new VariationCoefficientLogNormalDistribution(2) { @@ -243,6 +247,41 @@ } [Test] + public void Equals_TransitiveProperty_ReturnsTrue() + { + // Setup + var random = new Random(21); + + double xCoordinate = random.NextDouble(); + double zCoordinate = random.NextDouble(); + double stressMean = random.NextDouble(); + double stressCoefficientOfVariation = random.NextDouble(); + + var stressA = new MacroStabilityInwardsPreconsolidationStress(xCoordinate, + zCoordinate, + stressMean, + stressCoefficientOfVariation); + var stressB = new MacroStabilityInwardsPreconsolidationStress(xCoordinate, + zCoordinate, + stressMean, + stressCoefficientOfVariation); + var stressC = new MacroStabilityInwardsPreconsolidationStress(xCoordinate, + zCoordinate, + stressMean, + stressCoefficientOfVariation); + + // Call + bool aEqualsB = stressA.Equals(stressB); + bool bEqualsC = stressB.Equals(stressC); + bool aEqualsC = stressA.Equals(stressC); + + // Assert + Assert.IsTrue(aEqualsB); + Assert.IsTrue(bEqualsC); + Assert.IsTrue(aEqualsC); + } + + [Test] public void GetHashCode_PropertiesAllEqual_ReturnsSameHashCode() { // Setup Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.Test/MacroStabilityInwardsSoilProfile2DTest.cs =================================================================== diff -u -r8f603e2036a1d07da2dfd2288f9de86abccb2e55 -r49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.Test/MacroStabilityInwardsSoilProfile2DTest.cs (.../MacroStabilityInwardsSoilProfile2DTest.cs) (revision 8f603e2036a1d07da2dfd2288f9de86abccb2e55) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.Test/MacroStabilityInwardsSoilProfile2DTest.cs (.../MacroStabilityInwardsSoilProfile2DTest.cs) (revision 49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0) @@ -208,6 +208,39 @@ Assert.IsTrue(profileBEqualA); } + [Test] + public void Equals_ToDerivedClass_ReturnsFalse() + { + // Setup + MacroStabilityInwardsSoilProfile2D profile = CreateRandomProfile(21); + var derivedProfile = new DerivedSoilProfile(profile.Name, profile.Layers, profile.PreconsolidationStresses); + + // Call + bool profileEqualsDerivedProfile = profile.Equals(derivedProfile); + + // Assert + Assert.IsFalse(profileEqualsDerivedProfile); + } + + [Test] + public void Equals_TransitiveProperty_ReturnsTrue() + { + // Setup + MacroStabilityInwardsSoilProfile2D profileA = CreateRandomProfile(21); + MacroStabilityInwardsSoilProfile2D profileB = CreateRandomProfile(21); + MacroStabilityInwardsSoilProfile2D profileC = CreateRandomProfile(21); + + // Call + bool aEqualsB = profileA.Equals(profileB); + bool bEqualsC = profileB.Equals(profileC); + bool aEqualsC = profileA.Equals(profileC); + + // Assert + Assert.IsTrue(aEqualsB); + Assert.IsTrue(bEqualsC); + Assert.IsTrue(aEqualsC); + } + private static IEnumerable ProfileCombinationsResultFalse() { const int seed = 78; @@ -240,7 +273,7 @@ var differentLayers = new[] { CreateRandomLayer(seed), - CreateRandomLayer(seed + 1) + CopyAndModifySoilLayer(CreateRandomLayer(seed)) }; yield return new TestCaseData(baseProfile, new MacroStabilityInwardsSoilProfile2D(baseProfile.Name, @@ -257,7 +290,7 @@ var differentStresses = new[] { CreateRandomPreconsolidationStress(seed), - CreateRandomPreconsolidationStress(seed + 1) + CopyAndModifyPreconsolidationsStress(CreateRandomPreconsolidationStress(seed)) }; yield return new TestCaseData(baseProfile, new MacroStabilityInwardsSoilProfile2D(baseProfile.Name, @@ -303,6 +336,20 @@ }; } + private static MacroStabilityInwardsSoilLayer2D CopyAndModifySoilLayer(MacroStabilityInwardsSoilLayer2D soilLayer) + { + return new MacroStabilityInwardsSoilLayer2D(soilLayer.OuterRing, new[] + { + soilLayer.Holes[0] + }) + { + Properties = + { + Color = soilLayer.Properties.Color + } + }; + } + private static Ring CreateRandomRing(int seed) { var random = new Random(seed); @@ -327,9 +374,27 @@ random.NextDouble()); } + private static MacroStabilityInwardsPreconsolidationStress CopyAndModifyPreconsolidationsStress( + MacroStabilityInwardsPreconsolidationStress stress) + { + var random = new Random(29); + return new MacroStabilityInwardsPreconsolidationStress(stress.XCoordinate + random.NextDouble(), + stress.ZCoordinate + random.NextDouble(), + stress.PreconsolidationStress.Mean + random.NextDouble(), + stress.PreconsolidationStress.CoefficientOfVariation + random.NextDouble()); + } + private static string GetRandomName(Random random) { return new string('x', random.Next(0, 40)); } + + private class DerivedSoilProfile : MacroStabilityInwardsSoilProfile2D + { + public DerivedSoilProfile(string name, + IEnumerable layers, + IEnumerable preconsolidationStresses) + : base(name, layers, preconsolidationStresses) {} + } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.TestUtil.Test/MacroStabilityInwardsPreconsolidationStressTestFactoryTest.cs =================================================================== diff -u -reae3622163e0c8bdfc32f73eda6f5bd8d3b02484 -r49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.TestUtil.Test/MacroStabilityInwardsPreconsolidationStressTestFactoryTest.cs (.../MacroStabilityInwardsPreconsolidationStressTestFactoryTest.cs) (revision eae3622163e0c8bdfc32f73eda6f5bd8d3b02484) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.TestUtil.Test/MacroStabilityInwardsPreconsolidationStressTestFactoryTest.cs (.../MacroStabilityInwardsPreconsolidationStressTestFactoryTest.cs) (revision 49bb14e91d1ff06ec08b52f2e76c11dcf54e5ee0) @@ -40,8 +40,8 @@ Assert.IsNotNull(stress); Assert.AreEqual(typeof(MacroStabilityInwardsPreconsolidationStress), stress.GetType()); - Assert.AreEqual(13, stress.XCoordinate); - Assert.AreEqual(34, stress.ZCoordinate); + Assert.AreEqual(13, stress.XCoordinate, stress.XCoordinate.GetAccuracy()); + Assert.AreEqual(34, stress.ZCoordinate, stress.ZCoordinate.GetAccuracy()); DistributionAssert.AreEqual(new VariationCoefficientLogNormalDistribution(2) {