Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r1909 -r1912 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapper.cs (.../DamWbiMacroStabilityInwardsKernelWrapper.cs) (revision 1909) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapper.cs (.../DamWbiMacroStabilityInwardsKernelWrapper.cs) (revision 1912) @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Data; +using System.Linq; using System.Xml.Linq; using Deltares.DamEngine.Calculators.DikesDesign; using Deltares.DamEngine.Calculators.KernelWrappers.Common; @@ -81,32 +82,49 @@ public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) { messages = new List(); - // ToDo: Not clear yet what input must be provided to make Validate succeed. Temporary test code added. - // start of temporary test code DamWbiMacroStabilityInput macroStabilityInput = (DamWbiMacroStabilityInput)kernelDataInput; + DamWbiMacroStabilityOutput macroStabilityOutput = (DamWbiMacroStabilityOutput)kernelDataOutput; + var calculator = CreateWbiStabilityCalculator(kernelDataInput); + string kernelMessage = calculator.Validate(); + ParseValidationResult(kernelMessage, messages); + + // ToDo MWDAM-1367: Not clear yet what input must be provided to make Validate succeed. Temporary test code added. + // start of temporary test code if (macroStabilityInput.TmpWbiMacroIn > 1.0) { - // no message, presumed input valid for test + // only an info/warning message, presumed input valid for test + messages.Add(new LogMessage() + { + Message = "test info message", + MessageType = LogMessageType.Info + }); } else - // end of temporary test code. next code must be enough, presumed that the kernel does all the validation { - DamWbiMacroStabilityOutput macroStabilityOutput = (DamWbiMacroStabilityOutput)kernelDataOutput; - var calculator = CreateWbiStabilityCalculator(kernelDataInput); - string kernelMessage = calculator.Validate(); + // add an error message, presumed input not valid for test messages.Add(new LogMessage() { - Message = kernelMessage, + Message = "test error message", MessageType = LogMessageType.Error }); - if (messages.Count > 0) - { - macroStabilityOutput.CalculationResult = CalculationResult.InvalidInputData; - } + macroStabilityOutput.CalculationResult = CalculationResult.InvalidInputData; } - return messages.Count; + // end of temporary test code. next code must be enough, presumed that the kernel does all the validation + + var numberOfErrors = messages.Count(mt => mt.MessageType == LogMessageType.Error); + if (numberOfErrors > 0) + { + macroStabilityOutput.CalculationResult = CalculationResult.InvalidInputData; + } + return numberOfErrors; } + private void ParseValidationResult(string xmlValidationResult, List messages) + { + + // ToDo MWDAM-1367: Parse the xml from the kernel and add message with type Error, Info or Warning + } + /// /// Executes the kernel. /// Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapperTests.cs =================================================================== diff -u -r1909 -r1912 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapperTests.cs (.../DamWbiMacroStabilityInwardsKernelWrapperTests.cs) (revision 1909) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapperTests.cs (.../DamWbiMacroStabilityInwardsKernelWrapperTests.cs) (revision 1912) @@ -60,21 +60,26 @@ var kernelWrapper = new DamWbiMacroStabilityInwardsKernelWrapper(); // Validate without setting values. Expected error messages. - var macroStabilityInput = new DamWbiMacroStabilityInput(); - var macroStabilityOutput = new DamWbiMacroStabilityOutput(); + var macroStabilityInput1 = new DamWbiMacroStabilityInput(); + var macroStabilityOutput1 = new DamWbiMacroStabilityOutput(); + macroStabilityOutput1.CalculationResult = CalculationResult.NoRun; List messages; - kernelWrapper.Validate(macroStabilityInput, macroStabilityOutput, out messages); - Assert.IsTrue(messages.Count > 0); + var errorCount = kernelWrapper.Validate(macroStabilityInput1, macroStabilityOutput1, out messages); + Assert.IsTrue(errorCount > 0); + Assert.AreEqual(CalculationResult.InvalidInputData, macroStabilityOutput1.CalculationResult); // Validate the input when valid input is provided. Expected no messages. - macroStabilityInput = new DamWbiMacroStabilityInput(); + var macroStabilityInput2 = new DamWbiMacroStabilityInput(); + var macroStabilityOutput2 = new DamWbiMacroStabilityOutput(); + macroStabilityOutput2.CalculationResult = CalculationResult.NoRun; messages.Clear(); - // ToDo: Not clear yet what input must be provided to make Validate succeed. Temporary test code added. + // ToDo MWDAM-1367: Not clear yet what input must be provided to make Validate succeed. Temporary test code added. // start of temporary test code - macroStabilityInput.TmpWbiMacroIn = 1.1; + macroStabilityInput2.TmpWbiMacroIn = 1.1; // end of temporary test code - kernelWrapper.Validate(macroStabilityInput, macroStabilityOutput, out messages); - Assert.AreEqual(0, messages.Count); + errorCount = kernelWrapper.Validate(macroStabilityInput2, macroStabilityOutput2, out messages); + Assert.IsTrue(errorCount == 0); + Assert.AreEqual(CalculationResult.NoRun, macroStabilityOutput2.CalculationResult); } [Test] @@ -127,9 +132,9 @@ // Validate the input List messages; - kernelWrapper.Validate(kernelDataInput, kernelDataOutput, out messages); - // ToDo: Not clear yet what input must be provided to make Validate succeed. Skip for now. - //Assert.AreEqual(0, messages.Count); + var errorCount = kernelWrapper.Validate(kernelDataInput, kernelDataOutput, out messages); + // ToDo MWDAM-1367: Not clear yet what input must be provided to make Validate succeed. Skip for now. + //Assert.IsTrue(errorCount == 0); // Run the dll kernelWrapper.Execute(kernelDataInput, kernelDataOutput, out messages);