Index: test/Plugins/Wti/Wti.Service.Test/PipingCalculationServiceTest.cs =================================================================== diff -u -r1689206627a4343d07fafcebb0a931b7a0e9e2d2 -r49b7320ad56bfa60788e8792b79dd537318f68ff --- test/Plugins/Wti/Wti.Service.Test/PipingCalculationServiceTest.cs (.../PipingCalculationServiceTest.cs) (revision 1689206627a4343d07fafcebb0a931b7a0e9e2d2) +++ test/Plugins/Wti/Wti.Service.Test/PipingCalculationServiceTest.cs (.../PipingCalculationServiceTest.cs) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff) @@ -1,58 +1,104 @@ using NUnit.Framework; -using Wti.Calculation.Piping; +using Rhino.Mocks; +using Wti.Calculation.Test.Piping.Stub; using Wti.Data; namespace Wti.Service.Test { public class PipingCalculationServiceTest { - private readonly PipingData validPipingData = new PipingData + private PipingData validPipingData; + + [SetUp] + public void SetUp() { - AssessmentLevel = 1.0, - BeddingAngle = 1.0, - CriticalHeaveGradient = 1.0, - DampingFactorExit = 1.0, - DarcyPermeability = 1.0, - Diameter70 = 1.0, - ExitPointXCoordinate = 1.0, - Gravity = 1.0, - MeanDiameter70 = 1.0, - PiezometricHeadExit = 1.0, - PiezometricHeadPolder = 1.0, - PhreaticLevelExit = 2.0, - SandParticlesVolumicWeight = 1.0, - SeepageLength = 1.0, - SellmeijerModelFactor = 1.0, - SellmeijerReductionFactor = 1.0, - ThicknessAquiferLayer = 1.0, - ThicknessCoverageLayer = 1.0, - UpliftModelFactor = 1.0, - WaterKinematicViscosity = 1.0, - WaterVolumetricWeight = 1.0, - WhitesDragCoefficient = 1.0 - }; + validPipingData = new PipingData + { + AssessmentLevel = 1.0, + BeddingAngle = 1.0, + CriticalHeaveGradient = 1.0, + DampingFactorExit = 1.0, + DarcyPermeability = 1.0, + Diameter70 = 1.0, + ExitPointXCoordinate = 1.0, + Gravity = 1.0, + MeanDiameter70 = 1.0, + PiezometricHeadExit = 1.0, + PiezometricHeadPolder = 1.0, + PhreaticLevelExit = 2.0, + SandParticlesVolumicWeight = 1.0, + SeepageLength = 1.0, + SellmeijerModelFactor = 1.0, + SellmeijerReductionFactor = 1.0, + ThicknessAquiferLayer = 1.0, + ThicknessCoverageLayer = 1.0, + UpliftModelFactor = 1.0, + WaterKinematicViscosity = 1.0, + WaterVolumetricWeight = 1.0, + WhitesDragCoefficient = 1.0 + }; + } [Test] - public void Calculate_ValidPipingData_ShouldSetOutput() + public void PerfromValidatedCalculation_ValidPipingDataNoOutput_ShouldSetOutput() { + // Precondition + Assert.IsNull(validPipingData.Output); + // Call - PipingCalculationService.PerfromValidatedCalculation(validPipingData); + var result = PipingCalculationService.PerfromValidatedCalculation(validPipingData); // Assert + Assert.AreEqual(PipingCalculationResult.Successful, result); Assert.NotNull(validPipingData.Output); } [Test] - public void Calculate_InValidPipingData_ReturnsErrorMessages() + public void PerfromValidatedCalculation_ValidPipingDataWithOutput_ShouldChangeOutput() { // Setup - var invalidPipingData = new PipingData(); + var output = new TestPipingOutput(); + validPipingData.Output = output; // Call - var results = PipingCalculationService.PerfromValidatedCalculation(invalidPipingData); + var result = PipingCalculationService.PerfromValidatedCalculation(validPipingData); + + // Assert + Assert.AreEqual(PipingCalculationResult.Successful, result); + Assert.AreNotSame(output, validPipingData.Output); + } + + [Test] + public void PerfromValidatedCalculation_InValidPipingDataWithOutput_ReturnsFalseNoOutputChange() + { + // Setup + var output = new TestPipingOutput(); + var invalidPipingData = new PipingData + { + Output = output + }; + + // Call + var result = PipingCalculationService.PerfromValidatedCalculation(invalidPipingData); // Assert - CollectionAssert.IsNotEmpty(results); + Assert.AreEqual(PipingCalculationResult.ValidationErrors, result); + Assert.AreSame(output, invalidPipingData.Output); } + + [Test] + public void PerformValidatedCalculation_Diameter70AndAquiferPermeabilityZero_CalculationErrorOutputNull() + { + // Setup + validPipingData.Diameter70 = 0; + validPipingData.DarcyPermeability = 0; + + // Call + var result = PipingCalculationService.PerfromValidatedCalculation(validPipingData); + + // Assert + Assert.AreEqual(PipingCalculationResult.CalculationErrors, result); + Assert.Null(validPipingData.Output); + } } } \ No newline at end of file