Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/AssemblyXmlIdentifiers.cs =================================================================== diff -u -r5c59e60cae7bc68b321c0ee187a7d4dd9dd753b2 -r24154e2ef651d5deac25c6caf8f143d0348b29ff --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/AssemblyXmlIdentifiers.cs (.../AssemblyXmlIdentifiers.cs) (revision 5c59e60cae7bc68b321c0ee187a7d4dd9dd753b2) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/AssemblyXmlIdentifiers.cs (.../AssemblyXmlIdentifiers.cs) (revision 24154e2ef651d5deac25c6caf8f143d0348b29ff) @@ -161,6 +161,11 @@ /// Identifier for a failure mechanism section element. /// public const string FailureMechanismSection = "Waterkeringsectie"; + + /// + /// Identifier for a failure mechanism section ID reference attribute. + /// + public const string FailureMechanismSectionIdRef = "WaterkeringsectieIDRef"; /// /// Identifier for a failure mechanism section assembly element. Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanismSectionAssembly.cs =================================================================== diff -u -rb50aa5c330d5c514ef0727cb9b732094c228eb46 -r24154e2ef651d5deac25c6caf8f143d0348b29ff --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanismSectionAssembly.cs (.../SerializableFailureMechanismSectionAssembly.cs) (revision b50aa5c330d5c514ef0727cb9b732094c228eb46) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.IO/Model/SerializableFailureMechanismSectionAssembly.cs (.../SerializableFailureMechanismSectionAssembly.cs) (revision 24154e2ef651d5deac25c6caf8f143d0348b29ff) @@ -41,11 +41,13 @@ /// /// The unique ID of the assembly result. /// The failure mechanism this assembly belongs to. + /// The section this assembly belongs to. /// The collection of assembly results for this section assembly. /// The combined assembly result for this section assembly. /// Thrown when any parameter is null. public SerializableFailureMechanismSectionAssembly(string id, SerializableFailureMechanism failureMechanism, + SerializableFailureMechanismSection section, SerializableFailureMechanismSectionAssemblyResult[] sectionResults, SerializableFailureMechanismSectionAssemblyResult combinedSectionResult) : this() { @@ -59,6 +61,11 @@ throw new ArgumentNullException(nameof(failureMechanism)); } + if (section == null) + { + throw new ArgumentNullException(nameof(section)); + } + if (sectionResults == null) { throw new ArgumentNullException(nameof(sectionResults)); @@ -71,6 +78,7 @@ Id = id; FailureMechanismId = failureMechanism.Id; + FailureMechanismSectionId = section.Id; SectionResults = sectionResults; CombinedSectionResult = combinedSectionResult; } @@ -88,6 +96,12 @@ public string FailureMechanismId { get; set; } /// + /// Gets or sets the parent failure mechanism section ID. + /// + [XmlAttribute(AssemblyXmlIdentifiers.FailureMechanismSectionIdRef)] + public string FailureMechanismSectionId { get; set; } + + /// /// Gets or sets the combined assembly result. /// [XmlElement(AssemblyXmlIdentifiers.CombinedSectionResult)] Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableAssemblyTest.cs =================================================================== diff -u -r5c59e60cae7bc68b321c0ee187a7d4dd9dd753b2 -r24154e2ef651d5deac25c6caf8f143d0348b29ff --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableAssemblyTest.cs (.../SerializableAssemblyTest.cs) (revision 5c59e60cae7bc68b321c0ee187a7d4dd9dd753b2) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableAssemblyTest.cs (.../SerializableAssemblyTest.cs) (revision 24154e2ef651d5deac25c6caf8f143d0348b29ff) @@ -226,6 +226,7 @@ var result1 = new SerializableFailureMechanismSectionAssembly("sr1", failureMechanism1, + section1, new[] { new SerializableFailureMechanismSectionAssemblyResult(SerializableAssemblyMethod.WBI0E1, SerializableAssessmentLevel.SimpleAssessment, SerializableFailureMechanismSectionCategoryGroup.IIv, 0.5), Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismSectionAssemblyTest.cs =================================================================== diff -u -rb50aa5c330d5c514ef0727cb9b732094c228eb46 -r24154e2ef651d5deac25c6caf8f143d0348b29ff --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismSectionAssemblyTest.cs (.../SerializableFailureMechanismSectionAssemblyTest.cs) (revision b50aa5c330d5c514ef0727cb9b732094c228eb46) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.IO.Test/Model/SerializableFailureMechanismSectionAssemblyTest.cs (.../SerializableFailureMechanismSectionAssemblyTest.cs) (revision 24154e2ef651d5deac25c6caf8f143d0348b29ff) @@ -20,9 +20,13 @@ // All rights reserved. using System; +using System.Linq; +using Core.Common.Base.Geometry; +using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.AssemblyTool.IO.Model; using Ringtoets.AssemblyTool.IO.Model.DataTypes; +using Ringtoets.AssemblyTool.IO.Model.Enums; using Ringtoets.AssemblyTool.IO.TestUtil; namespace Ringtoets.AssemblyTool.IO.Test.Model @@ -40,13 +44,16 @@ Assert.IsInstanceOf(sectionAssembly); Assert.IsNull(sectionAssembly.Id); Assert.IsNull(sectionAssembly.FailureMechanismId); + Assert.IsNull(sectionAssembly.FailureMechanismSectionId); Assert.IsNull(sectionAssembly.CombinedSectionResult); Assert.IsNull(sectionAssembly.SectionResults); SerializableAttributeTestHelper.AssertXmlAttributeAttribute( nameof(SerializableFailureMechanismSectionAssembly.Id), "ToetsID"); SerializableAttributeTestHelper.AssertXmlAttributeAttribute( nameof(SerializableFailureMechanismSectionAssembly.FailureMechanismId), "ToetsspoorIDRef"); + SerializableAttributeTestHelper.AssertXmlAttributeAttribute( + nameof(SerializableFailureMechanismSectionAssembly.FailureMechanismSectionId), "WaterkeringsectieIDRef"); SerializableAttributeTestHelper.AssertXmlElementAttribute( nameof(SerializableFailureMechanismSectionAssembly.CombinedSectionResult), "eindtoetsoordeel"); @@ -60,6 +67,7 @@ // Call TestDelegate call = () => new SerializableFailureMechanismSectionAssembly(null, new SerializableFailureMechanism(), + new SerializableFailureMechanismSection(), new SerializableFailureMechanismSectionAssemblyResult[0], new SerializableFailureMechanismSectionAssemblyResult()); @@ -74,6 +82,7 @@ // Call TestDelegate call = () => new SerializableFailureMechanismSectionAssembly("id", null, + new SerializableFailureMechanismSection(), new SerializableFailureMechanismSectionAssemblyResult[0], new SerializableFailureMechanismSectionAssemblyResult()); @@ -83,11 +92,27 @@ } [Test] + public void Constructor_SectionNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => new SerializableFailureMechanismSectionAssembly("id", + new SerializableFailureMechanism(), + null, + new SerializableFailureMechanismSectionAssemblyResult[0], + new SerializableFailureMechanismSectionAssemblyResult()); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("section", exception.ParamName); + } + + [Test] public void Constructor_SectionResultsNull_ThrowsArgumentNullException() { // Call TestDelegate call = () => new SerializableFailureMechanismSectionAssembly("id", new SerializableFailureMechanism(), + new SerializableFailureMechanismSection(), null, new SerializableFailureMechanismSectionAssemblyResult()); @@ -102,6 +127,7 @@ // Call TestDelegate call = () => new SerializableFailureMechanismSectionAssembly("id", new SerializableFailureMechanism(), + new SerializableFailureMechanismSection(), new SerializableFailureMechanismSectionAssemblyResult[0], null); @@ -116,19 +142,31 @@ // Setup const string id = "id"; - var failureMechanism = new SerializableFailureMechanism(); + var random = new Random(39); + var failureMechanism = new SerializableFailureMechanism("failure mechanism ID", + new SerializableTotalAssemblyResult(), + random.NextEnumValue(), + random.NextEnumValue(), + new SerializableFailureMechanismAssemblyResult()); + var section = new SerializableFailureMechanismSection("section ID", + new SerializableFailureMechanismSections(), + random.NextDouble(), + random.NextDouble(), + Enumerable.Empty()); var sectionResults = new SerializableFailureMechanismSectionAssemblyResult[0]; var combinedSectionResult = new SerializableFailureMechanismSectionAssemblyResult(); // Call var sectionAssembly = new SerializableFailureMechanismSectionAssembly(id, failureMechanism, + section, sectionResults, combinedSectionResult); // Assert Assert.AreEqual(id, sectionAssembly.Id); Assert.AreEqual(failureMechanism.Id, sectionAssembly.FailureMechanismId); + Assert.AreEqual(section.Id, sectionAssembly.FailureMechanismSectionId); Assert.AreSame(sectionResults, sectionAssembly.SectionResults); Assert.AreSame(combinedSectionResult, sectionAssembly.CombinedSectionResult); }