Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/WtiPipingSellmeijerRevisedTests.cs =================================================================== diff -u -r2025 -r2029 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/WtiPipingSellmeijerRevisedTests.cs (.../WtiPipingSellmeijerRevisedTests.cs) (revision 2025) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/WtiPipingSellmeijerRevisedTests.cs (.../WtiPipingSellmeijerRevisedTests.cs) (revision 2029) @@ -1,8 +1,11 @@ using System.IO; +using System.Text; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Interface; using Deltares.DamEngine.Io; +using Deltares.DamEngine.Io.XmlOutput; +using Deltares.DamEngine.TestHelpers; using NUnit.Framework; namespace Deltares.DamEngine.IntegrationTests.IntegrationTests @@ -164,5 +167,47 @@ Assert.AreEqual(90.000, output.Results.CalculationResults.DesignResults[121].PipingDesignResults.Wti2017FactorOverall, tolerance); } + [Test] + // This test runs the same project as CanPerformmWtiDesignNoAdaptionRechterDiezedijk + // except that it runs it with both single core and multi core. + // The output of both runs must be the same + public void CompareResultFromMultiCoreRunWithSingleCoreRun() + { + var calcDir = "TestWtiPipingSingleCore"; + var outputFileName = @"TestFiles\WtiPipingSingleCore.output.xml"; + var output = RunTestProjectCores(calcDir, outputFileName, 1); + var outputSingleCore = DamXmlSerialization.SaveOutputAsXmlString(output); + + calcDir = "TestWtiPipingMultiCore"; + outputFileName = @"TestFiles\WtiPipingMultiCore.output.xml"; + output = RunTestProjectCores(calcDir, outputFileName, 4); + var outputMultiCore = DamXmlSerialization.SaveOutputAsXmlString(output); + + Assert.AreEqual(outputSingleCore, outputMultiCore); + } + + private Output RunTestProjectCores(string calcDir, string outputFileName, int coreCount) + { + if (Directory.Exists(calcDir)) + { + Directory.Delete(calcDir, true); // delete previous results + } + + Directory.CreateDirectory(calcDir); + + const string inputFileName = @"TestFiles\Rechter Diezedijk_WtiSellmeijerRevisedInputFile.xml"; + string inputString = File.ReadAllText(inputFileName); + inputString = XmlAdapter.ChangeValueInXml(inputString, "ProjectPath", ""); // Current directory will be used + inputString = XmlAdapter.ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used + inputString = XmlAdapter.ChangeValueInXml(inputString, "MaxCalculationCores", coreCount.ToString()); + EngineInterface engineInterface = new EngineInterface(inputString); + Assert.IsNotNull(engineInterface.DamProjectData); + string outputString = engineInterface.Run(); + File.WriteAllText(outputFileName, outputString, Encoding.Unicode); + Assert.IsNotNull(outputString); + return DamXmlSerialization.LoadOutputFromXmlString(outputString); + } + } + }