Index: src/Plugins/Wti/Wti.Forms/NodePresenters/PipingDataNodePresenter.cs
===================================================================
diff -u -ra3b93c36c2051bd6112327bff0d836ae7883737d -r1689206627a4343d07fafcebb0a931b7a0e9e2d2
--- src/Plugins/Wti/Wti.Forms/NodePresenters/PipingDataNodePresenter.cs (.../PipingDataNodePresenter.cs) (revision a3b93c36c2051bd6112327bff0d836ae7883737d)
+++ src/Plugins/Wti/Wti.Forms/NodePresenters/PipingDataNodePresenter.cs (.../PipingDataNodePresenter.cs) (revision 1689206627a4343d07fafcebb0a931b7a0e9e2d2)
@@ -88,14 +88,12 @@
private void PerformPipingCalculation(PipingData pipingData)
{
- try
+ var calculationErrorMessages = PipingCalculationService.PerfromValidatedCalculation(pipingData);
+
+ foreach(var errorMessage in calculationErrorMessages)
{
- PipingCalculationService.Calculate(pipingData);
+ LogManager.GetLogger(typeof(PipingData)).Error(String.Format(Resources.ErrorInPipingCalculation_0, errorMessage));
}
- catch (PipingCalculationException e)
- {
- LogManager.GetLogger(typeof(PipingData)).Error(String.Format(Resources.ErrorInPipingCalculation_0, e.Message));
- }
pipingData.NotifyObservers();
}
Index: src/Plugins/Wti/Wti.Service/PipingCalculationService.cs
===================================================================
diff -u -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 -r1689206627a4343d07fafcebb0a931b7a0e9e2d2
--- src/Plugins/Wti/Wti.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9)
+++ src/Plugins/Wti/Wti.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 1689206627a4343d07fafcebb0a931b7a0e9e2d2)
@@ -15,10 +15,55 @@
/// to the if the calculation was successful.
///
/// The to base the input for the calculation upon.
- /// Thrown when calling would return a non empty .
- public static void Calculate(PipingData pipingData)
+ /// A with all the messages that were returned due to validation errors in the given
+ /// or error message that occurred when performing the calculation.
+ public static List PerfromValidatedCalculation(PipingData pipingData)
{
- var input = new PipingCalculationInput(
+ var validationResults = Validate(pipingData);
+ if (validationResults.Count > 0)
+ {
+ ClearOutput(pipingData);
+ return validationResults;
+ }
+ try
+ {
+ Calculate(pipingData);
+ }
+ catch (PipingCalculationException e)
+ {
+ ClearOutput(pipingData);
+ return new List{ e.Message };
+ }
+ return new List();
+ }
+
+ private static void ClearOutput(PipingData pipingData)
+ {
+ pipingData.Output = null;
+ }
+
+ private static void Calculate(PipingData pipingData)
+ {
+ var input = CreateInputFromData(pipingData);
+ var pipingCalculation = new PipingCalculation(input);
+
+ var pipingResult = pipingCalculation.Calculate();
+
+ pipingData.Output = new PipingOutput(pipingResult.UpliftZValue,
+ pipingResult.UpliftFactorOfSafety,
+ pipingResult.HeaveZValue, pipingResult.HeaveFactorOfSafety, pipingResult.SellmeijerZValue, pipingResult.SellmeijerFactorOfSafety);
+ }
+
+ public static List Validate(PipingData pipingData)
+ {
+ var input = CreateInputFromData(pipingData);
+
+ return new PipingCalculation(input).Validate();
+ }
+
+ private static PipingCalculationInput CreateInputFromData(PipingData pipingData)
+ {
+ return new PipingCalculationInput(
pipingData.WaterVolumetricWeight,
pipingData.UpliftModelFactor,
pipingData.AssessmentLevel,
@@ -42,17 +87,6 @@
pipingData.BeddingAngle,
pipingData.ExitPointXCoordinate
);
- var pipingCalculation = new PipingCalculation(input);
- var pipingResult = pipingCalculation.Calculate();
-
- pipingData.Output = new PipingOutput(pipingResult.UpliftZValue,
- pipingResult.UpliftFactorOfSafety,
- pipingResult.HeaveZValue, pipingResult.HeaveFactorOfSafety, pipingResult.SellmeijerZValue, pipingResult.SellmeijerFactorOfSafety);
}
-
- public static List Validate(PipingData pipingData)
- {
- return null;
- }
}
}
\ No newline at end of file
Index: test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingDataNodePresenterTest.cs
===================================================================
diff -u -ra3b93c36c2051bd6112327bff0d836ae7883737d -r1689206627a4343d07fafcebb0a931b7a0e9e2d2
--- test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingDataNodePresenterTest.cs (.../PipingDataNodePresenterTest.cs) (revision a3b93c36c2051bd6112327bff0d836ae7883737d)
+++ test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingDataNodePresenterTest.cs (.../PipingDataNodePresenterTest.cs) (revision 1689206627a4343d07fafcebb0a931b7a0e9e2d2)
@@ -365,13 +365,12 @@
mockRepository.ReplayAll();
var contextMenuAdapter = nodePresenter.GetContextMenu(null, pipingData) as MenuItemContextMenuStripAdapter;
- var expectedMessage = "Piping berekening niet gelukt: Dtotal (total thickness) may not be 0." + Environment.NewLine + "Exception of type HeaveCalculator";
// When
Action action = () => contextMenuAdapter.ContextMenuStrip.Items[0].PerformClick();
// Then
- TestHelper.AssertLogMessageIsGenerated(action, expectedMessage, 1);
+ TestHelper.AssertLogMessagesCount(action, 6);
Assert.IsNull(pipingData.Output);
mockRepository.VerifyAll();
}
Index: test/Plugins/Wti/Wti.Service.Test/PipingCalculationServiceTest.cs
===================================================================
diff -u -rcf31268a74ee4557e6ef9ccdcde7e5c48540ab8b -r1689206627a4343d07fafcebb0a931b7a0e9e2d2
--- test/Plugins/Wti/Wti.Service.Test/PipingCalculationServiceTest.cs (.../PipingCalculationServiceTest.cs) (revision cf31268a74ee4557e6ef9ccdcde7e5c48540ab8b)
+++ test/Plugins/Wti/Wti.Service.Test/PipingCalculationServiceTest.cs (.../PipingCalculationServiceTest.cs) (revision 1689206627a4343d07fafcebb0a931b7a0e9e2d2)
@@ -36,23 +36,23 @@
public void Calculate_ValidPipingData_ShouldSetOutput()
{
// Call
- PipingCalculationService.Calculate(validPipingData);
+ PipingCalculationService.PerfromValidatedCalculation(validPipingData);
// Assert
Assert.NotNull(validPipingData.Output);
}
[Test]
- public void Calculate_InValidPipingData_ThrowsException()
+ public void Calculate_InValidPipingData_ReturnsErrorMessages()
{
// Setup
var invalidPipingData = new PipingData();
// Call
- TestDelegate testDelegate = () => PipingCalculationService.Calculate(invalidPipingData);
+ var results = PipingCalculationService.PerfromValidatedCalculation(invalidPipingData);
// Assert
- Assert.Throws(testDelegate);
+ CollectionAssert.IsNotEmpty(results);
}
}
}
\ No newline at end of file