// 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.Base.Geometry;
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.AggregatedSerializable;
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 AggregatedSerializableFailureMechanismCreatorTest
{
[Test]
public void CreateFailureMechanismWithoutProbability_IdGeneratorNull_ThrowsArgumentNullException()
{
// Setup
var random = new Random(21);
// Call
TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(null,
new SerializableTotalAssemblyResult(),
new ExportableFailureMechanism(
ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithoutProbability(),
Enumerable.Empty(),
random.NextEnumValue(),
random.NextEnumValue()));
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("idGenerator", exception.ParamName);
}
[Test]
public void CreateFailureMechanismWithoutProbability_TotalAssemblyResultNull_ThrowsArgumentNullException()
{
// Setup
var random = new Random(21);
// Call
TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(new IdentifierGenerator(),
null,
new ExportableFailureMechanism(
ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithoutProbability(),
Enumerable.Empty(),
random.NextEnumValue(),
random.NextEnumValue()));
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("serializableTotalAssemblyResult", exception.ParamName);
}
[Test]
public void CreateFailureMechanismWithoutProbability_FailureMechanismNull_ThrowsArgumentNullException()
{
// Call
TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(new IdentifierGenerator(),
new SerializableTotalAssemblyResult(),
(ExportableFailureMechanism) null);
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("failureMechanism", exception.ParamName);
}
[Test]
public void CreateFailureMechanismWithoutProbability_WithUnsupportedAggregatedSectionResult_ThrowsNotSupportedException()
{
// Setup
var random = new Random(21);
ExportableFailureMechanismSection section = ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection();
var failureMechanism = new ExportableFailureMechanism(
ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithProbability(),
new[]
{
new UnsupportedExportableAggregatedFailureMechanismSectionAssemblyResult(section)
},
random.NextEnumValue(),
random.NextEnumValue());
// Call
TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(new IdentifierGenerator(),
new SerializableTotalAssemblyResult(),
failureMechanism);
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual($"{nameof(UnsupportedExportableAggregatedFailureMechanismSectionAssemblyResult)} is not supported.",
exception.Message);
}
[Test]
[TestCaseSource(nameof(GetSectionAssemblyConfigurations))]
public void CreateFailureMechanismWithoutProbabilityAndSectionAssemblyResultsWithProbability_WithValidArguments_ReturnsAggregatedSerializableFailureMechanism(
IEnumerable failureMechanismSections,
IEnumerable failureMechanismSectionAssemblyResults,
Action assertSectionAssemblyResultsAction)
{
// Setup
var random = new Random(21);
var failureMechanism = new ExportableFailureMechanism(
ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithoutProbability(),
failureMechanismSectionAssemblyResults,
random.NextEnumValue(),
random.NextEnumValue());
var idGenerator = new IdentifierGenerator();
const string totalAssemblyId = "totalAssemblyId";
SerializableTotalAssemblyResult serializableTotalAssembly = CreateSerializableTotalAssembly(totalAssemblyId);
// Call
AggregatedSerializableFailureMechanism aggregatedFailureMechanism =
AggregatedSerializableFailureMechanismCreator.Create(idGenerator, serializableTotalAssembly, failureMechanism);
// Assert
SerializableFailureMechanism serializableFailureMechanism = aggregatedFailureMechanism.FailureMechanism;
Assert.AreEqual("Ts.0", serializableFailureMechanism.Id);
Assert.AreEqual(serializableTotalAssembly.Id, serializableFailureMechanism.TotalAssemblyResultId);
Assert.AreEqual(SerializableFailureMechanismGroupCreator.Create(failureMechanism.Group), serializableFailureMechanism.FailureMechanismGroup);
Assert.AreEqual(SerializableFailureMechanismTypeCreator.Create(failureMechanism.Code), serializableFailureMechanism.FailureMechanismType);
SerializableFailureMechanismAssemblyResultTestHelper.AssertSerializableFailureMechanismAssemblyResult(failureMechanism.FailureMechanismAssembly,
serializableFailureMechanism.FailureMechanismAssemblyResult);
SerializableFailureMechanismSectionCollection serializableFailureMechanismSectionCollection = aggregatedFailureMechanism.FailureMechanismSectionCollection;
Assert.AreEqual("Vi.0", serializableFailureMechanismSectionCollection.Id);
AssertFailureMechanismSectionAssemblies(failureMechanism,
serializableFailureMechanismSectionCollection,
serializableFailureMechanism,
aggregatedFailureMechanism.FailureMechanismSections,
aggregatedFailureMechanism.FailureMechanismSectionAssemblyResults,
assertSectionAssemblyResultsAction);
}
[Test]
public void CreateFailureMechanismWithProbability_IdGeneratorNull_ThrowsArgumentNullException()
{
// Setup
var random = new Random(21);
// Call
TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(null,
new SerializableTotalAssemblyResult(),
new ExportableFailureMechanism(
ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithProbability(),
Enumerable.Empty(),
random.NextEnumValue(),
random.NextEnumValue()));
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("idGenerator", exception.ParamName);
}
[Test]
public void CreateFailureMechanismWithProbability_TotalAssemblyResultNull_ThrowsArgumentNullException()
{
// Setup
var random = new Random(21);
// Call
TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(new IdentifierGenerator(),
null,
new ExportableFailureMechanism(
ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithProbability(),
Enumerable.Empty(),
random.NextEnumValue(),
random.NextEnumValue()));
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("serializableTotalAssemblyResult", exception.ParamName);
}
[Test]
public void CreateFailureMechanismWithProbability_FailureMechanismNull_ThrowsArgumentNullException()
{
// Call
TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(new IdentifierGenerator(),
new SerializableTotalAssemblyResult(),
(ExportableFailureMechanism) null);
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("failureMechanism", exception.ParamName);
}
[Test]
public void CreateFailureMechanismWithProbability_WithUnsupportedAggregatedSectionResult_ThrowsNotSupportedException()
{
// Setup
var random = new Random(21);
ExportableFailureMechanismSection section = ExportableFailureMechanismSectionTestFactory.CreateExportableFailureMechanismSection();
var failureMechanism = new ExportableFailureMechanism(
ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithProbability(),
new[]
{
new UnsupportedExportableAggregatedFailureMechanismSectionAssemblyResult(section)
},
random.NextEnumValue(),
random.NextEnumValue());
// Call
TestDelegate call = () => AggregatedSerializableFailureMechanismCreator.Create(new IdentifierGenerator(),
new SerializableTotalAssemblyResult(),
failureMechanism);
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual($"{nameof(UnsupportedExportableAggregatedFailureMechanismSectionAssemblyResult)} is not supported.",
exception.Message);
}
[Test]
[TestCaseSource(nameof(GetSectionAssemblyConfigurations))]
public void CreateFailureMechanismWithProbabilityAndSectionAssemblyResultsWithProbability_WithValidArguments_ReturnsAggregatedSerializableFailureMechanism(
IEnumerable failureMechanismSections,
IEnumerable failureMechanismSectionAssemblyResults,
Action assertSectionAssemblyResultsAction)
{
// Setup
var random = new Random(21);
var failureMechanism = new ExportableFailureMechanism(
ExportableFailureMechanismAssemblyResultTestFactory.CreateResultWithProbability(),
failureMechanismSectionAssemblyResults,
random.NextEnumValue(),
random.NextEnumValue());
var idGenerator = new IdentifierGenerator();
const string totalAssemblyId = "totalAssemblyId";
SerializableTotalAssemblyResult serializableTotalAssembly = CreateSerializableTotalAssembly(totalAssemblyId);
// Call
AggregatedSerializableFailureMechanism aggregatedFailureMechanism =
AggregatedSerializableFailureMechanismCreator.Create(idGenerator, serializableTotalAssembly, failureMechanism);
// Assert
SerializableFailureMechanism serializableFailureMechanism = aggregatedFailureMechanism.FailureMechanism;
Assert.AreEqual("Ts.0", serializableFailureMechanism.Id);
Assert.AreEqual(serializableTotalAssembly.Id, serializableFailureMechanism.TotalAssemblyResultId);
Assert.AreEqual(SerializableFailureMechanismGroupCreator.Create(failureMechanism.Group), serializableFailureMechanism.FailureMechanismGroup);
Assert.AreEqual(SerializableFailureMechanismTypeCreator.Create(failureMechanism.Code), serializableFailureMechanism.FailureMechanismType);
SerializableFailureMechanismAssemblyResultTestHelper.AssertSerializableFailureMechanismAssemblyResult(failureMechanism.FailureMechanismAssembly,
serializableFailureMechanism.FailureMechanismAssemblyResult);
SerializableFailureMechanismSectionCollection serializableFailureMechanismSectionCollection = aggregatedFailureMechanism.FailureMechanismSectionCollection;
Assert.AreEqual("Vi.0", serializableFailureMechanismSectionCollection.Id);
AssertFailureMechanismSectionAssemblies(failureMechanism,
serializableFailureMechanismSectionCollection,
serializableFailureMechanism,
aggregatedFailureMechanism.FailureMechanismSections,
aggregatedFailureMechanism.FailureMechanismSectionAssemblyResults,
assertSectionAssemblyResultsAction);
}
private static void AssertFailureMechanismSectionAssemblies(
ExportableFailureMechanism expectedFailureMechanism,
SerializableFailureMechanismSectionCollection expectedSerializableFailureMechanismSectionCollection,
SerializableFailureMechanism expectedSerializableFailureMechanism,
IEnumerable serializableFailureMechanismSections,
IEnumerable serializableFailureMechanismSectionAssemblies,
Action assertSectionAssemblyResultAction)
where T : ExportableFailureMechanismAssemblyResult
{
IEnumerable expectedSections = expectedFailureMechanism.SectionAssemblyResults.Select(sar => sar.FailureMechanismSection);
int expectedNrOfSections = expectedSections.Count();
Assert.AreEqual(expectedNrOfSections, serializableFailureMechanismSections.Count());
IEnumerable expectedSectionAssemblyResults = expectedFailureMechanism.SectionAssemblyResults;
Assert.AreEqual(expectedSectionAssemblyResults.Count(), serializableFailureMechanismSectionAssemblies.Count());
var sectionId = 0;
var sectionAssemblyId = 0;
for (var i = 0; i < expectedNrOfSections; i++)
{
ExportableFailureMechanismSection expectedSection = expectedSections.ElementAt(i);
SerializableFailureMechanismSection actualSection = serializableFailureMechanismSections.ElementAt(i);
SerializableFailureMechanismSectionTestHelper.AssertFailureMechanismSection(expectedSection,
expectedSerializableFailureMechanismSectionCollection,
actualSection,
sectionId++);
SerializableFailureMechanismSectionAssembly actualSectionAssemblyResult = serializableFailureMechanismSectionAssemblies.ElementAt(i);
Assert.AreEqual($"T.{sectionAssemblyId++}", actualSectionAssemblyResult.Id);
Assert.AreEqual(expectedSerializableFailureMechanism.Id, actualSectionAssemblyResult.FailureMechanismId);
Assert.AreEqual(actualSection.Id, actualSectionAssemblyResult.FailureMechanismSectionId);
assertSectionAssemblyResultAction(expectedSectionAssemblyResults.ElementAt(i), actualSectionAssemblyResult);
}
}
private static void AssertSectionAssemblyResultsWithProbability(ExportableAggregatedFailureMechanismSectionAssemblyResultBase expectedSectionAssemblyResult,
SerializableFailureMechanismSectionAssembly actualSectionAssemblyResult)
{
var expectedSectionAssemblyResultWithProbability = (ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbability) expectedSectionAssemblyResult;
SerializableFailureMechanismSectionAssemblyResult[] serializedSectionResults = actualSectionAssemblyResult.SectionResults;
Assert.AreEqual(3, serializedSectionResults.Length);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithProbability.SimpleAssembly,
SerializableAssessmentType.SimpleAssessment,
serializedSectionResults[0]);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithProbability.DetailedAssembly,
SerializableAssessmentType.DetailedAssessment,
serializedSectionResults[1]);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithProbability.TailorMadeAssembly,
SerializableAssessmentType.TailorMadeAssessment,
serializedSectionResults[2]);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithProbability.CombinedAssembly,
SerializableAssessmentType.CombinedAssessment,
actualSectionAssemblyResult.CombinedSectionResult);
}
private static void AssertSectionAssemblyResultsWithoutProbability(ExportableAggregatedFailureMechanismSectionAssemblyResultBase expectedSectionAssemblyResult,
SerializableFailureMechanismSectionAssembly actualSectionAssemblyResult)
{
var expectedSectionAssemblyResultWithoutProbability = (ExportableAggregatedFailureMechanismSectionAssemblyResult) expectedSectionAssemblyResult;
SerializableFailureMechanismSectionAssemblyResult[] serializedSectionResults = actualSectionAssemblyResult.SectionResults;
Assert.AreEqual(3, serializedSectionResults.Length);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.SimpleAssembly,
SerializableAssessmentType.SimpleAssessment,
serializedSectionResults[0]);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.DetailedAssembly,
SerializableAssessmentType.DetailedAssessment,
serializedSectionResults[1]);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.TailorMadeAssembly,
SerializableAssessmentType.TailorMadeAssessment, serializedSectionResults[2]);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.CombinedAssembly,
SerializableAssessmentType.CombinedAssessment, actualSectionAssemblyResult.CombinedSectionResult);
}
private static void AssertSectionAssemblyResultsWithoutDetailedAssembly(ExportableAggregatedFailureMechanismSectionAssemblyResultBase expectedSectionAssemblyResult,
SerializableFailureMechanismSectionAssembly actualSectionAssemblyResult)
{
var expectedSectionAssemblyResultWithoutProbability = (ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly) expectedSectionAssemblyResult;
SerializableFailureMechanismSectionAssemblyResult[] serializedSectionResults = actualSectionAssemblyResult.SectionResults;
Assert.AreEqual(2, serializedSectionResults.Length);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.SimpleAssembly,
SerializableAssessmentType.SimpleAssessment,
serializedSectionResults[0]);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.TailorMadeAssembly,
SerializableAssessmentType.TailorMadeAssessment,
serializedSectionResults[1]);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.CombinedAssembly,
SerializableAssessmentType.CombinedAssessment,
actualSectionAssemblyResult.CombinedSectionResult);
}
private static void AssertSectionAssemblyWithCombinedResult(ExportableAggregatedFailureMechanismSectionAssemblyResultBase expectedSectionAssemblyResult,
SerializableFailureMechanismSectionAssembly actualSectionAssemblyResult)
{
var expectedSectionAssemblyResultWithoutProbability = (ExportableAggregatedFailureMechanismSectionAssemblyWithCombinedResult) expectedSectionAssemblyResult;
CollectionAssert.IsEmpty(actualSectionAssemblyResult.SectionResults);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.CombinedAssembly,
SerializableAssessmentType.CombinedAssessment,
actualSectionAssemblyResult.CombinedSectionResult);
}
private static void AssertSectionAssemblyWithCombinedProbabilityResult(ExportableAggregatedFailureMechanismSectionAssemblyResultBase expectedSectionAssemblyResult,
SerializableFailureMechanismSectionAssembly actualSectionAssemblyResult)
{
var expectedSectionAssemblyResultWithoutProbability = (ExportableAggregatedFailureMechanismSectionAssemblyWithCombinedProbabilityResult) expectedSectionAssemblyResult;
CollectionAssert.IsEmpty(actualSectionAssemblyResult.SectionResults);
SerializableFailureMechanismSectionAssemblyResultTestHelper.AssertAssemblyResult(expectedSectionAssemblyResultWithoutProbability.CombinedAssembly,
SerializableAssessmentType.CombinedAssessment,
actualSectionAssemblyResult.CombinedSectionResult);
}
private static SerializableTotalAssemblyResult CreateSerializableTotalAssembly(string totalAssemblyId)
{
return new SerializableTotalAssemblyResult(totalAssemblyId,
new SerializableAssessmentProcess(),
new SerializableFailureMechanismAssemblyResult(),
new SerializableFailureMechanismAssemblyResult(),
new SerializableAssessmentSectionAssemblyResult());
}
private static IEnumerable GetSectionAssemblyConfigurations()
{
ExportableFailureMechanismSection[] failureMechanismSections =
{
CreateSection(21),
CreateSection(22)
};
ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbability[] failureMechanismSectionResultsWithProbability =
{
CreateSectionResultWithProbability(failureMechanismSections[0]),
CreateSectionResultWithProbability(failureMechanismSections[1])
};
yield return new TestCaseData(failureMechanismSections,
failureMechanismSectionResultsWithProbability,
new Action(AssertSectionAssemblyResultsWithProbability))
.SetName("SectionAssemblyResults with probability");
ExportableAggregatedFailureMechanismSectionAssemblyResult[] failureMechanismSectionResultsWithoutProbability =
{
CreateSectionResultWithoutProbability(failureMechanismSections[0]),
CreateSectionResultWithoutProbability(failureMechanismSections[1])
};
yield return new TestCaseData(failureMechanismSections,
failureMechanismSectionResultsWithoutProbability,
new Action(AssertSectionAssemblyResultsWithoutProbability))
.SetName("SectionAssemblyResults without probability");
ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly[] failureMechanismSectionResultsWithoutDetailedAssembly =
{
CreateSectionResultWithoutDetailedAssembly(failureMechanismSections[0]),
CreateSectionResultWithoutDetailedAssembly(failureMechanismSections[1])
};
yield return new TestCaseData(failureMechanismSections,
failureMechanismSectionResultsWithoutDetailedAssembly,
new Action(AssertSectionAssemblyResultsWithoutDetailedAssembly))
.SetName("SectionAssemblyResults without detailed assessment");
ExportableAggregatedFailureMechanismSectionAssemblyWithCombinedResult[] failureMechanismSectionResultsWithCombinedAssembly =
{
CreateSectionResultWithCombinedAssembly(failureMechanismSections[0]),
CreateSectionResultWithCombinedAssembly(failureMechanismSections[1])
};
yield return new TestCaseData(failureMechanismSections,
failureMechanismSectionResultsWithCombinedAssembly,
new Action(AssertSectionAssemblyWithCombinedResult))
.SetName("SectionAssemblyResults with combined assessment");
ExportableAggregatedFailureMechanismSectionAssemblyWithCombinedProbabilityResult[] failureMechanismSectionResultsWithCombinedProbabilityAssembly =
{
CreateSectionResultWithCombinedProbabilityAssembly(failureMechanismSections[0]),
CreateSectionResultWithCombinedProbabilityAssembly(failureMechanismSections[1])
};
yield return new TestCaseData(failureMechanismSections,
failureMechanismSectionResultsWithCombinedProbabilityAssembly,
new Action(AssertSectionAssemblyWithCombinedProbabilityResult))
.SetName("SectionAssemblyResults with combined probability assessment");
}
private static ExportableFailureMechanismSection CreateSection(int seed)
{
var random = new Random(seed);
return new ExportableFailureMechanismSection(new[]
{
new Point2D(random.NextDouble(), random.NextDouble()),
new Point2D(random.NextDouble(), random.NextDouble())
}, random.NextDouble(), random.NextDouble());
}
private static ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbability CreateSectionResultWithProbability(ExportableFailureMechanismSection section)
{
return new ExportableAggregatedFailureMechanismSectionAssemblyResultWithProbability(section,
CreateSectionAssemblyResultWithProbability(10),
CreateSectionAssemblyResultWithProbability(11),
CreateSectionAssemblyResultWithProbability(12),
CreateSectionAssemblyResultWithProbability(13));
}
private static ExportableAggregatedFailureMechanismSectionAssemblyResult CreateSectionResultWithoutProbability(ExportableFailureMechanismSection section)
{
return new ExportableAggregatedFailureMechanismSectionAssemblyResult(section,
CreateSectionAssemblyResult(10),
CreateSectionAssemblyResult(11),
CreateSectionAssemblyResult(12),
CreateSectionAssemblyResult(13));
}
private static ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly CreateSectionResultWithoutDetailedAssembly(ExportableFailureMechanismSection section)
{
return new ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly(section,
CreateSectionAssemblyResult(10),
CreateSectionAssemblyResult(11),
CreateSectionAssemblyResult(12));
}
private static ExportableAggregatedFailureMechanismSectionAssemblyWithCombinedResult CreateSectionResultWithCombinedAssembly(ExportableFailureMechanismSection section)
{
return new ExportableAggregatedFailureMechanismSectionAssemblyWithCombinedResult(section, CreateSectionAssemblyResult(10));
}
private static ExportableAggregatedFailureMechanismSectionAssemblyWithCombinedProbabilityResult CreateSectionResultWithCombinedProbabilityAssembly(ExportableFailureMechanismSection section)
{
return new ExportableAggregatedFailureMechanismSectionAssemblyWithCombinedProbabilityResult(section, CreateSectionAssemblyResultWithProbability(10));
}
private static ExportableSectionAssemblyResult CreateSectionAssemblyResult(int seed)
{
var random = new Random(seed);
return new ExportableSectionAssemblyResult(random.NextEnumValue(),
random.NextEnumValue(new[]
{
FailureMechanismSectionAssemblyCategoryGroup.NotApplicable,
FailureMechanismSectionAssemblyCategoryGroup.Iv,
FailureMechanismSectionAssemblyCategoryGroup.IIv,
FailureMechanismSectionAssemblyCategoryGroup.IIIv,
FailureMechanismSectionAssemblyCategoryGroup.IVv,
FailureMechanismSectionAssemblyCategoryGroup.Vv,
FailureMechanismSectionAssemblyCategoryGroup.VIv,
FailureMechanismSectionAssemblyCategoryGroup.VIIv
}));
}
private static ExportableSectionAssemblyResultWithProbability CreateSectionAssemblyResultWithProbability(int seed)
{
var random = new Random(seed);
return new ExportableSectionAssemblyResultWithProbability(random.NextEnumValue(),
random.NextEnumValue(new[]
{
FailureMechanismSectionAssemblyCategoryGroup.NotApplicable,
FailureMechanismSectionAssemblyCategoryGroup.Iv,
FailureMechanismSectionAssemblyCategoryGroup.IIv,
FailureMechanismSectionAssemblyCategoryGroup.IIIv,
FailureMechanismSectionAssemblyCategoryGroup.IVv,
FailureMechanismSectionAssemblyCategoryGroup.Vv,
FailureMechanismSectionAssemblyCategoryGroup.VIv,
FailureMechanismSectionAssemblyCategoryGroup.VIIv
}),
random.NextDouble());
}
private class UnsupportedExportableAggregatedFailureMechanismSectionAssemblyResult : ExportableAggregatedFailureMechanismSectionAssemblyResultBase
{
public UnsupportedExportableAggregatedFailureMechanismSectionAssemblyResult(ExportableFailureMechanismSection failureMechanismSection) : base(failureMechanismSection) {}
}
}
}