// Copyright (C) Stichting Deltares 2025. 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 System.Collections.Generic;
using Deltares.DamEngine.Io.XmlOutput;
using NUnit.Framework;
namespace Deltares.DamEngine.IntegrationTests.IntegrationTests;
public static class CheckLargeResultsSets
{
private const double tol2Digits = 0.005;
private const double tolerance = 0.0005;
private static readonly List resultsParametersToIgnore = new List
{
"CalculationSubDir"
};
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.311).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.204).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.203).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.203).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.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.369).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.366).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(8.438).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(8.438).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.Multiple(() =>
{
Assert.That(designResult.StabilityDesignResults.SafetyFactor, Is.EqualTo(1.308).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(1.511).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.484).Within(tolerance));
Assert.That(designResult.ScenarioName, Is.EqualTo("4"));
Assert.That(designResult.StabilityDesignResults.UpliftSituation.Pl3HeadAdjusted, Is.EqualTo(-0.37).Within(tol2Digits));
});
resultsFound++;
}
}
return resultsFound;
}
}