Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/StructuresImporterTest.cs =================================================================== diff -u -r6115bb70abacf9aed9119d43fc9430eff235da6a -r7718705f6072a15ac28cb112abb949ee280391a9 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/StructuresImporterTest.cs (.../StructuresImporterTest.cs) (revision 6115bb70abacf9aed9119d43fc9430eff235da6a) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/StructuresImporterTest.cs (.../StructuresImporterTest.cs) (revision 7718705f6072a15ac28cb112abb949ee280391a9) @@ -24,12 +24,14 @@ using System.IO; using System.Linq; using Core.Common.Base; +using Core.Common.Base.Data; using Core.Common.Base.Geometry; using Core.Common.Base.IO; using Core.Common.TestUtil; using Core.Common.Utils.Builders; using NUnit.Framework; using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.IO.FileImporters; using Ringtoets.Common.IO.Structures; using CoreCommonUtilsResources = Core.Common.Utils.Properties.Resources; @@ -399,11 +401,159 @@ Assert.IsFalse(importResult); } + [Test] + public void GetStandardDeviation_RowHasStandardDeviation_ReturnVarianceValue() + { + // Setup + string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("Structures", "CorrectFiles", "Kunstwerken.shp")); + + ReferenceLine referenceLine = new ReferenceLine(); + var importTarget = new ObservableList(); + + var importer = new TestStructuresImporter(importTarget, referenceLine, filePath); + + var parameter = new StructuresParameterRow + { + AlphanumericValue = "", + LineNumber = 3, + LocationId = "A", + NumericalValue = -2, + ParameterId = "B", + VarianceType = VarianceType.StandardDeviation, + VarianceValue = 1.2 + }; + + // Call + RoundedDouble standardDeviation = (RoundedDouble) 0.0; + Action call = () => standardDeviation = importer.GetStandardDeviation(parameter, ""); + + // Assert + TestHelper.AssertLogMessagesCount(call, 0); + Assert.AreEqual(parameter.VarianceValue, standardDeviation, standardDeviation.GetAccuracy()); + } + + [Test] + public void GetStandardDeviation_RowHasCoefficientOfVariation_ReturnConvertedVarianceValue() + { + // Setup + string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("Structures", "CorrectFiles", "Kunstwerken.shp")); + + ReferenceLine referenceLine = new ReferenceLine(); + var importTarget = new ObservableList(); + + var importer = new TestStructuresImporter(importTarget, referenceLine, filePath); + + var parameter = new StructuresParameterRow + { + AlphanumericValue = "", + LineNumber = 3, + LocationId = "A", + NumericalValue = -2, + ParameterId = "B", + VarianceType = VarianceType.CoefficientOfVariation, + VarianceValue = 1.2 + }; + + const string structureName = ""; + + // Call + RoundedDouble standardDeviation = (RoundedDouble) 0.0; + Action call = () => standardDeviation = importer.GetStandardDeviation(parameter, structureName); + + // Assert + string message = string.Format("De variatie voor parameter '{2}' van kunstwerk '{0}' ({1}) wordt omgerekend in een standaard deviatie (regel {3}).", + structureName, parameter.LocationId, parameter.ParameterId, parameter.LineNumber); + TestHelper.AssertLogMessageIsGenerated(call, message, 1); + double expectedStandardDeviation = parameter.VarianceValue*Math.Abs(parameter.NumericalValue); + Assert.AreEqual(expectedStandardDeviation, standardDeviation, standardDeviation.GetAccuracy()); + } + + [Test] + public void GetCoefficientOfVariation_RowHasCoefficientOfVariation_ReturnVarianceValue() + { + // Setup + string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("Structures", "CorrectFiles", "Kunstwerken.shp")); + + ReferenceLine referenceLine = new ReferenceLine(); + var importTarget = new ObservableList(); + + var importer = new TestStructuresImporter(importTarget, referenceLine, filePath); + + var parameter = new StructuresParameterRow + { + AlphanumericValue = "", + LineNumber = 3, + LocationId = "A", + NumericalValue = -3, + ParameterId = "B", + VarianceType = VarianceType.CoefficientOfVariation, + VarianceValue = 2.3 + }; + + // Call + RoundedDouble coefficientOfVariation = (RoundedDouble) 0.0; + Action call = () => coefficientOfVariation = importer.GetCoefficientOfVariation(parameter, ""); + + // Assert + TestHelper.AssertLogMessagesCount(call, 0); + Assert.AreEqual(parameter.VarianceValue, coefficientOfVariation, coefficientOfVariation.GetAccuracy()); + } + + [Test] + public void GetCoefficientOfVariation_RowHasStandardDeviation_ReturnConvertedVarianceValue() + { + // Setup + string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("Structures", "CorrectFiles", "Kunstwerken.shp")); + + ReferenceLine referenceLine = new ReferenceLine(); + var importTarget = new ObservableList(); + + var importer = new TestStructuresImporter(importTarget, referenceLine, filePath); + + var parameter = new StructuresParameterRow + { + AlphanumericValue = "", + LineNumber = 3, + LocationId = "A", + NumericalValue = -3, + ParameterId = "B", + VarianceType = VarianceType.StandardDeviation, + VarianceValue = 2.3 + }; + + const string structureName = ""; + + // Call + RoundedDouble coefficientOfVariation = (RoundedDouble) 0.0; + Action call = () => coefficientOfVariation = importer.GetCoefficientOfVariation(parameter, structureName); + + // Assert + string message = string.Format("De variatie voor parameter '{2}' van kunstwerk '{0}' ({1}) wordt omgerekend in een variatiecoƫfficiƫnt (regel {3}).", + structureName, parameter.LocationId, parameter.ParameterId, parameter.LineNumber); + TestHelper.AssertLogMessageIsGenerated(call, message, 1); + double expectedStandardDeviation = parameter.VarianceValue/Math.Abs(parameter.NumericalValue); + Assert.AreEqual(expectedStandardDeviation, coefficientOfVariation, coefficientOfVariation.GetAccuracy()); + } + private class TestStructuresImporter : StructuresImporter> { public TestStructuresImporter(ObservableList importTarget, ReferenceLine referenceLine, string filePath) : base(importTarget, referenceLine, filePath) {} + public new RoundedDouble GetStandardDeviation(StructuresParameterRow parameter, string structureName) + { + return base.GetStandardDeviation(parameter, structureName); + } + + public new RoundedDouble GetCoefficientOfVariation(StructuresParameterRow parameter, string structureName) + { + return base.GetCoefficientOfVariation(parameter, structureName); + } + protected override void CreateSpecificStructures(ICollection structureLocations, Dictionary> groupedStructureParameterRows) {} }