public void Transform_ValidPreconsolidationStress_ReturnMacroStabilityInwardsPreconsolidationStress() { // Setup var random = new Random(21); var preconsolidationStress = new PreconsolidationStress { XCoordinate = random.NextDouble(), ZCoordinate = random.NextDouble(), StressDistributionType = 3, StressMean = random.NextDouble(), StressCoefficientOfVariation = random.NextDouble(), StressShift = 0 }; // Call MacroStabilityInwardsPreconsolidationStress transformedStress = MacroStabilityInwardsPreconsolidationStressTransformer.Transform(preconsolidationStress); // Assert Assert.AreEqual(preconsolidationStress.XCoordinate, transformedStress.Location.X); Assert.AreEqual(preconsolidationStress.ZCoordinate, transformedStress.Location.Y); VariationCoefficientLogNormalDistribution transformedPreconsolidationStressDistribution = transformedStress.Stress; Assert.AreEqual(preconsolidationStress.StressMean, transformedPreconsolidationStressDistribution.Mean, transformedPreconsolidationStressDistribution.GetAccuracy()); Assert.AreEqual(preconsolidationStress.StressCoefficientOfVariation, transformedPreconsolidationStressDistribution.CoefficientOfVariation, transformedPreconsolidationStressDistribution.GetAccuracy()); }
public void ReadPreconsolidationStresses_FirstSoilProfileWithNullValuesInCompleteDatabase_ReturnsDefaultPreconsolidationStressValues() { // Setup string dbFile = Path.Combine(testDataPath, "2dprofileWithPreconsolidationStressesNullValues.soil"); using (var reader = new PreconsolidationStressReader(dbFile)) { reader.Initialize(); // Call PreconsolidationStress[] preconsolidationStresses = reader.ReadPreconsolidationStresses().ToArray(); // Assert Assert.AreEqual(1, preconsolidationStresses.Length); PreconsolidationStress actualPreconsolidationStress = preconsolidationStresses[0]; Assert.IsNaN(actualPreconsolidationStress.XCoordinate); Assert.IsNaN(actualPreconsolidationStress.ZCoordinate); Assert.IsNull(actualPreconsolidationStress.StressDistributionType); Assert.IsNaN(actualPreconsolidationStress.StressMean); Assert.IsNaN(actualPreconsolidationStress.StressCoefficientOfVariation); Assert.IsNaN(actualPreconsolidationStress.StressShift); } Assert.IsTrue(TestHelper.CanOpenFileForWrite(dbFile)); }
public void Transform_SoilProfile2DWithInvalidPreconsolidationStress_ThrowsImportedDataException() { var random = new Random(21); var preconsolidationStress = new PreconsolidationStress { XCoordinate = double.NaN, ZCoordinate = random.NextDouble(), StressDistributionType = SoilLayerConstants.LogNormalDistributionValue, StressMean = random.NextDouble(), StressCoefficientOfVariation = random.NextDouble(), StressShift = 0 }; var profile = new SoilProfile2D(1, "test", new[] { SoilLayer2DTestFactory.CreateSoilLayer2D() }, new[] { preconsolidationStress }); // Call TestDelegate call = () => MacroStabilityInwardsSoilProfileTransformer.Transform(profile); // Assert var exception = Assert.Throws <ImportedDataTransformException>(call); Exception innerException = exception.InnerException; Assert.IsInstanceOf <ImportedDataTransformException>(innerException); string expectedMessage = CreateExpectedErrorMessage(profile.Name, innerException.Message); Assert.AreEqual(expectedMessage, exception.Message); }
public void Transform_SoilProfile2DWithPreconsolidationStresses_ReturnMacroStabilityInwardsSoilProfile2DWithStresses() { // Setup var random = new Random(21); var preconsolidationStress = new PreconsolidationStress { XCoordinate = random.NextDouble(), ZCoordinate = random.NextDouble(), StressDistributionType = SoilLayerConstants.LogNormalDistributionValue, StressMean = random.NextDouble(), StressCoefficientOfVariation = random.NextDouble(), StressShift = 0 }; var profile = new SoilProfile2D(1, "test", new[] { SoilLayer2DTestFactory.CreateSoilLayer2D() }, new[] { preconsolidationStress }); // Call var transformedProfile = (MacroStabilityInwardsSoilProfile2D)MacroStabilityInwardsSoilProfileTransformer.Transform(profile); // Assert AssertPreconsolidationStress(preconsolidationStress, transformedProfile.PreconsolidationStresses.Single()); }
/// <summary> /// Transforms the generic <paramref name="preconsolidationStress"/> into /// a <see cref="MacroStabilityInwardsPreconsolidationStress"/>. /// </summary> /// <param name="preconsolidationStress">The preconsolidation stress to use /// in the transformation.</param> /// <returns>A <see cref="MacroStabilityInwardsPreconsolidationStress"/> /// based on the given data.</returns> /// <exception cref="ArgumentNullException">Thrown when <paramref name="preconsolidationStress"/> /// is <c>null</c>.</exception> /// <exception cref="ImportedDataTransformException">Thrown when the /// <paramref name="preconsolidationStress"/> could not be transformed into /// a <see cref="MacroStabilityInwardsPreconsolidationStress"/>.</exception> public static MacroStabilityInwardsPreconsolidationStress Transform(PreconsolidationStress preconsolidationStress) { if (preconsolidationStress == null) { throw new ArgumentNullException(nameof(preconsolidationStress)); } var location = new Point2D(preconsolidationStress.XCoordinate, preconsolidationStress.ZCoordinate); try { DistributionHelper.ValidateLogNormalDistribution(preconsolidationStress.StressDistributionType, preconsolidationStress.StressShift); var distribution = new VariationCoefficientLogNormalDistribution { Mean = (RoundedDouble)preconsolidationStress.StressMean, CoefficientOfVariation = (RoundedDouble)preconsolidationStress.StressCoefficientOfVariation }; return(new MacroStabilityInwardsPreconsolidationStress(location, distribution)); } catch (Exception e) when(e is DistributionValidationException || e is ArgumentOutOfRangeException) { string errorMessage = CreateErrorMessage(location, e.Message); throw new ImportedDataTransformException(errorMessage, e); } catch (ArgumentException e) { throw new ImportedDataTransformException(e.Message, e); } }
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); } }
public void Constructor_ReturnsDefaultValues() { // Call var stress = new PreconsolidationStress(); // Assert Assert.IsNaN(stress.XCoordinate); Assert.IsNaN(stress.ZCoordinate); Assert.IsNull(stress.StressDistributionType); Assert.IsNaN(stress.StressMean); Assert.IsNaN(stress.StressCoefficientOfVariation); Assert.IsNaN(stress.StressShift); }
private static void AssertPreconsolidationStress(PreconsolidationStress preconsolidationStress, MacroStabilityInwardsPreconsolidationStress transformedPreconsolidationStress) { Assert.AreEqual(preconsolidationStress.XCoordinate, transformedPreconsolidationStress.Location.X); Assert.AreEqual(preconsolidationStress.ZCoordinate, transformedPreconsolidationStress.Location.Y); VariationCoefficientLogNormalDistribution stressDistribution = transformedPreconsolidationStress.Stress; Assert.AreEqual(preconsolidationStress.StressMean, stressDistribution.Mean, stressDistribution.GetAccuracy()); Assert.AreEqual(preconsolidationStress.StressCoefficientOfVariation, stressDistribution.CoefficientOfVariation, stressDistribution.GetAccuracy()); }
public void Constructor_ExpectedValues() { // Setup var layers = new SoilLayer[0]; var preconsolidationStresses = new PreconsolidationStress[0]; // Call var profile = new SoilProfile(layers, preconsolidationStresses); // Assert Assert.AreSame(layers, profile.Layers); Assert.AreSame(preconsolidationStresses, profile.PreconsolidationStresses); }
public void Transform_PreconsolidationStressValuesNaN_ThrowsImportedDataTransformException( PreconsolidationStress preconsolidationStress) { // Call TestDelegate call = () => MacroStabilityInwardsPreconsolidationStressTransformer.Transform(preconsolidationStress); // Assert var exception = Assert.Throws <ImportedDataTransformException>(call); Exception innerException = exception.InnerException; Assert.IsInstanceOf <ArgumentException>(innerException); Assert.AreEqual(innerException.Message, exception.Message); }
public void Constructor_ExpectedValues() { // Setup var random = new Random(11); var coordinate = new Point2D(random.NextDouble(), random.NextDouble()); double stress = random.NextDouble(); // Call var preconsolidationStress = new PreconsolidationStress(coordinate, stress); // Assert Assert.AreSame(coordinate, preconsolidationStress.Coordinate); Assert.AreEqual(stress, preconsolidationStress.Stress); }
public void Transform_InvalidStochasticDistributionShift_ThrowsImportedDataTransformException() { // Setup var random = new Random(21); var preconsolidationStress = new PreconsolidationStress { StressDistributionType = SoilLayerConstants.LogNormalDistributionValue, StressShift = random.NextDouble() }; // Call TestDelegate call = () => MacroStabilityInwardsPreconsolidationStressTransformer.Transform(preconsolidationStress); // Assert var exception = Assert.Throws <ImportedDataTransformException>(call); var coordinate = new Point2D(preconsolidationStress.XCoordinate, preconsolidationStress.ZCoordinate); string expectedMessage = CreateExpectedErrorMessage(coordinate, "Parameter moet lognormaal verdeeld zijn met een verschuiving gelijk aan 0."); Assert.AreEqual(expectedMessage, exception.Message); }
public void Transform_InvalidPreconsolidationStressDistributionValues_ThrowsImportedDataTransformException(PreconsolidationStress preconsolidationStress) { // Call TestDelegate call = () => MacroStabilityInwardsPreconsolidationStressTransformer.Transform(preconsolidationStress); // Assert var exception = Assert.Throws <ImportedDataTransformException>(call); Exception innerException = exception.InnerException; Assert.IsInstanceOf <ArgumentOutOfRangeException>(innerException); var coordinate = new Point2D(preconsolidationStress.XCoordinate, preconsolidationStress.ZCoordinate); string expectedMessage = CreateExpectedErrorMessage(coordinate, innerException.Message); Assert.AreEqual(expectedMessage, exception.Message); }