// Copyright (C) Stichting Deltares 2024. All rights reserved.
//
// This file is part of the Dam Engine.
//
// The Dam Engine is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero 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 NUnit.Framework;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Deltares.DamEngine.Calculators.DikesOperational;
using Deltares.DamEngine.Data.General.TimeSeries;
using Deltares.DamEngine.Io;
using Deltares.DamEngine.Io.XmlOutput;
using KellermanSoftware.CompareNetObjects;
using NUnit.Framework;
using TimeSerie = Deltares.DamEngine.Data.General.TimeSeries.TimeSerie;
namespace Deltares.DamEngine.IntegrationTests.IntegrationTests;
//[TestFixture]
public static class CheckLargeResultsSets
{
private const double tol2Digits = 0.005;
private const double tolerance = 0.0005;
private static readonly List resultsParametersToIgnore = new List
{
"CalculationSubDir"
};
//[Test]
public static void CheckResultsOperationalBeeSwarmMultiCoreWithXmlInputFile(List series)
{
var seriesCount = 0;
var resultsCount = 0;
const double cTolerance = 0.0005;
foreach (TimeSerie timeSeries in series)
{
//Assert.IsTrue(validParameterIDs.Any(n => n == timeSeries.ParameterId));
//Assert.IsTrue(locations.Any(l => l.Name == timeSeries.LocationId));
// StabilityInside check
if (timeSeries.ParameterId == TimeSerieParameters.StabilityInsideFactor.ToString())
{
if (timeSeries.LocationId == "Purmer_PU0042+00_K")
{
TimeSerieEntry firstEntry = timeSeries.Entries.First();
Assert.That(firstEntry.Value, Is.EqualTo(1.185).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
TimeSerieEntry lastEntry = timeSeries.Entries.Last();
Assert.That(lastEntry.Value, Is.EqualTo(1.419).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
}
if (timeSeries.LocationId == "Purmer_PU0042+00_K_V")
{
TimeSerieEntry firstEntry = timeSeries.Entries.First();
Assert.That(firstEntry.Value, Is.EqualTo(1.110).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
TimeSerieEntry lastEntry = timeSeries.Entries.Last();
Assert.That(lastEntry.Value, Is.EqualTo(1.326).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
}
if (timeSeries.LocationId == "Purmer_PU0042+00_R")
{
TimeSerieEntry firstEntry = timeSeries.Entries.First();
Assert.That(firstEntry.Value, Is.EqualTo(1.012).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
TimeSerieEntry lastEntry = timeSeries.Entries.Last();
Assert.That(lastEntry.Value, Is.EqualTo(1.217).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
}
if (timeSeries.LocationId == "Purmer_PU0042+00_R_V")
{
TimeSerieEntry firstEntry = timeSeries.Entries.First();
Assert.That(firstEntry.Value, Is.EqualTo(0.949).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
TimeSerieEntry lastEntry = timeSeries.Entries.Last();
Assert.That(lastEntry.Value, Is.EqualTo(1.137).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
}
if (timeSeries.LocationId == "Purmer_PU0110+20_K")
{
TimeSerieEntry firstEntry = timeSeries.Entries.First();
Assert.That(firstEntry.Value, Is.EqualTo(double.NaN).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
TimeSerieEntry lastEntry = timeSeries.Entries.Last();
Assert.That(lastEntry.Value, Is.EqualTo(double.NaN).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
}
if (timeSeries.LocationId == "Purmer_PU0110+20_K_V")
{
TimeSerieEntry firstEntry = timeSeries.Entries.First();
Assert.That(firstEntry.Value, Is.EqualTo(double.NaN).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
TimeSerieEntry lastEntry = timeSeries.Entries.Last();
Assert.That(lastEntry.Value, Is.EqualTo(double.NaN).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
}
if (timeSeries.LocationId == "Purmer_PU0110+20_R")
{
TimeSerieEntry firstEntry = timeSeries.Entries.First();
Assert.That(firstEntry.Value, Is.EqualTo(double.NaN).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
TimeSerieEntry lastEntry = timeSeries.Entries.Last();
Assert.That(lastEntry.Value, Is.EqualTo(double.NaN).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
}
if (timeSeries.LocationId == "Purmer_PU0110+20_R_V")
{
TimeSerieEntry firstEntry = timeSeries.Entries.First();
Assert.That(firstEntry.Value, Is.EqualTo(double.NaN).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
TimeSerieEntry lastEntry = timeSeries.Entries.Last();
Assert.That(lastEntry.Value, Is.EqualTo(double.NaN).Within(cTolerance), "The computed safety factory is not correct");
resultsCount++;
}
}
seriesCount++;
}
Assert.That(seriesCount, Is.GreaterThan(0), "No output time series");
Assert.That(resultsCount, Is.EqualTo(16), "Incorrect number of results");
}
public static void CheckResultsDesignBishopWithScenariosForHeadPl3CalculatesCorrect(DesignResult[] calculationResults)
{
foreach (DesignResult designResult in calculationResults)
{
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(3)_Pro(segment_627_1D1-KR093_0013-1)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(9.090).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.94).Within(tol2Digits));
});
}
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(4)_Pro(segment_627_1D1-KR093_0013-1)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(8.148).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
});
}
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(3)_Pro(segment_627_1D2-KR093_0013-2)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(6.991).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.94).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(4)_Pro(segment_627_1D2-KR093_0013-2)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(6.080).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(3)_Pro(segment_627_1D3-KR093_0013-3)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(7.990).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.94).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(4)_Pro(segment_627_1D3-KR093_0013-3)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(7.244).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(3)_Pro(segment_629_1D1-KR093_0018-1)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(7.353).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.00).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(4)_Pro(segment_629_1D1-KR093_0018-1)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(6.278).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.61).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(3)_Pro(segment_629_1D2-KR093_0018-2)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(5.945).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.00).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(4)_Pro(segment_629_1D2-KR093_0018-2)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.225).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(3)_Pro(segment_629_1D3-KR093_0018-3)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.404).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.00).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(4)_Pro(segment_629_1D3-KR093_0018-3)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.404).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(3)_Pro(segment_629_1D1-KR093_0019-1)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(4.557).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.03).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(4)_Pro(segment_629_1D1-KR093_0019-1)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(3.985).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.57).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(3)_Pro(segment_629_1D2-KR093_0019-2)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(4.087).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.03).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(4)_Pro(segment_629_1D2-KR093_0019-2)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(3.418).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(3)_Pro(segment_629_1D3-KR093_0019-3)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(4.420).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.03).Within(tol2Digits));
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(4)_Pro(segment_629_1D3-KR093_0019-3)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(3.952).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
}
}
}
public static int CheckResultsDesignBishopAdaptionWithScenariosForHeadPl3CalculatesCorrect(DesignResult[] calculationResults)
{
var resultsFound = 0;
foreach (DesignResult designResult in calculationResults)
{
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(3)_Pro(segment_627_1D1-KR093_0013-1)_Ite(4)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(5.306).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.94).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(4)_Pro(segment_627_1D1-KR093_0013-1)_Ite(4)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(5.167).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(3)_Pro(segment_627_1D2-KR093_0013-2)_Ite(3)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(5.188).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.94).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(4)_Pro(segment_627_1D2-KR093_0013-2)_Ite(3)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(4.420).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(3)_Pro(segment_627_1D3-KR093_0013-3)_Ite(3)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(5.188).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.94).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0013)_Sce(4)_Pro(segment_627_1D3-KR093_0013-3)_Ite(3)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(4.784).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(3)_Pro(segment_629_1D1-KR093_0018-1)_Ite(29)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.752).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.00).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(4)_Pro(segment_629_1D1-KR093_0018-1)_Ite(29)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.270).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.52).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(3)_Pro(segment_629_1D2-KR093_0018-2)_Ite(29)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.409).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.00).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(4)_Pro(segment_629_1D2-KR093_0018-2)_Ite(29)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.224).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(3)_Pro(segment_629_1D3-KR093_0018-3)_Ite(29)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.391).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.00).Within(tol2Digits));
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0018)_Sce(4)_Pro(segment_629_1D3-KR093_0018-3)_Ite(29)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.389).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(3)_Pro(segment_629_1D1-KR093_0019-1)_Ite(25)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(5.848).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.03).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(4)_Pro(segment_629_1D1-KR093_0019-1)_Ite(25)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(5.848).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.57).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(3)_Pro(segment_629_1D2-KR093_0019-2)_Ite(25)"))
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.552).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.03).Within(tol2Digits));
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(4)_Pro(segment_629_1D2-KR093_0019-2)_Ite(5)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(2.876).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(3)_Pro(segment_629_1D3-KR093_0019-3)_Ite(25)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(3.538).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("3"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-1.03).Within(tol2Digits));
});
resultsFound++;
}
if (designResult.BaseFileName.Equals("Loc(KR093_0019)_Sce(4)_Pro(segment_629_1D3-KR093_0019-3)_Ite(25)"))
{
Assert.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.515).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
});
resultsFound++;
}
}
return resultsFound;
}
public static void CheckBasicResultsBasedOnReferenceResultsFile(string resultsFile, string outputFileName,
DesignResult[] calculationResults)
{
string logFile = Path.ChangeExtension(outputFileName, ".log");
if (File.Exists(logFile))
{
File.Delete(logFile);
}
Output output = DamXmlSerialization.LoadOutputFromXmlFile(resultsFile);
Assert.That(calculationResults.Count(), Is.EqualTo(output.Results.CalculationResults.Count()), "Results Count does not match");
var totalDifferences = 0;
foreach (DesignResult expectedDesignResult in output.Results.CalculationResults)
{
expectedDesignResult.BaseFileName ??=
$"Loc({expectedDesignResult.LocationName})_Sce({expectedDesignResult.ScenarioName})_Pro({expectedDesignResult.ProfileName})";
DesignResult actualDesignResult = null;
foreach (DesignResult calculationResult in calculationResults)
{
calculationResult.BaseFileName ??=
$"Loc({calculationResult.LocationName})_Sce({calculationResult.ScenarioName})_Pro({calculationResult.ProfileName})";
if (!expectedDesignResult.BaseFileName.Equals(calculationResult.BaseFileName))
{
continue;
}
actualDesignResult = calculationResult;
break;
}
Assert.That(actualDesignResult, Is.Not.Null, $"Design result {expectedDesignResult.BaseFileName} not found");
var compare = new CompareLogic
{
Config =
{
MaxDifferences = 100,
MembersToIgnore = resultsParametersToIgnore,
DoublePrecision = 1e-6
}
};
ComparisonResult result = compare.Compare(expectedDesignResult, actualDesignResult);
WriteDifferencesToLog(logFile, expectedDesignResult.BaseFileName, result);
totalDifferences += result.Differences.Count;
}
Assert.That(totalDifferences, Is.EqualTo(0), "Total differences found comparing design results for " + resultsFile);
}
private static void WriteDifferencesToLog(string logFile, string baseFileName, ComparisonResult result)
{
if (result.Differences.Any())
{
string res = baseFileName + ": \r\n" + result.DifferencesString;
File.AppendAllText(logFile, res);
}
else
{
string res = baseFileName + ": No differences found at all! \r\n";
File.AppendAllText(logFile, res);
}
}
}