Index: Riskeer/Common/src/Riskeer.Common.Util/HydraulicBoundaryLocationMapDataFeaturesFactory.cs
===================================================================
diff -u -r96ccefa48aa5c97c949f7a7858fcb4d3dc727a3a -r3f7b2552cb48b20aac2262d9ad7da25977c084e9
--- Riskeer/Common/src/Riskeer.Common.Util/HydraulicBoundaryLocationMapDataFeaturesFactory.cs (.../HydraulicBoundaryLocationMapDataFeaturesFactory.cs) (revision 96ccefa48aa5c97c949f7a7858fcb4d3dc727a3a)
+++ Riskeer/Common/src/Riskeer.Common.Util/HydraulicBoundaryLocationMapDataFeaturesFactory.cs (.../HydraulicBoundaryLocationMapDataFeaturesFactory.cs) (revision 3f7b2552cb48b20aac2262d9ad7da25977c084e9)
@@ -20,7 +20,9 @@
// All rights reserved.
using System;
+using Core.Common.Base.Data;
using Core.Components.Gis.Features;
+using Riskeer.Common.Data.Hydraulics;
using Riskeer.Common.Util.Properties;
namespace Riskeer.Common.Util
@@ -57,5 +59,38 @@
feature.MetaData[Resources.MetaData_WaveHeightCalculationForFactorizedLowerLimitNorm] = location.WaveHeightCalculationForFactorizedLowerLimitNorm.ToString();
return feature;
}
+
+ ///
+ /// Creates a hydraulic boundary location calculation feature based on the given .
+ ///
+ /// The calculation to create the feature for.
+ /// The meta data header to use.
+ /// A feature based on the given .
+ /// Thrown when any parameter is null.
+ public static MapFeature CreateHydraulicBoundaryLocationCalculationFeature(HydraulicBoundaryLocationCalculation calculation,
+ string metaDataHeader)
+ {
+ if (calculation == null)
+ {
+ throw new ArgumentNullException(nameof(calculation));
+ }
+
+ if (metaDataHeader == null)
+ {
+ throw new ArgumentNullException(nameof(metaDataHeader));
+ }
+
+ HydraulicBoundaryLocation location = calculation.HydraulicBoundaryLocation;
+ MapFeature feature = RiskeerMapDataFeaturesFactoryHelper.CreateSinglePointMapFeature(location.Location);
+ feature.MetaData[Resources.MetaData_ID] = location.Id;
+ feature.MetaData[Resources.MetaData_Name] = location.Name;
+ feature.MetaData[metaDataHeader] = GetCalculationResult(calculation.Output).ToString();
+ return feature;
+ }
+
+ private static RoundedDouble GetCalculationResult(HydraulicBoundaryLocationCalculationOutput output)
+ {
+ return output?.Result ?? RoundedDouble.NaN;
+ }
}
}
\ No newline at end of file
Index: Riskeer/Common/test/Riskeer.Common.Util.Test/HydraulicBoundaryLocationMapDataFeaturesFactoryTest.cs
===================================================================
diff -u -r96ccefa48aa5c97c949f7a7858fcb4d3dc727a3a -r3f7b2552cb48b20aac2262d9ad7da25977c084e9
--- Riskeer/Common/test/Riskeer.Common.Util.Test/HydraulicBoundaryLocationMapDataFeaturesFactoryTest.cs (.../HydraulicBoundaryLocationMapDataFeaturesFactoryTest.cs) (revision 96ccefa48aa5c97c949f7a7858fcb4d3dc727a3a)
+++ Riskeer/Common/test/Riskeer.Common.Util.Test/HydraulicBoundaryLocationMapDataFeaturesFactoryTest.cs (.../HydraulicBoundaryLocationMapDataFeaturesFactoryTest.cs) (revision 3f7b2552cb48b20aac2262d9ad7da25977c084e9)
@@ -20,8 +20,11 @@
// All rights reserved.
using System;
+using Core.Common.Base.Data;
using Core.Components.Gis.Features;
using NUnit.Framework;
+using Riskeer.Common.Data.Hydraulics;
+using Riskeer.Common.Data.TestUtil;
using Riskeer.Common.Util.TestUtil;
namespace Riskeer.Common.Util.Test
@@ -33,10 +36,10 @@
public void CreateHydraulicBoundaryLocationFeature_LocationNull_ThrowsArgumentNullException()
{
// Call
- TestDelegate call = () => HydraulicBoundaryLocationMapDataFeaturesFactory.CreateHydraulicBoundaryLocationFeature(null);
+ void Call() => HydraulicBoundaryLocationMapDataFeaturesFactory.CreateHydraulicBoundaryLocationFeature(null);
// Assert
- var exception = Assert.Throws(call);
+ var exception = Assert.Throws(Call);
Assert.AreEqual("location", exception.ParamName);
}
@@ -76,5 +79,55 @@
location.WaveHeightCalculationForFactorizedLowerLimitNorm.ToString(),
feature, "Hs_C");
}
+
+ [Test]
+ public void CreateHydraulicBoundaryLocationCalculationFeature_CalculationNull_ThrowsArgumentNullException()
+ {
+ // Call
+ void Call() => HydraulicBoundaryLocationMapDataFeaturesFactory.CreateHydraulicBoundaryLocationCalculationFeature(
+ null, string.Empty);
+
+ // Assert
+ var exception = Assert.Throws(Call);
+ Assert.AreEqual("calculation", exception.ParamName);
+ }
+
+ [Test]
+ public void CreateHydraulicBoundaryLocationCalculationFeature_MetaDataHeaderNull_ThrowsArgumentNullException()
+ {
+ // Call
+ void Call() => HydraulicBoundaryLocationMapDataFeaturesFactory.CreateHydraulicBoundaryLocationCalculationFeature(
+ new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation()), null);
+
+ // Assert
+ var exception = Assert.Throws(Call);
+ Assert.AreEqual("metaDataHeader", exception.ParamName);
+ }
+
+ [Test]
+ [TestCase(true)]
+ [TestCase(false)]
+ public void CreateHydraulicBoundaryLocationCalculationFeature_WithData_ReturnFeature(bool calculationHasOutput)
+ {
+ // Setup
+ const string metaDataHeader = "header";
+ var calculation = new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation("location 1"));
+
+ if (calculationHasOutput)
+ {
+ calculation.Output = new TestHydraulicBoundaryLocationCalculationOutput();
+ }
+
+ // Call
+ MapFeature feature = HydraulicBoundaryLocationMapDataFeaturesFactory.CreateHydraulicBoundaryLocationCalculationFeature(
+ calculation, metaDataHeader);
+
+ // Assert
+ RoundedDouble expectedMetaDataValue = calculationHasOutput
+ ? calculation.Output.Result
+ : RoundedDouble.NaN;
+ MapFeaturesMetaDataTestHelper.AssertMetaData(expectedMetaDataValue.ToString(),
+ feature, metaDataHeader);
+ }
}
}
\ No newline at end of file