Index: Wti.Calculation.TestUtil/TestPipingOutput.cs
===================================================================
diff -u
--- Wti.Calculation.TestUtil/TestPipingOutput.cs (revision 0)
+++ Wti.Calculation.TestUtil/TestPipingOutput.cs (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -0,0 +1,9 @@
+using Wti.Data;
+
+namespace Wti.Calculation.Test.Piping.Stub
+{
+ public class TestPipingOutput : PipingOutput
+ {
+ public TestPipingOutput() : base(0, 0, 0, 0, 0, 0) {}
+ }
+}
\ No newline at end of file
Index: Wti.Calculation.TestUtil/Wti.Calculation.TestUtil.csproj
===================================================================
diff -u -ra3b93c36c2051bd6112327bff0d836ae7883737d -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- Wti.Calculation.TestUtil/Wti.Calculation.TestUtil.csproj (.../Wti.Calculation.TestUtil.csproj) (revision a3b93c36c2051bd6112327bff0d836ae7883737d)
+++ Wti.Calculation.TestUtil/Wti.Calculation.TestUtil.csproj (.../Wti.Calculation.TestUtil.csproj) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -41,6 +41,7 @@
+
Index: src/Plugins/Wti/Wti.Data/PipingFailureMechanism.cs
===================================================================
diff -u -r325410362b50750d3c291d19c1526799c9b1c583 -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- src/Plugins/Wti/Wti.Data/PipingFailureMechanism.cs (.../PipingFailureMechanism.cs) (revision 325410362b50750d3c291d19c1526799c9b1c583)
+++ src/Plugins/Wti/Wti.Data/PipingFailureMechanism.cs (.../PipingFailureMechanism.cs) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -1,13 +1,16 @@
using System.Collections.Generic;
using System.Linq;
+using DelftTools.Shell.Core;
namespace Wti.Data
{
///
/// Model for performing piping calculations.
///
- public class PipingFailureMechanism
+ public class PipingFailureMechanism : IObservable
{
+ private readonly IList observers = new List();
+
///
/// Initializes a new instance of the class.
///
@@ -26,5 +29,23 @@
/// Gets the input data which contains input and output of a piping calculation
///
public PipingData PipingData { get; set; }
+
+ public void Attach(IObserver observer)
+ {
+ observers.Add(observer);
+ }
+
+ public void Detach(IObserver observer)
+ {
+ observers.Remove(observer);
+ }
+
+ public void NotifyObservers()
+ {
+ foreach (var observer in observers)
+ {
+ observer.UpdateObserver();
+ }
+ }
}
}
\ No newline at end of file
Index: src/Plugins/Wti/Wti.Forms/NodePresenters/PipingContextMenuStrip.cs
===================================================================
diff -u -r325410362b50750d3c291d19c1526799c9b1c583 -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- src/Plugins/Wti/Wti.Forms/NodePresenters/PipingContextMenuStrip.cs (.../PipingContextMenuStrip.cs) (revision 325410362b50750d3c291d19c1526799c9b1c583)
+++ src/Plugins/Wti/Wti.Forms/NodePresenters/PipingContextMenuStrip.cs (.../PipingContextMenuStrip.cs) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -18,15 +18,25 @@
public Action OnCalculationClick { get; set; }
///
+ /// Gets or sets the which is performed when the validate item on a is called.
+ ///
+ public Action OnValidationClick { get; set; }
+
+ ///
/// Creates a new instance of and assigns the to it.
///
///
public PipingContextMenuStrip(PipingData pipingData)
{
this.pipingData = pipingData;
+
+ var validateItem = new ToolStripMenuItem(Resources.PipingDataContextMenuValidate);
+ validateItem.Click += ValidateItemClick;
+
var calculateItem = new ToolStripMenuItem(Resources.PipingDataContextMenuCalculate);
calculateItem.Click += CalculateItemClick;
- Items.Add(calculateItem);
+
+ Items.AddRange(new ToolStripItem[] { validateItem, calculateItem });
}
private void CalculateItemClick(object sender, EventArgs e)
@@ -36,5 +46,13 @@
OnCalculationClick(pipingData);
}
}
+
+ private void ValidateItemClick(object sender, EventArgs e)
+ {
+ if (OnValidationClick != null)
+ {
+ OnValidationClick(pipingData);
+ }
+ }
}
}
\ No newline at end of file
Index: src/Plugins/Wti/Wti.Forms/NodePresenters/PipingDataNodePresenter.cs
===================================================================
diff -u -r1689206627a4343d07fafcebb0a931b7a0e9e2d2 -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- src/Plugins/Wti/Wti.Forms/NodePresenters/PipingDataNodePresenter.cs (.../PipingDataNodePresenter.cs) (revision 1689206627a4343d07fafcebb0a931b7a0e9e2d2)
+++ src/Plugins/Wti/Wti.Forms/NodePresenters/PipingDataNodePresenter.cs (.../PipingDataNodePresenter.cs) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -5,7 +5,6 @@
using DelftTools.Controls.Swf;
using DelftTools.Utils.Collections;
using log4net;
-using Wti.Calculation.Piping;
using Wti.Data;
using Wti.Forms.Properties;
using Wti.Service;
@@ -78,25 +77,15 @@
public IMenuItem GetContextMenu(ITreeNode sender, object nodeData)
{
- var contextMenu = new PipingContextMenuStrip((PipingData)nodeData);
+ var contextMenu = new PipingContextMenuStrip((PipingData) nodeData);
var contextMenuAdapter = new MenuItemContextMenuStripAdapter(contextMenu);
contextMenu.OnCalculationClick += PerformPipingCalculation;
+ contextMenu.OnValidationClick += PerformPipingValidation;
return contextMenuAdapter;
}
- private void PerformPipingCalculation(PipingData pipingData)
- {
- var calculationErrorMessages = PipingCalculationService.PerfromValidatedCalculation(pipingData);
-
- foreach(var errorMessage in calculationErrorMessages)
- {
- LogManager.GetLogger(typeof(PipingData)).Error(String.Format(Resources.ErrorInPipingCalculation_0, errorMessage));
- }
- pipingData.NotifyObservers();
- }
-
public void OnPropertyChanged(object sender, ITreeNode node, PropertyChangedEventArgs e) {}
public void OnCollectionChanged(object sender, NotifyCollectionChangingEventArgs e) {}
@@ -113,5 +102,16 @@
failureMechanism.PipingData = null;
return true;
}
+
+ private void PerformPipingValidation(PipingData pipingData)
+ {
+ PipingCalculationService.Validate(pipingData);
+ }
+
+ private void PerformPipingCalculation(PipingData pipingData)
+ {
+ PipingCalculationService.PerfromValidatedCalculation(pipingData);
+ pipingData.NotifyObservers();
+ }
}
}
\ No newline at end of file
Index: src/Plugins/Wti/Wti.Forms/NodePresenters/PipingOutputNodePresenter.cs
===================================================================
diff -u -r5fc71a385897af92ccb092f2f969b5709afab85a -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- src/Plugins/Wti/Wti.Forms/NodePresenters/PipingOutputNodePresenter.cs (.../PipingOutputNodePresenter.cs) (revision 5fc71a385897af92ccb092f2f969b5709afab85a)
+++ src/Plugins/Wti/Wti.Forms/NodePresenters/PipingOutputNodePresenter.cs (.../PipingOutputNodePresenter.cs) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -75,7 +75,7 @@
public bool CanRemove(object parentNodeData, object nodeData)
{
- return true;
+ return false;
}
public bool RemoveNodeData(object parentNodeData, object nodeData)
Index: src/Plugins/Wti/Wti.Forms/Properties/Resources.Designer.cs
===================================================================
diff -u -rbb61ed227cf79e994b84019096e4297b2fbd4527 -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- src/Plugins/Wti/Wti.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision bb61ed227cf79e994b84019096e4297b2fbd4527)
+++ src/Plugins/Wti/Wti.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -79,15 +79,6 @@
}
///
- /// Looks up a localized string similar to Piping berekening niet gelukt: {0}.
- ///
- public static string ErrorInPipingCalculation_0 {
- get {
- return ResourceManager.GetString("ErrorInPipingCalculation_0", resourceCulture);
- }
- }
-
- ///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
public static System.Drawing.Bitmap FolderIcon {
@@ -171,6 +162,15 @@
}
///
+ /// Looks up a localized string similar to Valideren.
+ ///
+ public static string PipingDataContextMenuValidate {
+ get {
+ return ResourceManager.GetString("PipingDataContextMenuValidate", resourceCulture);
+ }
+ }
+
+ ///
/// Looks up a localized string similar to Kritiek verhang met betrekking tot heave..
///
public static string PipingDataCriticalHeaveGradientDescription {
Index: src/Plugins/Wti/Wti.Forms/Properties/Resources.resx
===================================================================
diff -u -rbb61ed227cf79e994b84019096e4297b2fbd4527 -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- src/Plugins/Wti/Wti.Forms/Properties/Resources.resx (.../Resources.resx) (revision bb61ed227cf79e994b84019096e4297b2fbd4527)
+++ src/Plugins/Wti/Wti.Forms/Properties/Resources.resx (.../Resources.resx) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -334,8 +334,8 @@
Voeg piping faalmechanisme toe
-
- Piping berekening niet gelukt: {0}
+
+ Valideren
..\Resources\table-import.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Index: src/Plugins/Wti/Wti.Service/DateTimeService.cs
===================================================================
diff -u
--- src/Plugins/Wti/Wti.Service/DateTimeService.cs (revision 0)
+++ src/Plugins/Wti/Wti.Service/DateTimeService.cs (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -0,0 +1,21 @@
+using System;
+
+namespace Wti.Service
+{
+ ///
+ /// The class is responsible for providing general operations.
+ ///
+ public static class DateTimeService
+ {
+ ///
+ /// Gets the current time in HH:mm:ss format.
+ ///
+ public static String CurrentTimeAsString
+ {
+ get
+ {
+ return DateTime.Now.ToString("HH:mm:ss");
+ }
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Wti/Wti.Service/PipingCalculationResult.cs
===================================================================
diff -u
--- src/Plugins/Wti/Wti.Service/PipingCalculationResult.cs (revision 0)
+++ src/Plugins/Wti/Wti.Service/PipingCalculationResult.cs (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -0,0 +1,23 @@
+namespace Wti.Service
+{
+ ///
+ /// Status result from a calculation or validation performed by the .
+ ///
+ public enum PipingCalculationResult
+ {
+ ///
+ /// Value which is returned when no calculation or validation errors occurred.
+ ///
+ Successful,
+
+ ///
+ /// Value which is returned when the validation routine resulted in validation errors.
+ ///
+ ValidationErrors,
+
+ ///
+ /// Value which is returned when the calculation routine encountered problems.
+ ///
+ CalculationErrors
+ }
+}
\ No newline at end of file
Index: src/Plugins/Wti/Wti.Service/PipingCalculationService.cs
===================================================================
diff -u -r1689206627a4343d07fafcebb0a931b7a0e9e2d2 -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- src/Plugins/Wti/Wti.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 1689206627a4343d07fafcebb0a931b7a0e9e2d2)
+++ src/Plugins/Wti/Wti.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -1,66 +1,101 @@
-using System.Collections.Generic;
+using System;
+using log4net;
using Wti.Calculation.Piping;
using Wti.Data;
+using Wti.Service.Properties;
namespace Wti.Service
{
///
- /// This class controls the and its PipingDataNodePresenter.
- /// Interactions from the PipingDataNodePresenter are handles by this class.
+ /// This class is responsible for invoking operations on the . Error and status information is
+ /// logged during the execution of the operation. At the end of an operation, a is returned,
+ /// representing the result of the operation.
///
public static class PipingCalculationService
{
+ private static readonly ILog PipingDataLogger = LogManager.GetLogger(typeof(PipingData));
+
///
/// Performs a piping calculation based on the supplied and sets
- /// to the if the calculation was successful.
+ /// to the if the calculation was successful. Error and status information is logged during
+ /// the execution of the operation.
///
/// The to base the input for the calculation upon.
- /// 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)
+ /// If contains validation errors, then is returned.
+ /// If problems were encountered during the calculation, is returned.
+ /// Otherwise, is returned.
+ public static PipingCalculationResult PerfromValidatedCalculation(PipingData pipingData)
{
- var validationResults = Validate(pipingData);
- if (validationResults.Count > 0)
+ PipingCalculationResult validationResult = Validate(pipingData);
+
+ if (validationResult == PipingCalculationResult.Successful)
{
ClearOutput(pipingData);
- return validationResults;
+ return Calculate(pipingData);
}
- try
+
+ return validationResult;
+ }
+
+ ///
+ /// Performs validation over the values on the given . Error and status information is logged during
+ /// the execution of the operation.
+ ///
+ /// The for which to validate the values.
+ /// If contains validation errors, then is returned.
+ /// Otherwise, is returned.
+ public static PipingCalculationResult Validate(PipingData pipingData)
+ {
+ PipingDataLogger.Info(String.Format(Resources.ValidationStarted_0, DateTimeService.CurrentTimeAsString));
+
+ var validationResults = new PipingCalculation(CreateInputFromData(pipingData)).Validate();
+ LogMessagesAsError(validationResults.ToArray());
+
+ PipingDataLogger.Info(String.Format(Resources.ValidationEnded_0, DateTimeService.CurrentTimeAsString));
+
+ return validationResults.Count > 0 ? PipingCalculationResult.ValidationErrors : PipingCalculationResult.Successful;
+ }
+
+ private static void LogMessagesAsError(params string[] errorMessages)
+ {
+ foreach (var errorMessage in errorMessages)
{
- Calculate(pipingData);
+ PipingDataLogger.Error(string.Format(Resources.ErrorInPipingCalculation_0, errorMessage));
}
- 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)
+ private static PipingCalculationResult Calculate(PipingData pipingData)
{
- var input = CreateInputFromData(pipingData);
- var pipingCalculation = new PipingCalculation(input);
+ PipingDataLogger.Info(String.Format(Resources.CalculationStarted_0, DateTimeService.CurrentTimeAsString));
- var pipingResult = pipingCalculation.Calculate();
+ try
+ {
+ var pipingResult = new PipingCalculation(CreateInputFromData(pipingData)).Calculate();
- pipingData.Output = new PipingOutput(pipingResult.UpliftZValue,
- pipingResult.UpliftFactorOfSafety,
- pipingResult.HeaveZValue, pipingResult.HeaveFactorOfSafety, pipingResult.SellmeijerZValue, pipingResult.SellmeijerFactorOfSafety);
+ pipingData.Output = new PipingOutput(pipingResult.UpliftZValue,
+ pipingResult.UpliftFactorOfSafety,
+ pipingResult.HeaveZValue,
+ pipingResult.HeaveFactorOfSafety,
+ pipingResult.SellmeijerZValue,
+ pipingResult.SellmeijerFactorOfSafety);
+ }
+ catch (PipingCalculationException e)
+ {
+ LogMessagesAsError(e.Message);
+ return PipingCalculationResult.CalculationErrors;
+ }
+ finally
+ {
+ PipingDataLogger.Info(String.Format(Resources.CalculationEnded_0, DateTimeService.CurrentTimeAsString));
+ }
+ return PipingCalculationResult.Successful;
}
- public static List Validate(PipingData pipingData)
- {
- var input = CreateInputFromData(pipingData);
-
- return new PipingCalculation(input).Validate();
- }
-
private static PipingCalculationInput CreateInputFromData(PipingData pipingData)
{
return new PipingCalculationInput(
Fisheye: Tag 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Service/Properties/Resources.Designer.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Service/Properties/Resources.resx'.
Fisheye: No comparison available. Pass `N' to diff?
Index: src/Plugins/Wti/Wti.Service/Wti.Service.csproj
===================================================================
diff -u -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- src/Plugins/Wti/Wti.Service/Wti.Service.csproj (.../Wti.Service.csproj) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9)
+++ src/Plugins/Wti/Wti.Service/Wti.Service.csproj (.../Wti.Service.csproj) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -53,8 +53,15 @@
Properties\GlobalAssembly.cs
+
+
+
+ True
+ True
+ Resources.resx
+
@@ -82,6 +89,12 @@
Wti.Data
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
Index: test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingDataNodePresenterTest.cs
===================================================================
diff -u -r1689206627a4343d07fafcebb0a931b7a0e9e2d2 -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingDataNodePresenterTest.cs (.../PipingDataNodePresenterTest.cs) (revision 1689206627a4343d07fafcebb0a931b7a0e9e2d2)
+++ test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingDataNodePresenterTest.cs (.../PipingDataNodePresenterTest.cs) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -271,8 +271,9 @@
// Assert
Assert.NotNull(contextMenu);
- Assert.AreEqual(1, contextMenu.ContextMenuStrip.Items.Count);
- Assert.AreEqual(WtiFormsResources.PipingDataContextMenuCalculate, contextMenu.ContextMenuStrip.Items[0].Text);
+ Assert.AreEqual(2, contextMenu.ContextMenuStrip.Items.Count);
+ Assert.AreEqual(WtiFormsResources.PipingDataContextMenuCalculate, contextMenu.ContextMenuStrip.Items[1].Text);
+ Assert.AreEqual(WtiFormsResources.PipingDataContextMenuValidate, contextMenu.ContextMenuStrip.Items[0].Text);
Assert.IsInstanceOf(contextMenu.ContextMenuStrip);
mocks.VerifyAll(); // Expect no calls on arguments
}
@@ -356,6 +357,11 @@
public void GivenInvalidPipingData_WhenCalculatingFromContextMenu_ThenPipingDataNotifiesObserversAndLogMessageAdded()
{
// Given
+ var expectedValidationMessageCount = 6;
+ var expectedStatusMessageCount = 2;
+ var expectedLogMessageCount = expectedValidationMessageCount + expectedStatusMessageCount;
+
+ var calculateContextMenuItemIndex = 1;
var pipingData = new PipingData();
var observer = mockRepository.StrictMock();
var nodePresenter = new PipingDataNodePresenter();
@@ -367,18 +373,50 @@
var contextMenuAdapter = nodePresenter.GetContextMenu(null, pipingData) as MenuItemContextMenuStripAdapter;
// When
- Action action = () => contextMenuAdapter.ContextMenuStrip.Items[0].PerformClick();
+ Action action = () => contextMenuAdapter.ContextMenuStrip.Items[calculateContextMenuItemIndex].PerformClick();
// Then
- TestHelper.AssertLogMessagesCount(action, 6);
+ TestHelper.AssertLogMessagesCount(action, expectedLogMessageCount);
Assert.IsNull(pipingData.Output);
mockRepository.VerifyAll();
}
[Test]
+ public void GivenInvalidPipingData_WhenValidatingFromContextMenu_ThenLogMessageAddedAndNoNotifyObserver()
+ {
+ // Given
+ var expectedValidationMessageCount = 6;
+ var expectedStatusMessageCount = 2;
+ var expectedLogMessageCount = expectedValidationMessageCount + expectedStatusMessageCount;
+
+ var validateContextMenuItemIndex = 0;
+ var pipingData = new PipingData();
+ var observer = mockRepository.StrictMock();
+ var nodePresenter = new PipingDataNodePresenter();
+ observer.Expect(o => o.UpdateObserver()).Repeat.Never();
+ pipingData.Attach(observer);
+
+ mockRepository.ReplayAll();
+
+ var contextMenuAdapter = nodePresenter.GetContextMenu(null, pipingData) as MenuItemContextMenuStripAdapter;
+
+ // When
+ Action action = () => contextMenuAdapter.ContextMenuStrip.Items[validateContextMenuItemIndex].PerformClick();
+
+ // Then
+ TestHelper.AssertLogMessagesCount(action, expectedLogMessageCount);
+ mockRepository.VerifyAll();
+ }
+
+ [Test]
public void GivenValidPipingData_WhenCalculatingFromContextMenu_ThenPipingDataNotifiesObservers()
{
// Given
+ var expectedCalculationStatusMessageCount = 2;
+ var expectedValidationStatusMessageCount = 2;
+ var expectedLogMessageCount = expectedCalculationStatusMessageCount + expectedValidationStatusMessageCount;
+
+ var calculateContextMenuItemIndex = 1;
var pipingData = new PipingData();
var validPipingInput = new TestPipingInput();
pipingData.AssessmentLevel = validPipingInput.AssessmentLevel;
@@ -414,10 +452,10 @@
var contextMenuAdapter = nodePresenter.GetContextMenu(null, pipingData) as MenuItemContextMenuStripAdapter;
// When
- Action action = () => contextMenuAdapter.ContextMenuStrip.Items[0].PerformClick();
+ Action action = () => contextMenuAdapter.ContextMenuStrip.Items[calculateContextMenuItemIndex].PerformClick();
// Then
- TestHelper.AssertLogMessagesCount(action, 0);
+ TestHelper.AssertLogMessagesCount(action, expectedLogMessageCount);
Assert.IsNotNull(pipingData.Output);
mockRepository.VerifyAll();
}
Index: test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingOutputNodePresenterTest.cs
===================================================================
diff -u -rad18963162aaa0d4f16d583f2bd8b51480e1e1ba -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingOutputNodePresenterTest.cs (.../PipingOutputNodePresenterTest.cs) (revision ad18963162aaa0d4f16d583f2bd8b51480e1e1ba)
+++ test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingOutputNodePresenterTest.cs (.../PipingOutputNodePresenterTest.cs) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -4,6 +4,7 @@
using DelftTools.Utils.Collections;
using NUnit.Framework;
using Rhino.Mocks;
+using Wti.Calculation.Test.Piping.Stub;
using Wti.Data;
using Wti.Forms.NodePresenters;
using Wti.Forms.Test.Helper;
@@ -273,7 +274,7 @@
}
[Test]
- public void CanRemove_Always_ReturnTrue()
+ public void CanRemove_Always_ReturnFalse()
{
// Setup
var mocks = new MockRepository();
@@ -287,27 +288,21 @@
bool removalAllowed = nodePresenter.CanRemove(dataMock, nodeMock);
// Assert
- Assert.IsTrue(removalAllowed);
+ Assert.IsFalse(removalAllowed);
mocks.VerifyAll(); // Expect no calls on arguments
}
[Test]
- public void RemoveNodeData_ProjectWithPipingData_ReturnFalse()
+ public void RemoveNodeData_Always_ReturnFalse()
{
// Setup
- var pipingData = new PipingData();
-
- var project = new Project();
- project.Items.Add(pipingData);
-
var nodePresenter = new PipingOutputNodePresenter();
// Call
- bool removalSuccesful = nodePresenter.RemoveNodeData(project, pipingData);
+ bool removalSuccesful = nodePresenter.RemoveNodeData(null, null);
// Assert
Assert.IsFalse(removalSuccesful);
- CollectionAssert.Contains(project.Items, pipingData);
}
}
}
\ No newline at end of file
Index: test/Plugins/Wti/Wti.Forms.Test/PipingContextMenuStripTest.cs
===================================================================
diff -u -ra3b93c36c2051bd6112327bff0d836ae7883737d -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- test/Plugins/Wti/Wti.Forms.Test/PipingContextMenuStripTest.cs (.../PipingContextMenuStripTest.cs) (revision a3b93c36c2051bd6112327bff0d836ae7883737d)
+++ test/Plugins/Wti/Wti.Forms.Test/PipingContextMenuStripTest.cs (.../PipingContextMenuStripTest.cs) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -6,26 +6,43 @@
public class PipingContextMenuStripTest
{
[Test]
- public void Constructor_Always_OneMenuItemIsAdded()
+ public void Constructor_Always_ValidateAndCalculateItemsAreAdded()
{
var actual = new PipingContextMenuStrip(null);
- Assert.AreEqual(1, actual.Items.Count);
+ Assert.AreEqual(2, actual.Items.Count);
CollectionAssert.AllItemsAreNotNull(actual.Items);
}
[Test]
- public void OnClick_Always_NoExceptions()
+ public void OnClick_CalculateItemAlways_NoExceptions()
{
var pipingContextMenu = new PipingContextMenuStrip(null);
+ pipingContextMenu.Items[1].PerformClick();
+ }
+
+ [Test]
+ public void OnClick_ValidateItemAlways_NoExceptions()
+ {
+ var pipingContextMenu = new PipingContextMenuStrip(null);
pipingContextMenu.Items[0].PerformClick();
}
[Test]
- public void OnClick_HandlerActionDefined_ActionIsExecuted()
+ public void OnClick_CalculateItemOnCalculateHandlerActionDefined_ActionIsExecuted()
{
var executed = false;
var pipingContextMenu = new PipingContextMenuStrip(null);
pipingContextMenu.OnCalculationClick += p => executed = true;
+ pipingContextMenu.Items[1].PerformClick();
+ Assert.IsTrue(executed);
+ }
+
+ [Test]
+ public void OnClick_ValidateItemOnValidateHandlerActionDefined_ActionIsExecuted()
+ {
+ var executed = false;
+ var pipingContextMenu = new PipingContextMenuStrip(null);
+ pipingContextMenu.OnValidationClick += p => executed = true;
pipingContextMenu.Items[0].PerformClick();
Assert.IsTrue(executed);
}
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
Index: test/Plugins/Wti/Wti.Service.Test/Wti.Service.Test.csproj
===================================================================
diff -u -rbcf5bfda6fc2fca0b4229b9181df3d217fe1b33f -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- test/Plugins/Wti/Wti.Service.Test/Wti.Service.Test.csproj (.../Wti.Service.Test.csproj) (revision bcf5bfda6fc2fca0b4229b9181df3d217fe1b33f)
+++ test/Plugins/Wti/Wti.Service.Test/Wti.Service.Test.csproj (.../Wti.Service.Test.csproj) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -34,6 +34,9 @@
..\..\..\..\lib\nunit.framework.dll
+
+ ..\..\..\..\lib\Rhino.Mocks.dll
+
@@ -76,6 +79,10 @@
{7cd038e1-e111-4969-aced-22c5bd2974e1}
Wti.Forms
+
+ {27E0A5C9-3ABF-426A-A3DA-7D0B83A218C8}
+ Wti.Calculation.TestUtil
+