public void ConvertToGeneralResultTopLevelFaultTreeIllustrationPoint_HydraRingGeneralResultWithFaultTreeIllustrationPointsOnly_ExpectedProperties() { // Setup var random = new Random(21); const string closingSituation = "Closing situation"; var hydraRingWindDirection = new HydraRingWindDirection("SSE", random.NextDouble()); var hydraRingWindDirectionClosingSituation = new HydraRingWindDirectionClosingSituation( hydraRingWindDirection, closingSituation); var hydraRingIllustrationPoint = new HydraRingFaultTreeIllustrationPoint( "IllustrationPoint", random.NextDouble(), Enumerable.Empty <HydraRingStochast>(), HydraRingCombinationType.Or); var hydraRingIllustrationTreeNode = new HydraRingIllustrationPointTreeNode(hydraRingIllustrationPoint); var governingHydraRingWindDirection = new HydraRingWindDirection("Name", random.NextDouble()); var hydraRingGeneralResult = new HydraRingGeneralResult( random.NextDouble(), governingHydraRingWindDirection, Enumerable.Empty <HydraRingStochast>(), new Dictionary <HydraRingWindDirectionClosingSituation, HydraRingIllustrationPointTreeNode> { { hydraRingWindDirectionClosingSituation, hydraRingIllustrationTreeNode } }); // Call GeneralResult <TopLevelFaultTreeIllustrationPoint> generalResult = GeneralResultConverter.ConvertToGeneralResultTopLevelFaultTreeIllustrationPoint(hydraRingGeneralResult); // Assert WindDirection generalResultGoverningWindDirection = generalResult.GoverningWindDirection; AssertWindDirection(governingHydraRingWindDirection, generalResultGoverningWindDirection); TopLevelFaultTreeIllustrationPoint topLevelFaultTreeIllustrationPoint = generalResult.TopLevelIllustrationPoints.Single(); AssertWindDirection(hydraRingWindDirection, topLevelFaultTreeIllustrationPoint.WindDirection); Assert.AreEqual(closingSituation, topLevelFaultTreeIllustrationPoint.ClosingSituation); IllustrationPointNode faultTreeIllustrationPoint = topLevelFaultTreeIllustrationPoint.FaultTreeNodeRoot; CollectionAssert.IsEmpty(faultTreeIllustrationPoint.Children); var faultTreeIllustrationPointData = (FaultTreeIllustrationPoint)faultTreeIllustrationPoint.Data; CollectionAssert.IsEmpty(faultTreeIllustrationPointData.Stochasts); Assert.AreEqual(hydraRingIllustrationPoint.Name, faultTreeIllustrationPointData.Name); Assert.AreEqual(hydraRingIllustrationPoint.Beta, faultTreeIllustrationPointData.Beta, faultTreeIllustrationPointData.Beta.GetAccuracy()); Assert.AreEqual(CombinationType.Or, faultTreeIllustrationPointData.CombinationType); }
public void ConvertToGeneralResultTopLevelSubMechanismIllustrationPoint_HydraGeneralResultWithSubMechanismIllustrationPointsOnly_ExpectedProperties() { // Setup const string closingSituation = "Closing situation"; var random = new Random(21); var hydraRingWindDirection = new HydraRingWindDirection("SSE", random.NextDouble()); var hydraRingWindDirectionClosingSituation = new HydraRingWindDirectionClosingSituation( hydraRingWindDirection, closingSituation); var hydraRingIllustrationPoint = new HydraRingSubMechanismIllustrationPoint( "Illustration Point", Enumerable.Empty <HydraRingSubMechanismIllustrationPointStochast>(), Enumerable.Empty <HydraRingIllustrationPointResult>(), random.NextDouble()); var hydraRingIllustrationTreeNode = new HydraRingIllustrationPointTreeNode(hydraRingIllustrationPoint); var governingHydraWindDirection = new HydraRingWindDirection("Name", random.NextDouble()); var hydraGeneralResult = new HydraRingGeneralResult( random.NextDouble(), governingHydraWindDirection, Enumerable.Empty <HydraRingStochast>(), new Dictionary <HydraRingWindDirectionClosingSituation, HydraRingIllustrationPointTreeNode> { { hydraRingWindDirectionClosingSituation, hydraRingIllustrationTreeNode } }); // Call GeneralResult <TopLevelSubMechanismIllustrationPoint> generalResult = GeneralResultConverter.ConvertToGeneralResultTopLevelSubMechanismIllustrationPoint(hydraGeneralResult); // Assert WindDirection generalResultGoverningWindDirection = generalResult.GoverningWindDirection; AssertWindDirection(governingHydraWindDirection, generalResultGoverningWindDirection); CollectionAssert.IsEmpty(generalResult.Stochasts); TopLevelSubMechanismIllustrationPoint combination = generalResult.TopLevelIllustrationPoints.Single(); AssertWindDirection(hydraRingWindDirection, combination.WindDirection); Assert.AreEqual(closingSituation, combination.ClosingSituation); SubMechanismIllustrationPoint subMechanismIllustrationPoint = combination.SubMechanismIllustrationPoint; Assert.AreEqual(hydraRingIllustrationPoint.Name, subMechanismIllustrationPoint.Name); Assert.AreEqual(hydraRingIllustrationPoint.Beta, subMechanismIllustrationPoint.Beta, subMechanismIllustrationPoint.Beta.GetAccuracy()); CollectionAssert.IsEmpty(subMechanismIllustrationPoint.Stochasts); CollectionAssert.IsEmpty(subMechanismIllustrationPoint.IllustrationPointResults); }
/// <summary> /// Creates a new instance of <see cref="GeneralResult{T}"/> for top level sub /// mechanism illustration points based on the information of <paramref name="hydraRingGeneralResult"/>. /// </summary> /// <param name="hydraRingGeneralResult">The <see cref="HydraRingGeneralResult"/> to base the /// <see cref="GeneralResult{T}"/> to create on.</param> /// <returns>The newly created <see cref="GeneralResult{T}"/>.</returns> /// <exception cref="ArgumentNullException">Thrown when <paramref name="hydraRingGeneralResult"/> is <c>null</c>.</exception> /// <exception cref="IllustrationPointConversionException">Thrown when the <paramref name="hydraRingGeneralResult"/> /// cannot be converted to a <see cref="GeneralResult{T}"/> with top level sub mechanism illustration points.</exception> public static GeneralResult <TopLevelSubMechanismIllustrationPoint> ConvertToGeneralResultTopLevelSubMechanismIllustrationPoint( HydraRingGeneralResult hydraRingGeneralResult) { if (hydraRingGeneralResult == null) { throw new ArgumentNullException(nameof(hydraRingGeneralResult)); } WindDirection governingWindDirection = WindDirectionConverter.Convert(hydraRingGeneralResult.GoverningWindDirection); IEnumerable <Stochast> stochasts = GetStochasts(hydraRingGeneralResult); IEnumerable <TopLevelSubMechanismIllustrationPoint> windDirectionClosingScenarioIllustrationPoints = GetTopLevelSubMechanismIllustrationPoints(hydraRingGeneralResult.IllustrationPoints); return(new GeneralResult <TopLevelSubMechanismIllustrationPoint>(governingWindDirection, stochasts, windDirectionClosingScenarioIllustrationPoints)); }
/// <summary> /// Gets a <see cref="GeneralResult{T}"/> based on the information /// of <paramref name="hydraRingGeneralResult"/>. /// </summary> /// <param name="hydraRingGeneralResult">The <see cref="HydraRingGeneralResult"/> to base the /// <see cref="GeneralResult{T}"/> to create on.</param> /// <returns>A <see cref="GeneralResult{T}"/>, or <c>null</c> if the /// <paramref name="hydraRingGeneralResult"/> could not be converted.</returns> private GeneralResult <TopLevelFaultTreeIllustrationPoint> GetGeneralResult(HydraRingGeneralResult hydraRingGeneralResult) { if (hydraRingGeneralResult == null) { log.Warn(calculator.IllustrationPointsParserErrorMessage); return(null); } try { return(GeneralResultConverter.ConvertToGeneralResultTopLevelFaultTreeIllustrationPoint(hydraRingGeneralResult)); } catch (IllustrationPointConversionException e) { log.Warn(Resources.SetGeneralResult_Converting_IllustrationPointResult_Failed, e); } return(null); }
public void ConvertToGeneralResultTopLevelSubMechanismIllustrationPoint_HydraRingGeneralResultWithFaultTreeIllustrationPointsOnly_ThrowsIllustrationPointConversionException() { // Setup var random = new Random(21); const string closingSituation = "Closing situation"; var hydraRingWindDirection = new HydraRingWindDirection("SSE", random.NextDouble()); var hydraRingWindDirectionClosingSituation = new HydraRingWindDirectionClosingSituation( hydraRingWindDirection, closingSituation); var hydraRingIllustrationPoint = new HydraRingFaultTreeIllustrationPoint( "IllustrationPoint", random.NextDouble(), Enumerable.Empty <HydraRingStochast>(), random.NextEnumValue <HydraRingCombinationType>()); var hydraRingIllustrationTreeNode = new HydraRingIllustrationPointTreeNode(hydraRingIllustrationPoint); var governingHydraRingWindDirection = new HydraRingWindDirection("Name", random.NextDouble()); var hydraRingGeneralResult = new HydraRingGeneralResult( random.NextDouble(), governingHydraRingWindDirection, Enumerable.Empty <HydraRingStochast>(), new Dictionary <HydraRingWindDirectionClosingSituation, HydraRingIllustrationPointTreeNode> { { hydraRingWindDirectionClosingSituation, hydraRingIllustrationTreeNode } }); // Call TestDelegate call = () => GeneralResultConverter.ConvertToGeneralResultTopLevelSubMechanismIllustrationPoint(hydraRingGeneralResult); // Assert var exception = Assert.Throws <IllustrationPointConversionException>(call); string expectedMessage = $"Expected a fault tree node with data of type {typeof(HydraRingSubMechanismIllustrationPoint)} as root, " + $"but got {hydraRingIllustrationPoint.GetType()}"; Assert.AreEqual(expectedMessage, exception.Message); }
public void ConvertToGeneralResultTopLevelSubMechanismIllustrationPoint_HydraGeneralResultWithoutIllustrationPoints_ExpectedProperties() { // Setup var random = new Random(21); var hydraGoverningWindDirection = new HydraRingWindDirection("Name", random.NextDouble()); var hydraRingGeneralResult = new HydraRingGeneralResult( random.NextDouble(), hydraGoverningWindDirection, Enumerable.Empty <HydraRingStochast>(), new Dictionary < HydraRingWindDirectionClosingSituation, HydraRingIllustrationPointTreeNode>()); // Call GeneralResult <TopLevelSubMechanismIllustrationPoint> generalResult = GeneralResultConverter.ConvertToGeneralResultTopLevelSubMechanismIllustrationPoint(hydraRingGeneralResult); // Assert AssertWindDirection(hydraGoverningWindDirection, generalResult.GoverningWindDirection); CollectionAssert.IsEmpty(generalResult.TopLevelIllustrationPoints); CollectionAssert.IsEmpty(generalResult.Stochasts); }
private static GeneralResult <TopLevelFaultTreeIllustrationPoint> ConvertIllustrationPointsResult(HydraRingGeneralResult result, string errorMessage) { if (result == null) { log.Warn(errorMessage); return(null); } try { GeneralResult <TopLevelFaultTreeIllustrationPoint> generalResult = GeneralResultConverter.ConvertToGeneralResultTopLevelFaultTreeIllustrationPoint(result); return(generalResult); } catch (IllustrationPointConversionException e) { log.Warn(RiskeerCommonServiceResources.SetGeneralResult_Converting_IllustrationPointResult_Failed, e); } return(null); }
private static IEnumerable <Stochast> GetStochasts(HydraRingGeneralResult hydraGeneralResult) { return(hydraGeneralResult.Stochasts.Select(StochastConverter.Convert).ToArray()); }