Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Creators/AssemblyCategoryCreator.cs
===================================================================
diff -u -r19fd80cc583267703afacd8eb812d170d3282fa0 -r7b5c9aa3a65821c1b219ba3ef2c99830c1e25d8a
--- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Creators/AssemblyCategoryCreator.cs (.../AssemblyCategoryCreator.cs) (revision 19fd80cc583267703afacd8eb812d170d3282fa0)
+++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Creators/AssemblyCategoryCreator.cs (.../AssemblyCategoryCreator.cs) (revision 7b5c9aa3a65821c1b219ba3ef2c99830c1e25d8a)
@@ -61,6 +61,32 @@
}
///
+ /// Creates an
+ /// based on the information given in the .
+ ///
+ /// The output to create the result for.
+ /// An
+ /// with information taken from the .
+ /// Thrown when is null.
+ /// Thrown when
+ /// is an invalid value.
+ /// Thrown when
+ /// is a valid value, but unsupported.
+ public static IEnumerable CreateFailureMechanismSectionAssemblyCategories(
+ CalculationOutput output)
+ {
+ if (output == null)
+ {
+ throw new ArgumentNullException(nameof(output));
+ }
+
+ return output.Result.Select(
+ categoriesOutput => new FailureMechanismSectionAssemblyCategory(categoriesOutput.LowerBoundary,
+ categoriesOutput.UpperBoundary,
+ ConvertFailureMechanismSectionCategoryGroup(categoriesOutput.CategoryGroup))).ToArray();
+ }
+
+ ///
/// Converts a into a .
///
/// The to convert.
@@ -94,5 +120,48 @@
throw new NotSupportedException();
}
}
+
+ ///
+ /// Converts a into a .
+ ///
+ /// The to convert.
+ /// A based on .
+ /// Thrown when
+ /// is an invalid value.
+ /// Thrown when
+ /// is a valid value, but unsupported.
+ private static FailureMechanismSectionAssemblyCategoryGroup ConvertFailureMechanismSectionCategoryGroup(FailureMechanismSectionCategoryGroup category)
+ {
+ if (!Enum.IsDefined(typeof(FailureMechanismSectionCategoryGroup), category))
+ {
+ throw new InvalidEnumArgumentException(nameof(category),
+ (int) category,
+ typeof(FailureMechanismSectionCategoryGroup));
+ }
+
+ switch (category)
+ {
+ case FailureMechanismSectionCategoryGroup.Iv:
+ return FailureMechanismSectionAssemblyCategoryGroup.Iv;
+ case FailureMechanismSectionCategoryGroup.IIv:
+ return FailureMechanismSectionAssemblyCategoryGroup.IIv;
+ case FailureMechanismSectionCategoryGroup.IIIv:
+ return FailureMechanismSectionAssemblyCategoryGroup.IIIv;
+ case FailureMechanismSectionCategoryGroup.IVv:
+ return FailureMechanismSectionAssemblyCategoryGroup.IVv;
+ case FailureMechanismSectionCategoryGroup.Vv:
+ return FailureMechanismSectionAssemblyCategoryGroup.Vv;
+ case FailureMechanismSectionCategoryGroup.VIv:
+ return FailureMechanismSectionAssemblyCategoryGroup.VIv;
+ case FailureMechanismSectionCategoryGroup.VIIv:
+ return FailureMechanismSectionAssemblyCategoryGroup.VIIv;
+ case FailureMechanismSectionCategoryGroup.NotApplicable:
+ return FailureMechanismSectionAssemblyCategoryGroup.NotApplicable;
+ case FailureMechanismSectionCategoryGroup.None:
+ return FailureMechanismSectionAssemblyCategoryGroup.None;
+ default:
+ throw new NotSupportedException();
+ }
+ }
}
}
\ No newline at end of file
Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/AssemblyCategoryAssert.cs
===================================================================
diff -u -r78a2d68d97b329b4c1309349a564b6a52448accd -r7b5c9aa3a65821c1b219ba3ef2c99830c1e25d8a
--- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/AssemblyCategoryAssert.cs (.../AssemblyCategoryAssert.cs) (revision 78a2d68d97b329b4c1309349a564b6a52448accd)
+++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/AssemblyCategoryAssert.cs (.../AssemblyCategoryAssert.cs) (revision 7b5c9aa3a65821c1b219ba3ef2c99830c1e25d8a)
@@ -42,17 +42,34 @@
/// Thrown when
/// is not equal to .
public static void AssertAssessmentSectionAssemblyCategories(CalculationOutput original,
- IEnumerable actual)
+ IEnumerable actual)
{
Assert.AreEqual(original.Result.Length, actual.Count());
- CollectionAssert.AreEqual(original.Result.Select(o => GetCategoryGroup(o.CategoryGroup)), actual.Select(r => r.Group));
+ CollectionAssert.AreEqual(original.Result.Select(o => GetAssessmentSectionCategoryGroup(o.CategoryGroup)), actual.Select(r => r.Group));
CollectionAssert.AreEqual(original.Result.Select(o => o.LowerBoundary), actual.Select(r => r.LowerBoundary));
CollectionAssert.AreEqual(original.Result.Select(o => o.UpperBoundary), actual.Select(r => r.UpperBoundary));
}
- private static AssessmentSectionAssemblyCategoryGroup GetCategoryGroup(AssessmentSectionCategoryGroup category)
+ ///
+ /// Asserts whether is equal to .
+ ///
+ /// The original .
+ /// The actual .
+ /// Thrown when
+ /// is not equal to .
+ public static void AssertFailureMechanismSectionAssemblyCategories(CalculationOutput original,
+ IEnumerable actual)
{
+ Assert.AreEqual(original.Result.Length, actual.Count());
+
+ CollectionAssert.AreEqual(original.Result.Select(o => GetFailureMechanismSectionCategoryGroup(o.CategoryGroup)), actual.Select(r => r.Group));
+ CollectionAssert.AreEqual(original.Result.Select(o => o.LowerBoundary), actual.Select(r => r.LowerBoundary));
+ CollectionAssert.AreEqual(original.Result.Select(o => o.UpperBoundary), actual.Select(r => r.UpperBoundary));
+ }
+
+ private static AssessmentSectionAssemblyCategoryGroup GetAssessmentSectionCategoryGroup(AssessmentSectionCategoryGroup category)
+ {
switch (category)
{
case AssessmentSectionCategoryGroup.APlus:
@@ -69,5 +86,32 @@
throw new NotSupportedException();
}
}
+
+ private static FailureMechanismSectionAssemblyCategoryGroup GetFailureMechanismSectionCategoryGroup(FailureMechanismSectionCategoryGroup category)
+ {
+ switch (category)
+ {
+ case FailureMechanismSectionCategoryGroup.Iv:
+ return FailureMechanismSectionAssemblyCategoryGroup.Iv;
+ case FailureMechanismSectionCategoryGroup.IIv:
+ return FailureMechanismSectionAssemblyCategoryGroup.IIv;
+ case FailureMechanismSectionCategoryGroup.IIIv:
+ return FailureMechanismSectionAssemblyCategoryGroup.IIIv;
+ case FailureMechanismSectionCategoryGroup.IVv:
+ return FailureMechanismSectionAssemblyCategoryGroup.IVv;
+ case FailureMechanismSectionCategoryGroup.Vv:
+ return FailureMechanismSectionAssemblyCategoryGroup.Vv;
+ case FailureMechanismSectionCategoryGroup.VIv:
+ return FailureMechanismSectionAssemblyCategoryGroup.VIv;
+ case FailureMechanismSectionCategoryGroup.VIIv:
+ return FailureMechanismSectionAssemblyCategoryGroup.VIIv;
+ case FailureMechanismSectionCategoryGroup.NotApplicable:
+ return FailureMechanismSectionAssemblyCategoryGroup.NotApplicable;
+ case FailureMechanismSectionCategoryGroup.None:
+ return FailureMechanismSectionAssemblyCategoryGroup.None;
+ default:
+ throw new NotSupportedException();
+ }
+ }
}
}
\ No newline at end of file
Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Creators/AssemblyCategoryCreatorTest.cs
===================================================================
diff -u -r78a2d68d97b329b4c1309349a564b6a52448accd -r7b5c9aa3a65821c1b219ba3ef2c99830c1e25d8a
--- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Creators/AssemblyCategoryCreatorTest.cs (.../AssemblyCategoryCreatorTest.cs) (revision 78a2d68d97b329b4c1309349a564b6a52448accd)
+++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Creators/AssemblyCategoryCreatorTest.cs (.../AssemblyCategoryCreatorTest.cs) (revision 7b5c9aa3a65821c1b219ba3ef2c99830c1e25d8a)
@@ -110,5 +110,84 @@
Assert.AreEqual(expectedCategoryGroup, categoryResult.Group);
}
+
+ [Test]
+ public void CreateFailureMechanismSectionAssemblyCategories_OutputNull_ThrowsArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => AssemblyCategoryCreator.CreateFailureMechanismSectionAssemblyCategories(null);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("output", exception.ParamName);
+ }
+
+ [Test]
+ public void CreateFailureMechanismSectionAssemblyCategories_WithOutput_ReturnFailureMechanismSectionAssemblyCategoryResult()
+ {
+ // Setup
+ var random = new Random(11);
+
+ var output = new CalculationOutput(new[]
+ {
+ new FailureMechanismSectionCategory(random.NextEnumValue(), new Probability(random.Next(1)), new Probability(random.Next(1, 2))),
+ new FailureMechanismSectionCategory(random.NextEnumValue(), new Probability(random.Next(1)), new Probability(random.Next(1, 2))),
+ new FailureMechanismSectionCategory(random.NextEnumValue(), new Probability(random.Next(1)), new Probability(random.Next(1, 2))),
+ new FailureMechanismSectionCategory(random.NextEnumValue(), new Probability(random.Next(1)), new Probability(random.Next(1, 2)))
+ });
+
+ // Call
+ IEnumerable result = AssemblyCategoryCreator.CreateFailureMechanismSectionAssemblyCategories(output);
+
+ // Assert
+ AssemblyCategoryAssert.AssertFailureMechanismSectionAssemblyCategories(output, result);
+ }
+
+ [Test]
+ public void CreateFailureMechanismSectionAssemblyCategories_CategoryWithInvalidFailureMechanismSectionAssemblyCategory_ThrowsInvalidEnumArgumentException()
+ {
+ // Setup
+ var output = new CalculationOutput(new[]
+ {
+ new FailureMechanismSectionCategory((FailureMechanismSectionCategoryGroup) 99, new Probability(0), new Probability(0))
+ });
+
+ // Call
+ TestDelegate test = () => AssemblyCategoryCreator.CreateFailureMechanismSectionAssemblyCategories(output);
+
+ // Assert
+ const string exceptionMessage = "The value of argument 'category' (99) is invalid for Enum type 'FailureMechanismSectionCategoryGroup'.";
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, exceptionMessage);
+ }
+
+ [Test]
+ [TestCase(FailureMechanismSectionCategoryGroup.Iv, FailureMechanismSectionAssemblyCategoryGroup.Iv)]
+ [TestCase(FailureMechanismSectionCategoryGroup.IIv, FailureMechanismSectionAssemblyCategoryGroup.IIv)]
+ [TestCase(FailureMechanismSectionCategoryGroup.IIIv, FailureMechanismSectionAssemblyCategoryGroup.IIIv)]
+ [TestCase(FailureMechanismSectionCategoryGroup.IVv, FailureMechanismSectionAssemblyCategoryGroup.IVv)]
+ [TestCase(FailureMechanismSectionCategoryGroup.Vv, FailureMechanismSectionAssemblyCategoryGroup.Vv)]
+ [TestCase(FailureMechanismSectionCategoryGroup.VIv, FailureMechanismSectionAssemblyCategoryGroup.VIv)]
+ [TestCase(FailureMechanismSectionCategoryGroup.VIIv, FailureMechanismSectionAssemblyCategoryGroup.VIIv)]
+ [TestCase(FailureMechanismSectionCategoryGroup.NotApplicable, FailureMechanismSectionAssemblyCategoryGroup.NotApplicable)]
+ [TestCase(FailureMechanismSectionCategoryGroup.None, FailureMechanismSectionAssemblyCategoryGroup.None)]
+ public void CreateFailureMechanismSectionAssemblyCategories_CategoryWithValidFailureMechanismSectionAssemblyCategory_ExpectedFailureMechanismSectionAssemblyCategoryResultType(
+ FailureMechanismSectionCategoryGroup categoryGroup,
+ FailureMechanismSectionAssemblyCategoryGroup expectedCategoryGroup)
+ {
+ // Setup
+ var output = new CalculationOutput(new[]
+ {
+ new FailureMechanismSectionCategory(categoryGroup, new Probability(0), new Probability(0))
+ });
+
+ // Call
+ IEnumerable result = AssemblyCategoryCreator.CreateFailureMechanismSectionAssemblyCategories(output);
+
+ // Assert
+ Assert.AreEqual(1, result.Count());
+ FailureMechanismSectionAssemblyCategory categoryResult = result.First();
+
+ Assert.AreEqual(expectedCategoryGroup, categoryResult.Group);
+ }
}
}
\ No newline at end of file