Index: Riskeer/Common/src/Riskeer.Common.Forms/Factories/HydraulicBoundaryLocationMapDataFeaturesFactory.cs =================================================================== diff -u -r056739493f30201655ba2a2832721dff1f9715d7 -r2b0b327fba16068d1469a66f2d01cdc21bed2b90 --- Riskeer/Common/src/Riskeer.Common.Forms/Factories/HydraulicBoundaryLocationMapDataFeaturesFactory.cs (.../HydraulicBoundaryLocationMapDataFeaturesFactory.cs) (revision 056739493f30201655ba2a2832721dff1f9715d7) +++ Riskeer/Common/src/Riskeer.Common.Forms/Factories/HydraulicBoundaryLocationMapDataFeaturesFactory.cs (.../HydraulicBoundaryLocationMapDataFeaturesFactory.cs) (revision 2b0b327fba16068d1469a66f2d01cdc21bed2b90) @@ -64,8 +64,26 @@ return feature; } - private static void AddTargetProbabilityMetaData(MapFeature feature, IEnumerable> targetProbabilities, string displayName) + /// + /// Adds target probability related meta data to the given . + /// + /// The feature to add the meta data to. + /// The collection of target probabilities to add. + /// The display name of the meta data. + /// Thrown when or + /// is null. + public static void AddTargetProbabilityMetaData(MapFeature feature, IEnumerable> targetProbabilities, string displayName) { + if (feature == null) + { + throw new ArgumentNullException(nameof(feature)); + } + + if (targetProbabilities == null) + { + throw new ArgumentNullException(nameof(targetProbabilities)); + } + var addedMetaDataItems = new List(); foreach (Tuple calculationOutputForTargetProbability in targetProbabilities) Index: Riskeer/Common/test/Riskeer.Common.Forms.Test/Factories/HydraulicBoundaryLocationMapDataFeaturesFactoryTest.cs =================================================================== diff -u -r056739493f30201655ba2a2832721dff1f9715d7 -r2b0b327fba16068d1469a66f2d01cdc21bed2b90 --- Riskeer/Common/test/Riskeer.Common.Forms.Test/Factories/HydraulicBoundaryLocationMapDataFeaturesFactoryTest.cs (.../HydraulicBoundaryLocationMapDataFeaturesFactoryTest.cs) (revision 056739493f30201655ba2a2832721dff1f9715d7) +++ Riskeer/Common/test/Riskeer.Common.Forms.Test/Factories/HydraulicBoundaryLocationMapDataFeaturesFactoryTest.cs (.../HydraulicBoundaryLocationMapDataFeaturesFactoryTest.cs) (revision 2b0b327fba16068d1469a66f2d01cdc21bed2b90) @@ -26,6 +26,7 @@ using Core.Common.Base.Geometry; using Core.Common.TestUtil; using Core.Components.Gis.Features; +using Core.Components.Gis.Geometries; using NUnit.Framework; using Riskeer.Common.Forms.Factories; using Riskeer.Common.Forms.PresentationObjects; @@ -71,10 +72,57 @@ // Assert MapFeaturesMetaDataTestHelper.AssertMetaData(location.Id, feature, "ID"); MapFeaturesMetaDataTestHelper.AssertMetaData(location.Name, feature, "Naam"); - + MapFeaturesMetaDataTestHelper.AssertMetaData(location.WaterLevelCalculationsForTargetProbabilities.First().Item2.ToString(), feature, "h - 1/10"); MapFeaturesMetaDataTestHelper.AssertMetaData(location.WaterLevelCalculationsForTargetProbabilities.Last().Item2.ToString(), feature, "h - 1/10 (1)"); MapFeaturesMetaDataTestHelper.AssertMetaData(location.WaveHeightCalculationsForTargetProbabilities.First().Item2.ToString(), feature, "Hs - 1/1.000"); } + + [Test] + public void AddTargetProbabilityMetaData_FeatureNull_ThrowsArgumentNullException() + { + // Call + void Call() => HydraulicBoundaryLocationMapDataFeaturesFactory.AddTargetProbabilityMetaData( + null, Enumerable.Empty>(), string.Empty); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("feature", exception.ParamName); + } + + [Test] + public void AddTargetProbabilityMetaData_TargetProbabilitiesNull_ThrowsArgumentNullException() + { + // Call + void Call() => HydraulicBoundaryLocationMapDataFeaturesFactory.AddTargetProbabilityMetaData(new MapFeature(Enumerable.Empty()), null, string.Empty); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("targetProbabilities", exception.ParamName); + } + + [Test] + public void AddTargetProbabilityMetaData_WithAllData_AddsMetaDataItems() + { + // Setup + var random = new Random(21); + var feature = new MapFeature(Enumerable.Empty()); + var targetProbabilities = new[] + { + new Tuple(0.01, random.NextRoundedDouble()), + new Tuple(0.01, RoundedDouble.NaN), + new Tuple(0.0001, random.NextRoundedDouble()) + }; + const string displayName = "Test - {0}"; + + // Call + HydraulicBoundaryLocationMapDataFeaturesFactory.AddTargetProbabilityMetaData(feature, targetProbabilities, displayName); + + // Assert + Assert.AreEqual(3, feature.MetaData.Count); + MapFeaturesMetaDataTestHelper.AssertMetaData(targetProbabilities[0].Item2.ToString(), feature, string.Format(displayName, "1/100")); + MapFeaturesMetaDataTestHelper.AssertMetaData(targetProbabilities[1].Item2.ToString(), feature, string.Format(displayName, "1/100 (1)")); + MapFeaturesMetaDataTestHelper.AssertMetaData(targetProbabilities[2].Item2.ToString(), feature, string.Format(displayName, "1/10.000")); + } } } \ No newline at end of file