Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreator.cs =================================================================== diff -u --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreator.cs (revision 0) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreator.cs (revision 728cb3dd140c73e41fc4305d5bcc9c9b8f690208) @@ -0,0 +1,92 @@ +// 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.Linq; +using Ringtoets.AssemblyTool.IO.Model; +using Ringtoets.AssemblyTool.IO.Model.Enums; +using Ringtoets.Integration.IO.Assembly; +using Ringtoets.Integration.IO.Helpers; +using Ringtoets.Integration.IO.Properties; + +namespace Ringtoets.Integration.IO.Creators +{ + /// + /// Creator to create instances of . + /// + public static class AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreator + { + /// + /// Creates an instance of + /// based on its input parameters. + /// + /// The id generator to generated ids for the serializable components. + /// The the serializable + /// components belong to. + /// The + /// the serializable failure mechanism sections belong to. + /// The to create a + /// for. + /// An . + /// Thrown when any parameter is null. + public static AggregatedSerializableCombinedFailureMechanismSectionAssembly Create(UniqueIdentifierGenerator idGenerator, + SerializableTotalAssemblyResult serializableTotalAssemblyResult, + SerializableFailureMechanismSectionCollection serializableFailureMechanismSectionCollection, + ExportableCombinedSectionAssembly combinedSectionAssembly) + { + if (idGenerator == null) + { + throw new ArgumentNullException(nameof(idGenerator)); + } + + if (serializableTotalAssemblyResult == null) + { + throw new ArgumentNullException(nameof(serializableTotalAssemblyResult)); + } + + if (serializableFailureMechanismSectionCollection == null) + { + throw new ArgumentNullException(nameof(serializableFailureMechanismSectionCollection)); + } + + if (combinedSectionAssembly == null) + { + throw new ArgumentNullException(nameof(combinedSectionAssembly)); + } + + SerializableFailureMechanismSection failureMechanismSection = SerializableFailureMechanismSectionCreator.Create(idGenerator, + serializableFailureMechanismSectionCollection, + combinedSectionAssembly.Section); + + return new AggregatedSerializableCombinedFailureMechanismSectionAssembly( + failureMechanismSection, + new SerializableCombinedFailureMechanismSectionAssembly( + idGenerator.GetNewId(Resources.SerializableCombinedFailureMechanismSectionAssembly_IdPrefix), + serializableTotalAssemblyResult, + failureMechanismSection, + combinedSectionAssembly.FailureMechanismResults + .Select(SerializableCombinedFailureMechanismSectionAssemblyResultCreator.Create) + .ToArray(), + SerializableFailureMechanismSectionAssemblyResultCreator.Create(SerializableAssessmentType.CombinedAssessment, + combinedSectionAssembly.CombinedSectionAssemblyResult))); + } + } +} \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Properties/Resources.Designer.cs =================================================================== diff -u -ra1d7516cca954a2343d3a1ee1cd23dfca318e4a7 -r728cb3dd140c73e41fc4305d5bcc9c9b8f690208 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision a1d7516cca954a2343d3a1ee1cd23dfca318e4a7) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 728cb3dd140c73e41fc4305d5bcc9c9b8f690208) @@ -109,6 +109,15 @@ } /// + /// Looks up a localized string similar to Gto. + /// + internal static string SerializableCombinedFailureMechanismSectionAssembly_IdPrefix { + get { + return ResourceManager.GetString("SerializableCombinedFailureMechanismSectionAssembly_IdPrefix", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Ts. /// internal static string SerializableFailureMechanismCreator_IdPrefix { Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Properties/Resources.resx =================================================================== diff -u -ra1d7516cca954a2343d3a1ee1cd23dfca318e4a7 -r728cb3dd140c73e41fc4305d5bcc9c9b8f690208 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Properties/Resources.resx (.../Resources.resx) (revision a1d7516cca954a2343d3a1ee1cd23dfca318e4a7) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Properties/Resources.resx (.../Resources.resx) (revision 728cb3dd140c73e41fc4305d5bcc9c9b8f690208) @@ -141,4 +141,7 @@ Vi + + Gto + \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Ringtoets.Integration.IO.csproj =================================================================== diff -u -rcb6212fd6cb39079fd0c0390522b0776ad40997f -r728cb3dd140c73e41fc4305d5bcc9c9b8f690208 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Ringtoets.Integration.IO.csproj (.../Ringtoets.Integration.IO.csproj) (revision cb6212fd6cb39079fd0c0390522b0776ad40997f) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Ringtoets.Integration.IO.csproj (.../Ringtoets.Integration.IO.csproj) (revision 728cb3dd140c73e41fc4305d5bcc9c9b8f690208) @@ -37,6 +37,7 @@ + Index: Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreatorTest.cs =================================================================== diff -u --- Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreatorTest.cs (revision 0) +++ Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreatorTest.cs (revision 728cb3dd140c73e41fc4305d5bcc9c9b8f690208) @@ -0,0 +1,201 @@ +// 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.Linq; +using Core.Common.TestUtil; +using NUnit.Framework; +using Ringtoets.AssemblyTool.Data; +using Ringtoets.AssemblyTool.IO.Model; +using Ringtoets.AssemblyTool.IO.Model.DataTypes; +using Ringtoets.AssemblyTool.IO.Model.Enums; +using Ringtoets.Integration.IO.Assembly; +using Ringtoets.Integration.IO.Creators; +using Ringtoets.Integration.IO.Helpers; +using Ringtoets.Integration.IO.TestUtil; + +namespace Ringtoets.Integration.IO.Test.Creators +{ + [TestFixture] + public class AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreatorTest + { + [Test] + public void Create_IdGeneratorNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreator.Create(null, + new SerializableTotalAssemblyResult(), + new SerializableFailureMechanismSectionCollection(), + CreateExportableCombinedSectionAssembly()); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("idGenerator", exception.ParamName); + } + + [Test] + public void Create_TotalAssemblyResultNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreator.Create(new UniqueIdentifierGenerator(), + null, + new SerializableFailureMechanismSectionCollection(), + CreateExportableCombinedSectionAssembly()); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("serializableTotalAssemblyResult", exception.ParamName); + } + + [Test] + public void Create_FailureMechanismSectionCollectionNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreator.Create(new UniqueIdentifierGenerator(), + new SerializableTotalAssemblyResult(), + null, + CreateExportableCombinedSectionAssembly()); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("serializableFailureMechanismSectionCollection", exception.ParamName); + } + + [Test] + public void Create_CombinedSectionAssemblyNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreator.Create(new UniqueIdentifierGenerator(), + new SerializableTotalAssemblyResult(), + new SerializableFailureMechanismSectionCollection(), + null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("combinedSectionAssembly", exception.ParamName); + } + + + [Test] + public void Create_WithValidArguments_ReturnsAggregatedSerializableCombinedFailureMechanismSectionAssembly() + { + // Setup + var combinedSectionAssembly = new ExportableCombinedSectionAssembly(ExportableFailureMechanismSectionTestFactory.CreateExportableCombinedFailureMechanismSection(), + CreateSectionAssemblyResult(10), + new[] + { + CreateCombinedSectionAssemblyResult(10), + CreateCombinedSectionAssemblyResult(11) + }); + + const string serializableTotalAssemblyResultId = "serializableTotalAssemblyId"; + SerializableTotalAssemblyResult serializableTotalAssembly = CreateSerializableTotalAssembly(serializableTotalAssemblyResultId); + + const string serializableSectionCollectionId = "serializableSectionCollectionId"; + var serializableSectionCollection = new SerializableFailureMechanismSectionCollection(serializableSectionCollectionId, + new SerializableTotalAssemblyResult()); + + var idGenerator = new UniqueIdentifierGenerator(); + + // Call + AggregatedSerializableCombinedFailureMechanismSectionAssembly aggregate = + AggregatedSerializableCombinedFailureMechanismSectionAssemblyCreator.Create(idGenerator, + serializableTotalAssembly, + serializableSectionCollection, + combinedSectionAssembly); + + // Assert + SerializableFailureMechanismSection serializableFailureMechanismSection = aggregate.FailureMechanismSection; + SerializableFailureMechanismSectionTestHelper.AssertFailureMechanismSection(combinedSectionAssembly.Section, + serializableSectionCollection, + serializableFailureMechanismSection); + + SerializableCombinedFailureMechanismSectionAssembly serializableCombinedFailureMechanismSectionAssembly = aggregate.CombinedFailureMechanismSectionAssembly; + Assert.AreEqual("Gto.1", serializableCombinedFailureMechanismSectionAssembly.Id); + Assert.AreEqual(serializableFailureMechanismSection.Id, serializableCombinedFailureMechanismSectionAssembly.FailureMechanismSectionId); + Assert.AreEqual(serializableTotalAssembly.Id, serializableCombinedFailureMechanismSectionAssembly.TotalAssemblyResultId); + + SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(combinedSectionAssembly.CombinedSectionAssemblyResult, + SerializableAssessmentType.CombinedAssessment, + serializableCombinedFailureMechanismSectionAssembly.CombinedSectionResult); + + IEnumerable expectedFailureMechanismSectionResults = combinedSectionAssembly.FailureMechanismResults; + SerializableCombinedFailureMechanismSectionAssemblyResult[] serializedFailureMechanismSectionResults = serializableCombinedFailureMechanismSectionAssembly.FailureMechanismResults; + int expectedNrOfFailureMechanismResult = expectedFailureMechanismSectionResults.Count(); + Assert.AreEqual(expectedNrOfFailureMechanismResult, serializedFailureMechanismSectionResults.Length); + for (var i = 0; i < expectedNrOfFailureMechanismResult; i++) + { + AssertCombinedSectionAssemblyResults(expectedFailureMechanismSectionResults.ElementAt(i), + serializedFailureMechanismSectionResults[i]); + } + } + + private static SerializableTotalAssemblyResult CreateSerializableTotalAssembly(string totalAssemblyId) + { + return new SerializableTotalAssemblyResult(totalAssemblyId, + new SerializableAssessmentProcess(), + new SerializableFailureMechanismAssemblyResult(), + new SerializableFailureMechanismAssemblyResult(), + new SerializableAssessmentSectionAssemblyResult()); + } + + private static ExportableCombinedSectionAssembly CreateExportableCombinedSectionAssembly() + { + return new ExportableCombinedSectionAssembly(ExportableFailureMechanismSectionTestFactory.CreateExportableCombinedFailureMechanismSection(), + ExportableSectionAssemblyResultTestFactory.CreateSectionAssemblyResult(), + Enumerable.Empty()); + } + + private static ExportableFailureMechanismCombinedSectionAssemblyResult CreateCombinedSectionAssemblyResult(int seed) + { + var random = new Random(seed); + return new ExportableFailureMechanismCombinedSectionAssemblyResult(CreateSectionAssemblyResult(random.Next()), + random.NextEnumValue()); + } + + private static ExportableSectionAssemblyResult CreateSectionAssemblyResult(int seed) + { + var random = new Random(seed); + var assemblyCategoryGroup = random.NextEnumValue(); + if (assemblyCategoryGroup == FailureMechanismSectionAssemblyCategoryGroup.None) + { + assemblyCategoryGroup = FailureMechanismSectionAssemblyCategoryGroup.IIIv; + } + + return new ExportableSectionAssemblyResult(random.NextEnumValue(), + assemblyCategoryGroup); + } + + private static void AssertCombinedSectionAssemblyResults(ExportableFailureMechanismCombinedSectionAssemblyResult expectedSectionResult, + SerializableCombinedFailureMechanismSectionAssemblyResult actualSectionResult) + { + Assert.AreEqual(SerializableFailureMechanismTypeCreator.Create(expectedSectionResult.Code), + actualSectionResult.FailureMechanismType); + + ExportableSectionAssemblyResult expectedSectionAssemblyResult = expectedSectionResult.SectionAssemblyResult; + Assert.AreEqual(SerializableAssemblyMethodCreator.Create(expectedSectionAssemblyResult.AssemblyMethod), + actualSectionResult.AssemblyMethod); + Assert.AreEqual(SerializableFailureMechanismSectionCategoryGroupCreator.Create(expectedSectionAssemblyResult.AssemblyCategory), + actualSectionResult.CategoryGroup); + } + } +} \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/SerializableCombinedFailureMechanismSectionAssemblyResultCreatorTest.cs =================================================================== diff -u -rcb6212fd6cb39079fd0c0390522b0776ad40997f -r728cb3dd140c73e41fc4305d5bcc9c9b8f690208 --- Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/SerializableCombinedFailureMechanismSectionAssemblyResultCreatorTest.cs (.../SerializableCombinedFailureMechanismSectionAssemblyResultCreatorTest.cs) (revision cb6212fd6cb39079fd0c0390522b0776ad40997f) +++ Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Creators/SerializableCombinedFailureMechanismSectionAssemblyResultCreatorTest.cs (.../SerializableCombinedFailureMechanismSectionAssemblyResultCreatorTest.cs) (revision 728cb3dd140c73e41fc4305d5bcc9c9b8f690208) @@ -24,8 +24,10 @@ using NUnit.Framework; using Ringtoets.AssemblyTool.Data; using Ringtoets.AssemblyTool.IO.Model.DataTypes; +using Ringtoets.AssemblyTool.IO.Model.Enums; using Ringtoets.Integration.IO.Assembly; using Ringtoets.Integration.IO.Creators; +using Ringtoets.Integration.IO.TestUtil; namespace Ringtoets.Integration.IO.Test.Creators { @@ -58,7 +60,6 @@ // Assert Assert.AreEqual(SerializableFailureMechanismTypeCreator.Create(sectionResult.Code), serializableResult.FailureMechanismType); - ExportableSectionAssemblyResult expectedSectionAssemblyResult = sectionResult.SectionAssemblyResult; Assert.AreEqual(SerializableAssemblyMethodCreator.Create(expectedSectionAssemblyResult.AssemblyMethod), serializableResult.AssemblyMethod); Index: Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Ringtoets.Integration.IO.Test.csproj =================================================================== diff -u -rcb6212fd6cb39079fd0c0390522b0776ad40997f -r728cb3dd140c73e41fc4305d5bcc9c9b8f690208 --- Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Ringtoets.Integration.IO.Test.csproj (.../Ringtoets.Integration.IO.Test.csproj) (revision cb6212fd6cb39079fd0c0390522b0776ad40997f) +++ Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Ringtoets.Integration.IO.Test.csproj (.../Ringtoets.Integration.IO.Test.csproj) (revision 728cb3dd140c73e41fc4305d5bcc9c9b8f690208) @@ -1,4 +1,4 @@ - + {06C448C6-CBDE-4579-B5B6-1B8074E022ED} @@ -39,6 +39,7 @@ +