// Copyright (C) Stichting Deltares 2017. All rights reserved.
//
// This file is part of Ringtoets.
//
// Ringtoets is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using Assembly.Kernel.Model;
using Assembly.Kernel.Model.AssessmentResultTypes;
using Assembly.Kernel.Model.FmSectionTypes;
using Core.Common.TestUtil;
using NUnit.Framework;
using Ringtoets.AssemblyTool.Data;
using Ringtoets.AssemblyTool.KernelWrapper.Creators;
using Ringtoets.Common.Primitives;
namespace Ringtoets.AssemblyTool.KernelWrapper.Test.Creators
{
[TestFixture]
public class FailureMechanismSectionAssemblyCalculatorInputCreatorTest
{
#region Simple Assessment
[Test]
public void CreateAssessmentResultE1_WithInvalidEnumInput_ThrowInvalidEnumArgumentException()
{
// Call
TestDelegate test = () => FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultE1((SimpleAssessmentResultType) 99);
// Assert
const string expectedMessage = "The value of argument 'input' (99) is invalid for Enum type 'SimpleAssessmentResultType'.";
TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
}
[Test]
[TestCase(SimpleAssessmentResultType.None, EAssessmentResultTypeE1.Gr)]
[TestCase(SimpleAssessmentResultType.NotApplicable, EAssessmentResultTypeE1.Nvt)]
[TestCase(SimpleAssessmentResultType.ProbabilityNegligible, EAssessmentResultTypeE1.Fv)]
[TestCase(SimpleAssessmentResultType.AssessFurther, EAssessmentResultTypeE1.Vb)]
public void CreateAssessmentResultE1_ValidData_ReturnSimpleCalculationResult(SimpleAssessmentResultType originalResult,
EAssessmentResultTypeE1 expectedResult)
{
// Call
EAssessmentResultTypeE1 result = FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultE1(originalResult);
// Assert
Assert.AreEqual(expectedResult, result);
}
[Test]
public void CreateAssessmentResultTypeE2_WithInvalidEnumInput_ThrowInvalidEnumArgumentException()
{
// Call
TestDelegate test = () => FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeE2((SimpleAssessmentValidityOnlyResultType) 99);
// Assert
const string expectedMessage = "The value of argument 'input' (99) is invalid for Enum type 'SimpleAssessmentValidityOnlyResultType'.";
TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
}
[Test]
[TestCase(SimpleAssessmentValidityOnlyResultType.None, EAssessmentResultTypeE2.Gr)]
[TestCase(SimpleAssessmentValidityOnlyResultType.NotApplicable, EAssessmentResultTypeE2.Nvt)]
[TestCase(SimpleAssessmentValidityOnlyResultType.Applicable, EAssessmentResultTypeE2.Wvt)]
public void CreateAssessmentResultTypeE2_ValidData_ReturnSimpleCalculationResultValidityOnly(
SimpleAssessmentValidityOnlyResultType originalResult,
EAssessmentResultTypeE2 expectedResult)
{
// Call
EAssessmentResultTypeE2 result = FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeE2(originalResult);
// Assert
Assert.AreEqual(expectedResult, result);
}
#endregion
#region Detailed Assessment
[Test]
[TestCaseSource(nameof(InvalidDetailedAssessmentCategoryResults))]
public void CreateCategoryCompliancyResults_InvalidEnumInput_ThrowInvalidEnumArgumentException(
DetailedAssessmentResultType detailedAssessmentResultForFactorizedSignalingNorm,
DetailedAssessmentResultType detailedAssessmentResultForSignalingNorm,
DetailedAssessmentResultType detailedAssessmentResultForMechanismSpecificLowerLimitNorm,
DetailedAssessmentResultType detailedAssessmentResultForLowerLimitNorm,
DetailedAssessmentResultType detailedAssessmentResultForFactorizedLowerLimitNorm)
{
// Call
TestDelegate test = () => FailureMechanismSectionAssemblyCalculatorInputCreator.CreateCategoryCompliancyResults(
detailedAssessmentResultForFactorizedSignalingNorm,
detailedAssessmentResultForSignalingNorm,
detailedAssessmentResultForMechanismSpecificLowerLimitNorm,
detailedAssessmentResultForLowerLimitNorm,
detailedAssessmentResultForFactorizedLowerLimitNorm);
// Assert
string expectedMessage = $"The value of argument 'detailedAssessmentResult' (99) is invalid for Enum type '{nameof(DetailedAssessmentResultType)}'.";
TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
}
[Test]
public void CreateCategoryCompliancyResults_ValidInput_ReturnsFmSectionCategoryCompliancyResults()
{
// Setup
var random = new Random(39);
var detailedAssessmentResultForFactorizedSignalingNorm = random.NextEnumValue();
var detailedAssessmentResultForSignalingNorm = random.NextEnumValue();
var detailedAssessmentResultForMechanismSpecificLowerLimitNorm = random.NextEnumValue();
var detailedAssessmentResultForLowerLimitNorm = random.NextEnumValue();
var detailedAssessmentResultForFactorizedLowerLimitNorm = random.NextEnumValue();
// Call
FmSectionCategoryCompliancyResults result = FailureMechanismSectionAssemblyCalculatorInputCreator.CreateCategoryCompliancyResults(
detailedAssessmentResultForFactorizedSignalingNorm,
detailedAssessmentResultForSignalingNorm,
detailedAssessmentResultForMechanismSpecificLowerLimitNorm,
detailedAssessmentResultForLowerLimitNorm,
detailedAssessmentResultForFactorizedLowerLimitNorm);
// Assert
Dictionary results = result.GetCompliancyResults();
Assert.AreEqual(results[EFmSectionCategory.Iv], GetCategoryCompliance(detailedAssessmentResultForFactorizedSignalingNorm));
Assert.AreEqual(results[EFmSectionCategory.IIv], GetCategoryCompliance(detailedAssessmentResultForSignalingNorm));
Assert.AreEqual(results[EFmSectionCategory.IIIv], GetCategoryCompliance(detailedAssessmentResultForMechanismSpecificLowerLimitNorm));
Assert.AreEqual(results[EFmSectionCategory.IVv], GetCategoryCompliance(detailedAssessmentResultForLowerLimitNorm));
Assert.AreEqual(results[EFmSectionCategory.Vv], GetCategoryCompliance(detailedAssessmentResultForFactorizedLowerLimitNorm));
}
[Test]
public void CreateAssessmentResultTypeG1_InvalidEnumInput_ThrowInvalidEnumArgumentException()
{
// Call
TestDelegate test = () => FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeG1((DetailedAssessmentResultType) 99);
// Assert
string expectedMessage = $"The value of argument 'detailedAssessmentResult' (99) is invalid for Enum type '{nameof(DetailedAssessmentResultType)}'.";
TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
}
[Test]
[TestCase(DetailedAssessmentResultType.None)]
[TestCase(DetailedAssessmentResultType.Insufficient)]
[TestCase(DetailedAssessmentResultType.Sufficient)]
[TestCase(DetailedAssessmentResultType.NotAssessed)]
public void CreateAssessmentResultTypeG1_ValidInput_ReturnsDetailedCalculationResult(DetailedAssessmentResultType detailedAssessmentResult)
{
// Call
EAssessmentResultTypeG1 result = FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeG1(detailedAssessmentResult);
// Assert
Assert.AreEqual(result, GetAssessmentResultTypeG1(detailedAssessmentResult));
}
[Test]
public void CreateAssessmentResultTypeG2_InvalidEnumInput_ThrowInvalidEnumArgumentException()
{
// Call
TestDelegate test = () => FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeG2(
(DetailedAssessmentProbabilityOnlyResultType) 99);
// Assert
string expectedMessage = "The value of argument 'detailedAssessmentResult' (99) is invalid for Enum type " +
$"'{nameof(DetailedAssessmentProbabilityOnlyResultType)}'.";
TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
}
[Test]
[TestCase(DetailedAssessmentProbabilityOnlyResultType.Probability)]
[TestCase(DetailedAssessmentProbabilityOnlyResultType.NotAssessed)]
public void CreateAssessmentResultTypeG2_ValidInput_ReturnsDetailedCalculationResult(DetailedAssessmentProbabilityOnlyResultType detailedAssessmentResult)
{
// Call
EAssessmentResultTypeG2 result = FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeG2(detailedAssessmentResult);
// Assert
Assert.AreEqual(result, GetAssessmentResultTypeG2(detailedAssessmentResult));
}
private static IEnumerable InvalidDetailedAssessmentCategoryResults
{
get
{
var random = new Random(39);
yield return new TestCaseData((DetailedAssessmentResultType) 99,
random.NextEnumValue(),
random.NextEnumValue(),
random.NextEnumValue(),
random.NextEnumValue());
yield return new TestCaseData(random.NextEnumValue(),
(DetailedAssessmentResultType) 99,
random.NextEnumValue(),
random.NextEnumValue(),
random.NextEnumValue());
yield return new TestCaseData(random.NextEnumValue(),
random.NextEnumValue(),
(DetailedAssessmentResultType) 99,
random.NextEnumValue(),
random.NextEnumValue());
yield return new TestCaseData(random.NextEnumValue(),
random.NextEnumValue(),
random.NextEnumValue(),
(DetailedAssessmentResultType) 99,
random.NextEnumValue());
yield return new TestCaseData(random.NextEnumValue(),
random.NextEnumValue(),
random.NextEnumValue(),
random.NextEnumValue(),
(DetailedAssessmentResultType) 99);
}
}
private static EAssessmentResultTypeG1 GetAssessmentResultTypeG1(DetailedAssessmentResultType detailedAssessmentResult)
{
switch (detailedAssessmentResult)
{
case DetailedAssessmentResultType.None:
return EAssessmentResultTypeG1.Gr;
case DetailedAssessmentResultType.Sufficient:
return EAssessmentResultTypeG1.V;
case DetailedAssessmentResultType.Insufficient:
return EAssessmentResultTypeG1.Vn;
case DetailedAssessmentResultType.NotAssessed:
return EAssessmentResultTypeG1.Ngo;
default:
throw new NotSupportedException();
}
}
private static EAssessmentResultTypeG2 GetAssessmentResultTypeG2(DetailedAssessmentProbabilityOnlyResultType detailedAssessmentResult)
{
switch (detailedAssessmentResult)
{
case DetailedAssessmentProbabilityOnlyResultType.Probability:
return EAssessmentResultTypeG2.ResultSpecified;
case DetailedAssessmentProbabilityOnlyResultType.NotAssessed:
return EAssessmentResultTypeG2.Ngo;
default:
throw new NotSupportedException();
}
}
private static ECategoryCompliancy GetCategoryCompliance(DetailedAssessmentResultType detailedAssessmentResult)
{
switch (detailedAssessmentResult)
{
case DetailedAssessmentResultType.None:
return ECategoryCompliancy.NoResult;
case DetailedAssessmentResultType.Sufficient:
return ECategoryCompliancy.Complies;
case DetailedAssessmentResultType.Insufficient:
return ECategoryCompliancy.DoesNotComply;
case DetailedAssessmentResultType.NotAssessed:
return ECategoryCompliancy.Ngo;
default:
throw new NotSupportedException();
}
}
#endregion
#region Failure Mechanism Section Assembly
[Test]
public void CreateFailureMechanismSectionAssemblyDirectResult_AssemblyNull_ThrowsArgumentNullException()
{
// Call
TestDelegate call = () => FailureMechanismSectionAssemblyCalculatorInputCreator.CreateFailureMechanismSectionAssemblyDirectResult(null);
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("assembly", exception.ParamName);
}
[Test]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.NotApplicable, EFmSectionCategory.NotApplicable)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.None, EFmSectionCategory.Gr)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.Iv, EFmSectionCategory.Iv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.IIv, EFmSectionCategory.IIv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.IIIv, EFmSectionCategory.IIIv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.IVv, EFmSectionCategory.IVv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.Vv, EFmSectionCategory.Vv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.VIv, EFmSectionCategory.VIv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.VIIv, EFmSectionCategory.VIIv)]
public void CreateFailureMechanismSectionAssemblyDirectResult_WithAssembly_ReturnFailureMechanismSectionAssemblyCategoryResult(
FailureMechanismSectionAssemblyCategoryGroup originalGroup,
EFmSectionCategory expectedGroup)
{
// Setup
var random = new Random(11);
var assembly = new FailureMechanismSectionAssembly(random.NextDouble(), originalGroup);
// Call
FmSectionAssemblyDirectResult input = FailureMechanismSectionAssemblyCalculatorInputCreator.CreateFailureMechanismSectionAssemblyDirectResult(
assembly);
// Assert
Assert.AreEqual(assembly.Probability, input.FailureProbability);
Assert.AreEqual(expectedGroup, input.Result);
}
[Test]
public void CreateFailureMechanismSectionAssemblyDirectResult_WithInvalidEnumInput_ThrowInvalidEnumArgumentException()
{
// Call
TestDelegate test = () => FailureMechanismSectionAssemblyCalculatorInputCreator.CreateFailureMechanismSectionAssemblyDirectResult(
new FailureMechanismSectionAssembly(0, (FailureMechanismSectionAssemblyCategoryGroup) 99));
// Assert
const string expectedMessage = "The value of argument 'category' (99) is invalid for Enum type 'FailureMechanismSectionAssemblyCategoryGroup'.";
TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
}
[Test]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.NotApplicable, EFmSectionCategory.NotApplicable)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.None, EFmSectionCategory.Gr)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.Iv, EFmSectionCategory.Iv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.IIv, EFmSectionCategory.IIv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.IIIv, EFmSectionCategory.IIIv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.IVv, EFmSectionCategory.IVv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.Vv, EFmSectionCategory.Vv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.VIv, EFmSectionCategory.VIv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.VIIv, EFmSectionCategory.VIIv)]
public void CreateFailureMechanismSectionAssemblyDirectResult_WithValidGroup_ReturnEFmSectionCategory(
FailureMechanismSectionAssemblyCategoryGroup originalGroup,
EFmSectionCategory expectedGroup)
{
// Call
FmSectionAssemblyDirectResult actualResult = FailureMechanismSectionAssemblyCalculatorInputCreator.CreateFailureMechanismSectionAssemblyDirectResult(
originalGroup);
// Assert
Assert.AreEqual(expectedGroup, actualResult.Result);
Assert.IsNull(actualResult.FailureProbability);
}
[Test]
public void CreateFailureMechanismSectionAssemblyDirectResult_WithInvalidGroup_ThrowInvalidEnumArgumentException()
{
// Call
TestDelegate test = () => FailureMechanismSectionAssemblyCalculatorInputCreator.CreateFailureMechanismSectionAssemblyDirectResult(
(FailureMechanismSectionAssemblyCategoryGroup) 99);
// Assert
const string expectedMessage = "The value of argument 'category' (99) is invalid for Enum type 'FailureMechanismSectionAssemblyCategoryGroup'.";
TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
}
#endregion
#region Tailor Made Assessment
[Test]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.NotApplicable, EAssessmentResultTypeT3.ResultSpecified, EFmSectionCategory.NotApplicable)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.None, EAssessmentResultTypeT3.Gr, null)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.Iv, EAssessmentResultTypeT3.ResultSpecified, EFmSectionCategory.Iv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.IIv, EAssessmentResultTypeT3.ResultSpecified, EFmSectionCategory.IIv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.IIIv, EAssessmentResultTypeT3.ResultSpecified, EFmSectionCategory.IIIv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.IVv, EAssessmentResultTypeT3.ResultSpecified, EFmSectionCategory.IVv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.Vv, EAssessmentResultTypeT3.ResultSpecified, EFmSectionCategory.Vv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.VIv, EAssessmentResultTypeT3.ResultSpecified, EFmSectionCategory.VIv)]
[TestCase(FailureMechanismSectionAssemblyCategoryGroup.VIIv, EAssessmentResultTypeT3.ResultSpecified, EFmSectionCategory.VIIv)]
public void ConvertTailorMadeFailureMechanismSectionAssemblyCategoryGroup_ValidGroup_ReturnsExpectedItems(
FailureMechanismSectionAssemblyCategoryGroup originalGroup,
EAssessmentResultTypeT3 expectedResult,
EFmSectionCategory? expectedGroup)
{
// Call
Tuple actualGroup =
FailureMechanismSectionAssemblyCalculatorInputCreator.ConvertTailorMadeFailureMechanismSectionAssemblyCategoryGroup(originalGroup);
// Assert
Assert.AreEqual(expectedResult, actualGroup.Item1);
Assert.AreEqual(expectedGroup, actualGroup.Item2);
}
[Test]
public void ConvertTailorMadeFailureMechanismSectionAssemblyCategoryGroup_InvalidGroup_ThrowInvalidEnumArgumentException()
{
// Call
TestDelegate test = () => FailureMechanismSectionAssemblyCalculatorInputCreator.ConvertTailorMadeFailureMechanismSectionAssemblyCategoryGroup(
(FailureMechanismSectionAssemblyCategoryGroup) 99);
// Assert
const string expectedMessage = "The value of argument 'category' (99) is invalid for Enum type 'FailureMechanismSectionAssemblyCategoryGroup'.";
TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
}
[Test]
public void CreateAssessmentResultTypeT1_InvalidEnumInput_ThrowInvalidEnumArgumentException()
{
// Call
TestDelegate test = () => FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeT1((TailorMadeAssessmentResultType) 99);
// Assert
string expectedMessage = $"The value of argument 'tailorMadeAssessmentResult' (99) is invalid for Enum type '{nameof(TailorMadeAssessmentResultType)}'.";
TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
}
[Test]
[TestCase(TailorMadeAssessmentResultType.None)]
[TestCase(TailorMadeAssessmentResultType.ProbabilityNegligible)]
[TestCase(TailorMadeAssessmentResultType.Insufficient)]
[TestCase(TailorMadeAssessmentResultType.Sufficient)]
[TestCase(TailorMadeAssessmentResultType.NotAssessed)]
public void CreateAssessmentResultTypeT1_ValidInput_ReturnsTailorMadeCalculationResult(TailorMadeAssessmentResultType detailedAssessmentResult)
{
// Call
EAssessmentResultTypeT1 result = FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeT1(detailedAssessmentResult);
// Assert
Assert.AreEqual(result, GetAssessmentResultTypeT1(detailedAssessmentResult));
}
private static EAssessmentResultTypeT1 GetAssessmentResultTypeT1(TailorMadeAssessmentResultType detailedAssessmentResult)
{
switch (detailedAssessmentResult)
{
case TailorMadeAssessmentResultType.None:
return EAssessmentResultTypeT1.Gr;
case TailorMadeAssessmentResultType.ProbabilityNegligible:
return EAssessmentResultTypeT1.Fv;
case TailorMadeAssessmentResultType.Sufficient:
return EAssessmentResultTypeT1.V;
case TailorMadeAssessmentResultType.Insufficient:
return EAssessmentResultTypeT1.Vn;
case TailorMadeAssessmentResultType.NotAssessed:
return EAssessmentResultTypeT1.Ngo;
default:
throw new NotSupportedException();
}
}
[Test]
public void CreateAssessmentResultTypeT3_InvalidEnumInput_ThrowInvalidEnumArgumentException()
{
// Call
TestDelegate test = () => FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeT3((TailorMadeAssessmentProbabilityCalculationResultType) 99);
// Assert
string expectedMessage = $"The value of argument 'tailorMadeAssessmentResult' (99) is invalid for Enum type '{nameof(TailorMadeAssessmentProbabilityCalculationResultType)}'.";
TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
}
[Test]
[TestCase(TailorMadeAssessmentProbabilityCalculationResultType.None)]
[TestCase(TailorMadeAssessmentProbabilityCalculationResultType.ProbabilityNegligible)]
[TestCase(TailorMadeAssessmentProbabilityCalculationResultType.Probability)]
[TestCase(TailorMadeAssessmentProbabilityCalculationResultType.NotAssessed)]
public void CreateAssessmentResultTypeT3_ValidInput_ReturnsTailorMadeCalculationResult(TailorMadeAssessmentProbabilityCalculationResultType detailedAssessmentResult)
{
// Call
EAssessmentResultTypeT3 result = FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeT3(detailedAssessmentResult);
// Assert
Assert.AreEqual(result, GetAssessmentResultTypeT3(detailedAssessmentResult));
}
private static EAssessmentResultTypeT3 GetAssessmentResultTypeT3(TailorMadeAssessmentProbabilityCalculationResultType detailedAssessmentResult)
{
switch (detailedAssessmentResult)
{
case TailorMadeAssessmentProbabilityCalculationResultType.None:
return EAssessmentResultTypeT3.Gr;
case TailorMadeAssessmentProbabilityCalculationResultType.ProbabilityNegligible:
return EAssessmentResultTypeT3.Fv;
case TailorMadeAssessmentProbabilityCalculationResultType.Probability:
return EAssessmentResultTypeT3.ResultSpecified;
case TailorMadeAssessmentProbabilityCalculationResultType.NotAssessed:
return EAssessmentResultTypeT3.Ngo;
default:
throw new NotSupportedException();
}
}
[Test]
public void CreateAssessmentResultTypeT4_InvalidEnumInput_ThrowInvalidEnumArgumentException()
{
// Call
TestDelegate test = () => FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeT4((TailorMadeAssessmentProbabilityAndDetailedCalculationResultType) 99);
// Assert
string expectedMessage = $"The value of argument 'tailorMadeAssessmentResult' (99) is invalid for Enum type '{nameof(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType)}'.";
TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage);
}
[Test]
[TestCase(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.None)]
[TestCase(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.ProbabilityNegligible)]
[TestCase(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.Probability)]
[TestCase(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.Sufficient)]
[TestCase(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.Insufficient)]
[TestCase(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.NotAssessed)]
public void CreateAssessmentResultTypeT4_ValidInput_ReturnsTailorMadeCalculationResult(
TailorMadeAssessmentProbabilityAndDetailedCalculationResultType detailedAssessmentResult)
{
// Call
EAssessmentResultTypeT4 result = FailureMechanismSectionAssemblyCalculatorInputCreator.CreateAssessmentResultTypeT4(detailedAssessmentResult);
// Assert
Assert.AreEqual(result, GetAssessmentResultTypeT4(detailedAssessmentResult));
}
private static EAssessmentResultTypeT4 GetAssessmentResultTypeT4(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType detailedAssessmentResult)
{
switch (detailedAssessmentResult)
{
case TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.None:
return EAssessmentResultTypeT4.Gr;
case TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.ProbabilityNegligible:
return EAssessmentResultTypeT4.Fv;
case TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.Probability:
return EAssessmentResultTypeT4.ResultSpecified;
case TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.Sufficient:
return EAssessmentResultTypeT4.V;
case TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.Insufficient:
return EAssessmentResultTypeT4.Vn;
case TailorMadeAssessmentProbabilityAndDetailedCalculationResultType.NotAssessed:
return EAssessmentResultTypeT4.Ngo;
default:
throw new NotSupportedException();
}
}
#endregion
}
}