// Copyright (C) Stichting Deltares 2016. 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.IO;
using System.Linq;
using System.Windows.Threading;
using Application.Ringtoets.Storage.TestUtil;
using Core.Common.Base;
using Core.Common.Base.Geometry;
using Core.Common.Gui;
using Core.Common.Gui.Forms.MainWindow;
using Core.Common.Gui.Settings;
using Core.Common.TestUtil;
using NUnit.Framework;
using Ringtoets.Common.Data.AssessmentSection;
using Ringtoets.Common.Data.Calculation;
using Ringtoets.Common.Data.FailureMechanism;
using Ringtoets.Common.Data.Probability;
using Ringtoets.GrassCoverErosionInwards.Data;
using Ringtoets.HeightStructures.Data;
using Ringtoets.HydraRing.Data;
using Ringtoets.Integration.Data;
using Ringtoets.Integration.Data.StandAlone.SectionResults;
using Ringtoets.Piping.Data;
using Ringtoets.Piping.Primitives;
namespace Application.Ringtoets.Storage.Test.IntegrationTests
{
[TestFixture]
public class StorageSqLiteIntegrationTest
{
private readonly string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Application.Ringtoets.Storage, "DatabaseFiles");
private readonly string tempRingtoetsFile = Path.Combine(TestHelper.GetTestDataPath(TestDataPath.Application.Ringtoets.Storage, "DatabaseFiles"), "tempProjectFile.rtd");
[TearDown]
public void TearDownTempRingtoetsFile()
{
TearDownTempRingtoetsFile(tempRingtoetsFile);
Dispatcher.CurrentDispatcher.InvokeShutdown();
}
[Test]
public void SaveProjectAs_SaveAsNewFile_ProjectAsEntitiesInBothFiles()
{
// Setup
RingtoetsProject fullProject = RingtoetsProjectTestHelper.GetFullTestProject();
var tempFile = Path.Combine(testDataPath, "tempProjectAsFile.rtd");
StorageSqLite storage = new StorageSqLite();
TestDelegate precondition = () => storage.SaveProjectAs(tempRingtoetsFile, fullProject);
Assert.DoesNotThrow(precondition, String.Format("Precondition: file '{0}' must be a valid Ringtoets database file.", tempRingtoetsFile));
// Call
RingtoetsProject firstProject = null;
RingtoetsProject secondProject = null;
try
{
storage.SaveProjectAs(tempFile, fullProject);
firstProject = storage.LoadProject(tempRingtoetsFile) as RingtoetsProject;
secondProject = storage.LoadProject(tempFile) as RingtoetsProject;
}
catch (Exception exception)
{
Assert.Fail(exception.Message);
}
finally
{
// TearDown
TearDownTempRingtoetsFile(tempFile);
}
// Assert
AssertProjectsAreEqual(firstProject, secondProject);
}
[Test]
public void SaveProjectAs_LoadProject_ProjectAsEntitiesInNewStorage()
{
// Setup
StorageSqLite storage = new StorageSqLite();
RingtoetsProject fullProject = RingtoetsProjectTestHelper.GetFullTestProject();
TestDelegate precondition = () => storage.SaveProjectAs(tempRingtoetsFile, fullProject);
Assert.DoesNotThrow(precondition, String.Format("Precondition: file '{0}' must be a valid Ringtoets database file.", tempRingtoetsFile));
// Call
TestDelegate test = () => storage.SaveProject(tempRingtoetsFile, fullProject);
// Assert
Assert.DoesNotThrow(test, String.Format("Precondition: failed to save project to file '{0}'.", tempRingtoetsFile));
// Call
RingtoetsProject loadedProject = storage.LoadProject(tempRingtoetsFile) as RingtoetsProject;
// Assert
AssertProjectsAreEqual(fullProject, loadedProject);
}
[Test]
[STAThread]
public void GivenRingtoetsGuiWithStorageSql_WhenRunWithValidFile_ProjectSet()
{
// Given
var projectStore = new StorageSqLite();
RingtoetsProject fullProject = RingtoetsProjectTestHelper.GetFullTestProject();
var expectedProjectName = Path.GetFileNameWithoutExtension(tempRingtoetsFile);
var expectedProjectDescription = fullProject.Description;
// Precondition
SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, fullProject);
using (var gui = new GuiCore(new MainWindow(), projectStore, new RingtoetsProjectFactory(), new GuiCoreSettings()))
{
// When
Action action = () => gui.Run(tempRingtoetsFile);
// Then
var expectedMessages = new[]
{
"Openen van bestaand Ringtoetsproject.",
"Bestaand Ringtoetsproject succesvol geopend.",
};
TestHelper.AssertLogMessagesAreGenerated(action, expectedMessages, 3);
Assert.AreEqual(tempRingtoetsFile, gui.ProjectFilePath);
Assert.NotNull(gui.Project);
Assert.AreEqual(expectedProjectName, gui.Project.Name);
Assert.AreEqual(expectedProjectDescription, gui.Project.Description);
Assert.IsInstanceOf(gui.Project);
AssertProjectsAreEqual((RingtoetsProject) gui.Project, fullProject);
}
}
[Test]
[STAThread]
public void GivenRingtoetsGuiWithStorageSql_WhenRunWithInvalidFile_EmptyProjectSet()
{
// Given
var testFile = "SomeFile";
var projectStore = new StorageSqLite();
using (var gui = new GuiCore(new MainWindow(), projectStore, new RingtoetsProjectFactory(), new GuiCoreSettings()))
{
// When
Action action = () => gui.Run(testFile);
// Then
var expectedMessages = new[]
{
"Openen van bestaand Ringtoetsproject.",
string.Format("Fout bij het lezen van bestand '{0}': Het bestand bestaat niet.", testFile),
"Het is niet gelukt om het Ringtoetsproject te laden.",
"Nieuw project aanmaken..."
};
TestHelper.AssertLogMessagesAreGenerated(action, expectedMessages, 5);
Assert.AreEqual(null, gui.ProjectFilePath);
Assert.NotNull(gui.Project);
Assert.AreEqual("Project", gui.Project.Name);
Assert.IsEmpty(gui.Project.Description);
Assert.IsInstanceOf(gui.Project);
CollectionAssert.IsEmpty(((RingtoetsProject) gui.Project).Items);
}
}
[Test]
[STAThread]
[TestCase(null)]
[TestCase("")]
[TestCase(" ")]
public void GivenRingtoetsGuiWithStorageSql_WhenRunWithEmptyFile_EmptyProjectSet(string testFile)
{
// Given
var projectStore = new StorageSqLite();
using (var gui = new GuiCore(new MainWindow(), projectStore, new RingtoetsProjectFactory(), new GuiCoreSettings()))
{
// When
Action action = () => gui.Run(testFile);
// Then
var expectedMessages = new[]
{
"Nieuw project aanmaken..."
};
TestHelper.AssertLogMessagesAreGenerated(action, expectedMessages, 2);
Assert.AreEqual(null, gui.ProjectFilePath);
Assert.NotNull(gui.Project);
Assert.AreEqual("Project", gui.Project.Name);
Assert.IsEmpty(gui.Project.Description);
Assert.IsInstanceOf(gui.Project);
CollectionAssert.IsEmpty(((RingtoetsProject) gui.Project).Items);
}
}
private void AssertProjectsAreEqual(RingtoetsProject expectedProject, RingtoetsProject actualProject)
{
Assert.NotNull(expectedProject);
Assert.NotNull(actualProject);
Assert.AreNotSame(expectedProject, actualProject);
AssessmentSection[] expectedProjectAssessmentSections = expectedProject.Items.ToArray();
AssessmentSection[] actualProjectAssessmentSections = actualProject.Items.ToArray();
Assert.AreEqual(expectedProjectAssessmentSections.Length, actualProjectAssessmentSections.Length);
for (var i = 0; i < expectedProjectAssessmentSections.Length; i++)
{
AssessmentSection expectedAssessmentSection = expectedProjectAssessmentSections[i];
AssessmentSection actualAssessmentSection = actualProjectAssessmentSections[i];
Assert.AreEqual(expectedAssessmentSection.StorageId, actualAssessmentSection.StorageId);
Assert.AreEqual(expectedAssessmentSection.Name, actualAssessmentSection.Name);
AssertHydraulicBoundaryDatabase(expectedAssessmentSection.HydraulicBoundaryDatabase, actualAssessmentSection.HydraulicBoundaryDatabase);
AssertReferenceLine(expectedAssessmentSection.ReferenceLine, actualAssessmentSection.ReferenceLine);
AssertPipingFailureMechanism(expectedAssessmentSection.PipingFailureMechanism, actualAssessmentSection.PipingFailureMechanism);
AssertGrassCoverErosionInwardsFailureMechanism(expectedAssessmentSection.GrassCoverErosionInwards, actualAssessmentSection.GrassCoverErosionInwards);
IFailureMechanism[] expectedProjectFailureMechanisms = expectedAssessmentSection.GetFailureMechanisms().ToArray();
IFailureMechanism[] actualProjectFailureMechanisms = actualAssessmentSection.GetFailureMechanisms().ToArray();
for (var fmi = 0; fmi < expectedProjectFailureMechanisms.Length; fmi++)
{
AssertFailureMechanism(expectedProjectFailureMechanisms[fmi], actualProjectFailureMechanisms[fmi]);
}
AssertFailureMechanismSectionResults(
expectedAssessmentSection.PipingFailureMechanism.SectionResults,
actualAssessmentSection.PipingFailureMechanism.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.GrassCoverErosionInwards.SectionResults,
actualAssessmentSection.GrassCoverErosionInwards.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.HeightStructures.SectionResults,
actualAssessmentSection.HeightStructures.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.StrengthStabilityLengthwiseConstruction.SectionResults,
actualAssessmentSection.StrengthStabilityLengthwiseConstruction.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.TechnicalInnovation.SectionResults,
actualAssessmentSection.TechnicalInnovation.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.WaterPressureAsphaltCover.SectionResults,
actualAssessmentSection.WaterPressureAsphaltCover.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.ClosingStructure.SectionResults,
actualAssessmentSection.ClosingStructure.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.MacrostabilityOutwards.SectionResults,
actualAssessmentSection.MacrostabilityOutwards.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.MacrostabilityInwards.SectionResults,
actualAssessmentSection.MacrostabilityInwards.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.WaveImpactAsphaltCover.SectionResults,
actualAssessmentSection.WaveImpactAsphaltCover.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.GrassCoverErosionOutwards.SectionResults,
actualAssessmentSection.GrassCoverErosionOutwards.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.GrassCoverSlipOffInwards.SectionResults,
actualAssessmentSection.GrassCoverSlipOffInwards.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.GrassCoverSlipOffOutwards.SectionResults,
actualAssessmentSection.GrassCoverSlipOffOutwards.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.Microstability.SectionResults,
actualAssessmentSection.Microstability.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.PipingStructure.SectionResults,
actualAssessmentSection.PipingStructure.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.DuneErosion.SectionResults,
actualAssessmentSection.DuneErosion.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.StabilityStoneCover.SectionResults,
actualAssessmentSection.StabilityStoneCover.SectionResults);
AssertFailureMechanismSectionResults(
expectedAssessmentSection.StrengthStabilityPointConstruction.SectionResults,
actualAssessmentSection.StrengthStabilityPointConstruction.SectionResults);
}
}
private static void AssertFailureMechanismSectionResults(
IEnumerable expectedSectionResults,
IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
PipingFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
PipingFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
GrassCoverErosionInwardsFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
GrassCoverErosionInwardsFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
HeightStructuresFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
HeightStructuresFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
StrengthStabilityLengthwiseConstructionFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
StrengthStabilityLengthwiseConstructionFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
TechnicalInnovationFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
TechnicalInnovationFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
WaterPressureAsphaltCoverFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
WaterPressureAsphaltCoverFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
ClosingStructureFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
ClosingStructureFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
MacrostabilityInwardsFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
MacrostabilityInwardsFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
MacrostabilityOutwardsFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
MacrostabilityOutwardsFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
WaveImpactAsphaltCoverFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
WaveImpactAsphaltCoverFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
GrassCoverErosionOutwardsFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
GrassCoverErosionOutwardsFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
GrassCoverSlipOffInwardsFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
GrassCoverSlipOffInwardsFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
GrassCoverSlipOffOutwardsFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
GrassCoverSlipOffOutwardsFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
MicrostabilityFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
MicrostabilityFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
PipingStructureFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
PipingStructureFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerOne, actualSection.AssessmentLayerOne);
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
DuneErosionFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
DuneErosionFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
StabilityStoneCoverFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
StabilityStoneCoverFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanismSectionResults(IEnumerable expectedSectionResults, IEnumerable actualSectionResults)
{
var expectedSectionResultsArray = expectedSectionResults.ToArray();
var actualSectionResultsArray = actualSectionResults.ToArray();
Assert.AreEqual(expectedSectionResultsArray.Length, actualSectionResultsArray.Length);
for (var i = 0; i < expectedSectionResultsArray.Length; i++)
{
StrengthStabilityPointConstructionFailureMechanismSectionResult expectedSection = expectedSectionResultsArray[i];
StrengthStabilityPointConstructionFailureMechanismSectionResult actualSection = actualSectionResultsArray[i];
Assert.AreEqual(expectedSection.AssessmentLayerTwoA, actualSection.AssessmentLayerTwoA);
Assert.AreEqual(expectedSection.AssessmentLayerThree, actualSection.AssessmentLayerThree);
}
}
private static void AssertFailureMechanism(IFailureMechanism expectedFailureMechanism, IFailureMechanism actualFailureMechanism)
{
Assert.AreEqual(expectedFailureMechanism.Name, actualFailureMechanism.Name);
Assert.AreEqual(expectedFailureMechanism.Code, actualFailureMechanism.Code);
Assert.AreEqual(expectedFailureMechanism.IsRelevant, actualFailureMechanism.IsRelevant);
AssertFailureMechanismSections(expectedFailureMechanism.Sections, actualFailureMechanism.Sections);
}
private static void AssertFailureMechanismSections(IEnumerable expectedSections, IEnumerable actualSections)
{
var expectedSectionsArray = expectedSections.ToArray();
var actualSectionsArray = actualSections.ToArray();
Assert.AreEqual(expectedSectionsArray.Length, actualSectionsArray.Length);
for (var i = 0; i < expectedSectionsArray.Length; i++)
{
FailureMechanismSection expectedSection = expectedSectionsArray[i];
FailureMechanismSection actualSection = actualSectionsArray[i];
Assert.AreEqual(expectedSection.Name, actualSection.Name);
CollectionAssert.AreEqual(expectedSection.Points, actualSection.Points);
}
}
private static void AssertHydraulicBoundaryDatabase(HydraulicBoundaryDatabase expectedBoundaryDatabase, HydraulicBoundaryDatabase actualBoundaryDatabase)
{
Assert.IsNotNull(expectedBoundaryDatabase);
Assert.AreEqual(expectedBoundaryDatabase.Version, actualBoundaryDatabase.Version);
Assert.AreEqual(expectedBoundaryDatabase.FilePath, actualBoundaryDatabase.FilePath);
Assert.AreEqual(expectedBoundaryDatabase.Locations.Count, actualBoundaryDatabase.Locations.Count);
for (int i = 0; i < expectedBoundaryDatabase.Locations.Count; i++)
{
HydraulicBoundaryLocation expectedBoundaryLocation = expectedBoundaryDatabase.Locations[i];
HydraulicBoundaryLocation actualBoundaryLocation = actualBoundaryDatabase.Locations[i];
AssertHydraulicBoundaryLocation(expectedBoundaryLocation, actualBoundaryLocation);
}
}
private static void AssertHydraulicBoundaryLocation(HydraulicBoundaryLocation expectedBoundaryLocation, HydraulicBoundaryLocation actualBoundaryLocation)
{
Assert.AreEqual(expectedBoundaryLocation.Id, actualBoundaryLocation.Id);
Assert.AreEqual(expectedBoundaryLocation.Name, actualBoundaryLocation.Name);
Assert.AreEqual(expectedBoundaryLocation.DesignWaterLevel, actualBoundaryLocation.DesignWaterLevel);
Assert.AreEqual(expectedBoundaryLocation.StorageId, actualBoundaryLocation.StorageId);
Assert.AreEqual(expectedBoundaryLocation.Location, actualBoundaryLocation.Location);
}
private static void AssertReferenceLine(ReferenceLine expectedReferenceLine, ReferenceLine actualReferenceLine)
{
Assert.IsNotNull(expectedReferenceLine);
CollectionAssert.AreEqual(expectedReferenceLine.Points, actualReferenceLine.Points);
}
private static void AssertPipingFailureMechanism(PipingFailureMechanism expectedPipingFailureMechanism, PipingFailureMechanism actualPipingFailureMechanism)
{
AssertProbabilityAssesmentInput(expectedPipingFailureMechanism.PipingProbabilityAssessmentInput, actualPipingFailureMechanism.PipingProbabilityAssessmentInput);
AssertStochasticSoilModels(expectedPipingFailureMechanism.StochasticSoilModels, actualPipingFailureMechanism.StochasticSoilModels);
AssertSurfaceLines(expectedPipingFailureMechanism.SurfaceLines, actualPipingFailureMechanism.SurfaceLines);
AssertCalculationGroup(expectedPipingFailureMechanism.CalculationsGroup, actualPipingFailureMechanism.CalculationsGroup);
}
private static void AssertProbabilityAssesmentInput(PipingProbabilityAssessmentInput expectedModel, PipingProbabilityAssessmentInput actualModel)
{
Assert.AreEqual(expectedModel.A, actualModel.A);
}
private static void AssertStochasticSoilModels(ObservableList expectedModels, ObservableList actualModels)
{
// Precondition:
Assert.Less(0, actualModels.Count);
Assert.AreEqual(expectedModels.Count, actualModels.Count);
for (int i = 0; i < expectedModels.Count; i++)
{
StochasticSoilModel expectedModel = expectedModels[i];
StochasticSoilModel actualModel = actualModels[i];
Assert.AreEqual(expectedModel.Name, actualModel.Name);
Assert.AreEqual(expectedModel.SegmentName, actualModel.SegmentName);
AssertSegmentPoints(expectedModel.Geometry, actualModel.Geometry);
AssertStochasticSoilProfiles(expectedModel.StochasticSoilProfiles, actualModel.StochasticSoilProfiles);
}
}
private static void AssertSegmentPoints(List expectedSoilModelSegmentPoints, List actualSoilModelSegmentPoints)
{
Assert.Greater(expectedSoilModelSegmentPoints.Count, 0);
CollectionAssert.AreEqual(expectedSoilModelSegmentPoints, actualSoilModelSegmentPoints);
}
private static void AssertStochasticSoilProfiles(List expectedStochasticSoilProfiles, List actualStochasticSoilProfiles)
{
Assert.Less(0, actualStochasticSoilProfiles.Count);
Assert.AreEqual(expectedStochasticSoilProfiles.Count, actualStochasticSoilProfiles.Count);
for (int i = 0; i < expectedStochasticSoilProfiles.Count; i++)
{
StochasticSoilProfile expectedProfile = expectedStochasticSoilProfiles[i];
StochasticSoilProfile actualProfile = actualStochasticSoilProfiles[i];
Assert.AreEqual(expectedProfile.Probability, actualProfile.Probability);
Assert.AreEqual(expectedProfile.SoilProfile.Bottom, actualProfile.SoilProfile.Bottom);
Assert.AreEqual(expectedProfile.SoilProfile.Name, actualProfile.SoilProfile.Name);
AssertSoilLayers(expectedProfile.SoilProfile.Layers, actualProfile.SoilProfile.Layers);
}
}
private static void AssertSoilLayers(IEnumerable expectedLayers, IEnumerable actualLayers)
{
PipingSoilLayer[] actualLayerArray = actualLayers.ToArray();
PipingSoilLayer[] expectedLayerArray = expectedLayers.ToArray();
Assert.Less(0, actualLayerArray.Length);
Assert.AreEqual(expectedLayerArray.Length, actualLayerArray.Length);
for (int i = 0; i < expectedLayerArray.Length; i++)
{
PipingSoilLayer expectedLayer = actualLayerArray[i];
PipingSoilLayer actualLayer = expectedLayerArray[i];
Assert.AreEqual(expectedLayer.Top, actualLayer.Top);
Assert.AreEqual(expectedLayer.IsAquifer, actualLayer.IsAquifer);
Assert.AreEqual(expectedLayer.BelowPhreaticLevelMean, actualLayer.BelowPhreaticLevelMean);
Assert.AreEqual(expectedLayer.BelowPhreaticLevelDeviation, actualLayer.BelowPhreaticLevelDeviation);
Assert.AreEqual(expectedLayer.BelowPhreaticLevelShift, actualLayer.BelowPhreaticLevelShift);
Assert.AreEqual(expectedLayer.DiameterD70Mean, actualLayer.DiameterD70Mean);
Assert.AreEqual(expectedLayer.DiameterD70Deviation, actualLayer.DiameterD70Deviation);
Assert.AreEqual(expectedLayer.PermeabilityMean, actualLayer.PermeabilityMean);
Assert.AreEqual(expectedLayer.PermeabilityDeviation, actualLayer.PermeabilityDeviation);
}
}
private static void AssertSurfaceLines(ICollection expectedSurfaceLines, ICollection actualSurfaceLines)
{
// Precondition:
Assert.Greater(expectedSurfaceLines.Count, 0);
Assert.AreEqual(expectedSurfaceLines.Count, actualSurfaceLines.Count);
for (int i = 0; i < expectedSurfaceLines.Count; i++)
{
RingtoetsPipingSurfaceLine expectedSurfaceLine = expectedSurfaceLines.ElementAt(i);
RingtoetsPipingSurfaceLine actualSurfaceLine = expectedSurfaceLines.ElementAt(i);
AssertSurfaceLine(expectedSurfaceLine, actualSurfaceLine);
}
}
private static void AssertSurfaceLine(RingtoetsPipingSurfaceLine expectedSurfaceLine, RingtoetsPipingSurfaceLine actualSurfaceLine)
{
Assert.AreEqual(expectedSurfaceLine.Name, actualSurfaceLine.Name);
Assert.AreEqual(expectedSurfaceLine.ReferenceLineIntersectionWorldPoint, actualSurfaceLine.ReferenceLineIntersectionWorldPoint);
CollectionAssert.AreEqual(expectedSurfaceLine.Points, actualSurfaceLine.Points);
Assert.AreEqual(expectedSurfaceLine.BottomDitchDikeSide, actualSurfaceLine.BottomDitchDikeSide);
Assert.AreEqual(expectedSurfaceLine.BottomDitchPolderSide, actualSurfaceLine.BottomDitchPolderSide);
Assert.AreEqual(expectedSurfaceLine.DikeToeAtPolder, actualSurfaceLine.DikeToeAtPolder);
Assert.AreEqual(expectedSurfaceLine.DikeToeAtRiver, actualSurfaceLine.DikeToeAtRiver);
Assert.AreEqual(expectedSurfaceLine.DitchDikeSide, actualSurfaceLine.DitchDikeSide);
Assert.AreEqual(expectedSurfaceLine.DitchPolderSide, actualSurfaceLine.DitchPolderSide);
}
private static void AssertCalculationGroup(CalculationGroup expectedRootCalculationGroup, CalculationGroup actualRootCalculationGroup)
{
Assert.AreEqual(expectedRootCalculationGroup.Name, actualRootCalculationGroup.Name);
Assert.AreEqual(expectedRootCalculationGroup.IsNameEditable, actualRootCalculationGroup.IsNameEditable);
Assert.AreEqual(expectedRootCalculationGroup.Children.Count, actualRootCalculationGroup.Children.Count);
for (int i = 0; i < expectedRootCalculationGroup.Children.Count; i++)
{
ICalculationBase expectedChild = expectedRootCalculationGroup.Children[i];
ICalculationBase actualChild = actualRootCalculationGroup.Children[i];
Assert.AreEqual(expectedChild.GetType(), actualChild.GetType());
var expectedChildGroup = expectedChild as CalculationGroup;
if (expectedChildGroup != null)
{
AssertCalculationGroup(expectedChildGroup, (CalculationGroup) actualChild);
}
var expectedPipingCalculation = expectedChild as PipingCalculationScenario;
if (expectedPipingCalculation != null)
{
AssertPipingCalculationScenario(expectedPipingCalculation, (PipingCalculationScenario) actualChild);
}
var expectedGrassCoverErosionInwardsCalculation = expectedChild as GrassCoverErosionInwardsCalculation;
if (expectedGrassCoverErosionInwardsCalculation != null)
{
AssertGrassCoverErosionInwardsCalculation(expectedGrassCoverErosionInwardsCalculation, (GrassCoverErosionInwardsCalculation) actualChild);
}
}
}
private static void AssertPipingCalculationScenario(PipingCalculationScenario expectedPipingCalculation, PipingCalculationScenario actualPipingCalculation)
{
Assert.AreEqual(expectedPipingCalculation.IsRelevant, actualPipingCalculation.IsRelevant);
Assert.AreEqual(expectedPipingCalculation.Contribution, actualPipingCalculation.Contribution);
Assert.AreEqual(expectedPipingCalculation.Name, actualPipingCalculation.Name);
Assert.AreEqual(expectedPipingCalculation.Comments, actualPipingCalculation.Comments);
AssertPipingInput(expectedPipingCalculation.InputParameters, actualPipingCalculation.InputParameters);
AssertPipingOutput(expectedPipingCalculation.Output, actualPipingCalculation.Output);
AssertPipingSemiProbabilisticOutput(expectedPipingCalculation.SemiProbabilisticOutput, actualPipingCalculation.SemiProbabilisticOutput);
}
private static void AssertPipingInput(PipingInput expectedPipingInput, PipingInput actualPipingInput)
{
Assert.AreEqual(expectedPipingInput.ExitPointL, actualPipingInput.ExitPointL);
Assert.AreEqual(expectedPipingInput.EntryPointL, actualPipingInput.EntryPointL);
Assert.AreEqual(expectedPipingInput.PhreaticLevelExit.Mean, actualPipingInput.PhreaticLevelExit.Mean);
Assert.AreEqual(expectedPipingInput.PhreaticLevelExit.StandardDeviation, actualPipingInput.PhreaticLevelExit.StandardDeviation);
Assert.AreEqual(expectedPipingInput.DampingFactorExit.Mean, actualPipingInput.DampingFactorExit.Mean);
Assert.AreEqual(expectedPipingInput.DampingFactorExit.StandardDeviation, actualPipingInput.DampingFactorExit.StandardDeviation);
Assert.AreEqual(expectedPipingInput.SaturatedVolumicWeightOfCoverageLayer.Mean, actualPipingInput.SaturatedVolumicWeightOfCoverageLayer.Mean);
Assert.AreEqual(expectedPipingInput.SaturatedVolumicWeightOfCoverageLayer.StandardDeviation, actualPipingInput.SaturatedVolumicWeightOfCoverageLayer.StandardDeviation);
Assert.AreEqual(expectedPipingInput.SaturatedVolumicWeightOfCoverageLayer.Shift, actualPipingInput.SaturatedVolumicWeightOfCoverageLayer.Shift);
Assert.AreEqual(expectedPipingInput.Diameter70.Mean, actualPipingInput.Diameter70.Mean);
Assert.AreEqual(expectedPipingInput.Diameter70.StandardDeviation, actualPipingInput.Diameter70.StandardDeviation);
Assert.AreEqual(expectedPipingInput.DarcyPermeability.Mean, actualPipingInput.DarcyPermeability.Mean);
Assert.AreEqual(expectedPipingInput.DarcyPermeability.StandardDeviation, actualPipingInput.DarcyPermeability.StandardDeviation);
}
private static void AssertPipingOutput(PipingOutput expectedOutput, PipingOutput actualOutput)
{
if (expectedOutput == null)
{
Assert.IsNull(actualOutput);
}
else
{
Assert.AreEqual(expectedOutput.HeaveFactorOfSafety, actualOutput.HeaveFactorOfSafety);
Assert.AreEqual(expectedOutput.HeaveZValue, actualOutput.HeaveZValue);
Assert.AreEqual(expectedOutput.UpliftFactorOfSafety, actualOutput.UpliftFactorOfSafety);
Assert.AreEqual(expectedOutput.UpliftZValue, actualOutput.UpliftZValue);
Assert.AreEqual(expectedOutput.SellmeijerFactorOfSafety, actualOutput.SellmeijerFactorOfSafety);
Assert.AreEqual(expectedOutput.SellmeijerZValue, actualOutput.SellmeijerZValue);
}
}
private static void AssertPipingSemiProbabilisticOutput(PipingSemiProbabilisticOutput expectedOutput, PipingSemiProbabilisticOutput actualOutput)
{
if (expectedOutput == null)
{
Assert.IsNull(actualOutput);
}
else
{
Assert.AreEqual(expectedOutput.HeaveFactorOfSafety, actualOutput.HeaveFactorOfSafety);
Assert.AreEqual(expectedOutput.HeaveProbability, actualOutput.HeaveProbability);
Assert.AreEqual(expectedOutput.HeaveReliability, actualOutput.HeaveReliability);
Assert.AreEqual(expectedOutput.SellmeijerFactorOfSafety, actualOutput.SellmeijerFactorOfSafety);
Assert.AreEqual(expectedOutput.SellmeijerProbability, actualOutput.SellmeijerProbability);
Assert.AreEqual(expectedOutput.SellmeijerReliability, actualOutput.SellmeijerReliability);
Assert.AreEqual(expectedOutput.UpliftFactorOfSafety, actualOutput.UpliftFactorOfSafety);
Assert.AreEqual(expectedOutput.UpliftProbability, actualOutput.UpliftProbability);
Assert.AreEqual(expectedOutput.UpliftReliability, actualOutput.UpliftReliability);
Assert.AreEqual(expectedOutput.RequiredReliability, actualOutput.RequiredReliability);
Assert.AreEqual(expectedOutput.RequiredProbability, actualOutput.RequiredProbability);
Assert.AreEqual(expectedOutput.PipingFactorOfSafety, actualOutput.PipingFactorOfSafety);
Assert.AreEqual(expectedOutput.PipingReliability, actualOutput.PipingReliability);
Assert.AreEqual(expectedOutput.PipingProbability, actualOutput.PipingProbability);
}
}
private static void AssertGrassCoverErosionInwardsCalculation(GrassCoverErosionInwardsCalculation expectedCalculation, GrassCoverErosionInwardsCalculation actualCalculation)
{
Assert.AreEqual(expectedCalculation.Name, actualCalculation.Name);
Assert.AreEqual(expectedCalculation.Comments, actualCalculation.Comments);
AssertGrassCoverErosionInwardsInput(expectedCalculation.InputParameters, actualCalculation.InputParameters);
if (expectedCalculation.HasOutput)
{
AssertGrassCoverErosionInwardsOutput(expectedCalculation.Output, actualCalculation.Output);
}
else
{
Assert.IsFalse(actualCalculation.HasOutput);
}
}
private static void AssertGrassCoverErosionInwardsInput(GrassCoverErosionInwardsInput expectedInput, GrassCoverErosionInwardsInput actualInput)
{
if (expectedInput.DikeProfile == null)
{
Assert.IsNull(actualInput.DikeProfile);
}
else
{
AssertDikeProfile(expectedInput.DikeProfile, actualInput.DikeProfile);
}
if (expectedInput.HydraulicBoundaryLocation == null)
{
Assert.IsNull(actualInput.HydraulicBoundaryLocation);
}
else
{
AssertHydraulicBoundaryLocation(expectedInput.HydraulicBoundaryLocation, actualInput.HydraulicBoundaryLocation);
}
AssertBreakWater(expectedInput.BreakWater, actualInput.BreakWater);
Assert.AreEqual(expectedInput.Orientation, actualInput.Orientation);
Assert.AreEqual(expectedInput.UseBreakWater, actualInput.UseBreakWater);
Assert.AreEqual(expectedInput.UseForeshore, actualInput.UseForeshore);
Assert.AreEqual(expectedInput.DikeHeight, actualInput.DikeHeight);
Assert.AreEqual(expectedInput.CriticalFlowRate.Mean, actualInput.CriticalFlowRate.Mean);
Assert.AreEqual(expectedInput.CriticalFlowRate.StandardDeviation, actualInput.CriticalFlowRate.StandardDeviation);
Assert.AreEqual(expectedInput.CalculateDikeHeight, actualInput.CalculateDikeHeight);
}
private static void AssertGrassCoverErosionInwardsOutput(GrassCoverErosionInwardsOutput expectedOutput, GrassCoverErosionInwardsOutput actualOutput)
{
Assert.AreEqual(expectedOutput.DikeHeightCalculated, actualOutput.DikeHeightCalculated);
Assert.AreEqual(expectedOutput.DikeHeight, actualOutput.DikeHeight);
Assert.AreEqual(expectedOutput.WaveHeight, actualOutput.WaveHeight);
Assert.AreEqual(expectedOutput.IsOvertoppingDominant, actualOutput.IsOvertoppingDominant);
AssertProbabilityAssesmentOutput(expectedOutput.ProbabilityAssessmentOutput, actualOutput.ProbabilityAssessmentOutput);
}
private static void AssertProbabilityAssesmentOutput(ProbabilityAssessmentOutput expectedOutput, ProbabilityAssessmentOutput actualOutput)
{
Assert.AreEqual(expectedOutput.FactorOfSafety, actualOutput.FactorOfSafety);
Assert.AreEqual(expectedOutput.Probability, actualOutput.Probability);
Assert.AreEqual(expectedOutput.Reliability, actualOutput.Reliability);
Assert.AreEqual(expectedOutput.RequiredProbability, actualOutput.RequiredProbability);
Assert.AreEqual(expectedOutput.RequiredReliability, actualOutput.RequiredReliability);
}
private static void AssertGrassCoverErosionInwardsFailureMechanism(GrassCoverErosionInwardsFailureMechanism expectedFailureMechanism,
GrassCoverErosionInwardsFailureMechanism actualFailureMechanism)
{
Assert.AreEqual(expectedFailureMechanism.GeneralInput.N, actualFailureMechanism.GeneralInput.N);
AssertDikeProfiles(expectedFailureMechanism.DikeProfiles, actualFailureMechanism.DikeProfiles);
AssertCalculationGroup(expectedFailureMechanism.CalculationsGroup, actualFailureMechanism.CalculationsGroup);
}
private static void AssertDikeProfiles(IList expectedDikeProfiles, IList actualDikeProfiles)
{
Assert.AreEqual(expectedDikeProfiles.Count, actualDikeProfiles.Count);
for (int i = 0; i < expectedDikeProfiles.Count; i++)
{
AssertDikeProfile(expectedDikeProfiles[i], actualDikeProfiles[i]);
}
}
private static void AssertDikeProfile(DikeProfile expectedDikeProfile, DikeProfile actualDikeProfile)
{
Assert.AreEqual(expectedDikeProfile.Name, actualDikeProfile.Name);
Assert.AreEqual(expectedDikeProfile.WorldReferencePoint, actualDikeProfile.WorldReferencePoint);
Assert.AreEqual(expectedDikeProfile.X0, actualDikeProfile.X0);
Assert.AreEqual(expectedDikeProfile.Orientation, actualDikeProfile.Orientation);
AssertBreakWater(expectedDikeProfile.BreakWater, actualDikeProfile.BreakWater);
CollectionAssert.AreEqual(expectedDikeProfile.ForeshoreGeometry, actualDikeProfile.ForeshoreGeometry);
AssertRoughnessPoints(expectedDikeProfile.DikeGeometry, actualDikeProfile.DikeGeometry);
Assert.AreEqual(expectedDikeProfile.DikeHeight, actualDikeProfile.DikeHeight);
}
private static void AssertBreakWater(BreakWater expectedBreakWater, BreakWater actualBreakWater)
{
if (expectedBreakWater == null)
{
Assert.IsNull(actualBreakWater);
}
else
{
Assert.AreEqual(expectedBreakWater.Height, actualBreakWater.Height);
Assert.AreEqual(expectedBreakWater.Type, actualBreakWater.Type);
}
}
private static void AssertRoughnessPoints(RoughnessPoint[] expectedRoughnessPoints, RoughnessPoint[] actualRoughnessPoints)
{
Assert.AreEqual(expectedRoughnessPoints.Length, actualRoughnessPoints.Length);
for (int i = 0; i < expectedRoughnessPoints.Length; i++)
{
AssertRoughnessPoint(expectedRoughnessPoints[i], actualRoughnessPoints[i]);
}
}
private static void AssertRoughnessPoint(RoughnessPoint expectedRoughnessPoint, RoughnessPoint actualRoughnessPoint)
{
Assert.AreEqual(expectedRoughnessPoint.Point, actualRoughnessPoint.Point);
Assert.AreEqual(expectedRoughnessPoint.Roughness, actualRoughnessPoint.Roughness);
}
private static void TearDownTempRingtoetsFile(string filePath)
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (!string.IsNullOrWhiteSpace(filePath) && File.Exists(filePath))
{
File.Delete(filePath);
}
}
}
}