Index: DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/StabilityInsideBishopGridTest.cs
===================================================================
diff -u
--- DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/StabilityInsideBishopGridTest.cs (revision 0)
+++ DamClients/DamLive/trunk/src/Deltares.DamLive.Tests/StabilityInsideBishopGridTest.cs (revision 4100)
@@ -0,0 +1,173 @@
+// Copyright (C) Stichting Deltares 2023. All rights reserved.
+//
+// This file is part of the application DAM - Live.
+//
+// DAM - Live 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;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using Deltares.Dam.Application.Live;
+using Deltares.Dam.Data;
+using Deltares.DamLive.TestHelper;
+using Deltares.Standard.IO;
+using NUnit.Framework;
+
+namespace Deltares.DamLive.Tests;
+
+
+[TestFixture]
+[Category("Integration")]
+
+public class StabilityInsideBishopGridTest
+{
+ const string projectStabilityFilename = @"DAMLive.damx";
+ const string input1aFilename = @"live.InputTimeSeriesMHW.xml";
+ const string output1aFilename = @"live.OutputTimeSeriesMHW.xml";
+ const string calculationParametersStabilityFilename = @"live.ParametersFile.xml";
+
+ const string testWorkingFolder = @".\damLiveBishopGridWork";
+ private const string testStablityDataFolder = @"..\..\..\data\IntegerationTests\StabilityInsideBishopGrid";
+ private List locations;
+
+ private string inputFile;
+ private string outputFile;
+ private string projectFile;
+ private string parameterFile;
+
+ private DamEngineRunner runner;
+
+ [SetUp]
+ public void SetupFixture()
+ {
+ IoHelper.RemoveTestWorkingDirectory(testWorkingFolder); // to be sure no test directory exist from previous tests
+ Directory.CreateDirectory(testWorkingFolder);
+ }
+
+ [TearDown]
+ public void TearDownFixture()
+ {
+ IoHelper.RemoveTestWorkingDirectory(testWorkingFolder);
+ }
+
+ [TearDown]
+ public void TearDownTest()
+ {
+ AssertNoErrors();
+ }
+
+ [SetUp]
+ public void SetupTest() {}
+
+ [Test] //, Ignore("")]
+ [Category("Integration")]
+ [Category("Work_In_Progress")]
+ [TestCase(1)]
+ [TestCase(20)]
+ public void CalculateStabilityInsideBishopGridUsingTestFilesHasExpectedResultsInOutputFile(int maxCores)
+ {
+ const double cTolerance = 0.0005;
+ SetupStabilityProject();
+ runner.Initialize();
+ runner.MaxCalculationCores = maxCores;
+ Assert.IsNotNull(runner);
+ Assert.IsNotNull(runner.DamProjectData);
+ Assert.IsNotNull(runner.CalculationParameters);
+ Assert.IsNotNull(runner.CalculationParameters.CalculationModules);
+ Assert.IsNotNull(runner.CalculationParameters.MStabParameters);
+
+ runner.Run();
+ //runner.WriteResultsToFile(outputFile);
+
+ AssertNoErrors();
+
+ // Assertions
+
+ List series = runner.OutputTimeSeriesCollection.Series;
+
+ var seriesCount = 0;
+
+ string[] validParameterIDs = Enum.GetNames(typeof(TimeSerieParameters));
+ 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 == "grebbedijk1a")
+ {
+ TimeSerieEntry firstEntry = timeSeries.Entries.First();
+ Assert.AreEqual(1.603, firstEntry.Value, cTolerance, "The computed safety factory is not correct");
+ }
+
+ if (timeSeries.LocationId == "grebbedijk3a")
+ {
+ TimeSerieEntry firstEntry = timeSeries.Entries.First();
+ // Following value was 0.590 in the previous DamLive version, but that has to do with how the
+ // reference level Su is handled in D-GeoStability 18.1 and D-GeoStability 15.1
+ Assert.AreEqual(1.007, firstEntry.Value, cTolerance, "The computed safety factory is not correct");
+ }
+ }
+
+ seriesCount++;
+ }
+
+ Assert.IsTrue(seriesCount > 0, "No output time series");
+
+ }
+ private void SetupStabilityProject()
+ {
+ string actualTestPath = Path.GetFullPath(testWorkingFolder);
+
+ Directory.CreateDirectory(actualTestPath);
+
+ DirectoryHelper.CopyRecursive(actualTestPath, testStablityDataFolder);
+
+ inputFile = Path.Combine(actualTestPath, input1aFilename);
+ outputFile = Path.Combine(actualTestPath, output1aFilename);
+ parameterFile = Path.Combine(actualTestPath, calculationParametersStabilityFilename);
+ projectFile = Path.Combine(actualTestPath, projectStabilityFilename);
+ DamProject.SetTestProgramVersion("23.1");
+ DamProjectData damData = DamProject.LoadData(projectFile);
+ locations = damData.Locations;
+
+ // Load the sensor time serie data (see input file for details)
+ TimeSerieCollection inputTimeSeries = TimeSerieCollection.LoadFromFile(inputFile);
+ //ShortenTimeSeries(inputTimeSeries);
+ inputTimeSeries.Save(Path.ChangeExtension(inputFile, "short.xml"));
+
+ runner = new DamEngineRunner
+ {
+ DamXFile = new FileInfo(projectFile),
+ ParametersFile = new FileInfo(parameterFile),
+ FewsInputFile = new FileInfo(inputFile),
+ FewsOutputFile = new FileInfo(outputFile),
+ Filter = "",
+ InputTimeSeriesCollection = inputTimeSeries
+ };
+ }
+ private void AssertNoErrors()
+ {
+ if (runner.HasErrors)
+ {
+ Assert.Fail("The test failed. See the error log in the test output console for more info");
+ }
+ }
+}
\ No newline at end of file