Index: Ringtoets/Demo/src/Ringtoets.Demo/Commands/AddNewDemoDikeAssessmentSectionCommand.cs
===================================================================
diff -u -rd121feba5299c86d7ac04a366ee869b163e43ec7 -red0b4ea830beb801bcc0e3eb5b28993001ed2981
--- Ringtoets/Demo/src/Ringtoets.Demo/Commands/AddNewDemoDikeAssessmentSectionCommand.cs (.../AddNewDemoDikeAssessmentSectionCommand.cs) (revision d121feba5299c86d7ac04a366ee869b163e43ec7)
+++ Ringtoets/Demo/src/Ringtoets.Demo/Commands/AddNewDemoDikeAssessmentSectionCommand.cs (.../AddNewDemoDikeAssessmentSectionCommand.cs) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -6,6 +6,7 @@
using Core.Common.Gui;
using Ringtoets.Integration.Data;
+using Ringtoets.Piping.Data;
using Ringtoets.Piping.Plugin.FileImporter;
namespace Ringtoets.Demo.Commands
@@ -60,7 +61,7 @@
surfaceLinesImporter.ImportItem(tempPath.FilePath, pipingFailureMechanism.SoilProfiles);
}
- var calculation = pipingFailureMechanism.Calculations.First();
+ var calculation = pipingFailureMechanism.Calculations.GetPipingCalculations().First();
calculation.InputParameters.SurfaceLine = pipingFailureMechanism.SurfaceLines.First(sl => sl.Name == "PK001_0001");
calculation.InputParameters.SoilProfile = pipingFailureMechanism.SoilProfiles.First(sl => sl.Name == "AD640M00_Segment_36005_1D2");
}
Index: Ringtoets/Demo/test/Ringtoets.Demo.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs
===================================================================
diff -u -rd121feba5299c86d7ac04a366ee869b163e43ec7 -red0b4ea830beb801bcc0e3eb5b28993001ed2981
--- Ringtoets/Demo/test/Ringtoets.Demo.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs (.../AddNewDemoDikeAssessmentSectionCommandTest.cs) (revision d121feba5299c86d7ac04a366ee869b163e43ec7)
+++ Ringtoets/Demo/test/Ringtoets.Demo.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs (.../AddNewDemoDikeAssessmentSectionCommandTest.cs) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -69,7 +69,7 @@
Assert.AreEqual(4, surfaceLines.Length);
Assert.AreEqual(1, demoAssessmentSection.PipingFailureMechanism.Calculations.Count);
- var calculation = demoAssessmentSection.PipingFailureMechanism.Calculations.First();
+ var calculation = demoAssessmentSection.PipingFailureMechanism.Calculations.GetPipingCalculations().First();
AssertCalculationAbleToCalculate(calculation);
mocks.VerifyAll();
}
Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItem.cs
===================================================================
diff -u
--- Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItem.cs (revision 0)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItem.cs (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -0,0 +1,20 @@
+using Core.Common.Base;
+
+namespace Ringtoets.Piping.Data
+{
+ ///
+ /// A piping calculation related object
+ ///
+ public interface IPipingCalculationItem : IObservable
+ {
+ ///
+ /// Gets or sets the name the user gave this this calculation object.
+ ///
+ string Name { get; set; }
+
+ ///
+ /// Gets a value indicating whether this calculation item contains piping calculation outputs.
+ ///
+ bool HasOutput { get; }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItemExtensions.cs
===================================================================
diff -u
--- Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItemExtensions.cs (revision 0)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItemExtensions.cs (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -0,0 +1,45 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Ringtoets.Piping.Data
+{
+ ///
+ /// Defines extension methods dealing with with instances.
+ ///
+ public static class IPipingCalculationItemExtensions
+ {
+ ///
+ /// Recursively enumerates across over the contents of the piping calculation item,
+ /// yielding the piping calculations found within the calculation item.
+ ///
+ /// The calculation item to be evaluated.
+ /// Returns all contained piping calculations as an enumerable result.
+ public static IEnumerable GetPipingCalculations(this IPipingCalculationItem pipingCalculationItem)
+ {
+ var calculation = pipingCalculationItem as PipingCalculation;
+ if (calculation != null)
+ {
+ yield return calculation;
+ }
+ var group = pipingCalculationItem as PipingCalculationGroup;
+ if (group != null)
+ {
+ foreach (PipingCalculation calculationInGroup in group.Children.GetPipingCalculations())
+ {
+ yield return calculationInGroup;
+ }
+ }
+ }
+
+ ///
+ /// Recursively enumerates across over the contents of all the piping calculation
+ /// items, yielding the piping calculations found within those calculation items.
+ ///
+ /// The calculation items to be evaluated.
+ /// Returns all contained piping calculations as an enumerable result.
+ public static IEnumerable GetPipingCalculations(this IEnumerable pipingCalculationItems)
+ {
+ return pipingCalculationItems.SelectMany(GetPipingCalculations);
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs
===================================================================
diff -u -rfb32e3411873a7b4c567792b9f335eba462e2702 -red0b4ea830beb801bcc0e3eb5b28993001ed2981
--- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs (.../PipingCalculation.cs) (revision fb32e3411873a7b4c567792b9f335eba462e2702)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs (.../PipingCalculation.cs) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -8,7 +8,7 @@
///
/// This class holds the information which can be made visible in the graphical interface of the application.
///
- public class PipingCalculation : Observable
+ public class PipingCalculation : Observable, IPipingCalculationItem
{
///
/// Constructs a new instance of with default values set for some of the parameters.
@@ -23,11 +23,6 @@
}
///
- /// Gets or sets the name the user gave this this calculation object.
- ///
- public string Name { get; set; }
-
- ///
/// Gets the user notes for this calculation.
///
public PlaceholderWithReadonlyName Comments { get; private set; }
@@ -38,6 +33,18 @@
public PipingInput InputParameters { get; private set; }
///
+ /// Gets or sets , which contains the results of a Piping calculation.
+ ///
+ public PipingOutput Output { get; set; }
+
+ ///
+ /// Gets the calculation report for the calculation that generated .
+ ///
+ public PlaceholderWithReadonlyName CalculationReport { get; private set; }
+
+ public string Name { get; set; }
+
+ ///
/// Gets a value indicating whether the has .
///
public bool HasOutput
@@ -49,16 +56,6 @@
}
///
- /// Gets or sets , which contains the results of a Piping calculation.
- ///
- public PipingOutput Output { get; set; }
-
- ///
- /// Gets the calculation report for the calculation that generated .
- ///
- public PlaceholderWithReadonlyName CalculationReport { get; private set; }
-
- ///
/// Clears the .
///
public void ClearOutput()
Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationGroup.cs
===================================================================
diff -u
--- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationGroup.cs (revision 0)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationGroup.cs (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -0,0 +1,37 @@
+using System.Collections.Generic;
+using System.Linq;
+
+using Core.Common.Base;
+
+namespace Ringtoets.Piping.Data
+{
+ ///
+ /// Class to allow grouping one or multiple instances.
+ ///
+ public class PipingCalculationGroup : Observable, IPipingCalculationItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public PipingCalculationGroup()
+ {
+ Name = "Berekening groep";
+ Children = new List();
+ }
+
+ ///
+ /// Gets the children that define this group.
+ ///
+ public ICollection Children { get; private set; }
+
+ public string Name { get; set; }
+
+ public bool HasOutput
+ {
+ get
+ {
+ return Children.Any(c => c.HasOutput);
+ }
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs
===================================================================
diff -u -rfb32e3411873a7b4c567792b9f335eba462e2702 -red0b4ea830beb801bcc0e3eb5b28993001ed2981
--- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs (.../PipingFailureMechanism.cs) (revision fb32e3411873a7b4c567792b9f335eba462e2702)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs (.../PipingFailureMechanism.cs) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+
using Core.Common.Base;
using Ringtoets.Common.Data;
@@ -22,7 +23,7 @@
SurfaceLines = new ObservableList();
SoilProfiles = new ObservableList();
BoundaryConditions = new InputPlaceholder(RingtoetsCommonDataResources.FailureMechanism_BoundaryConditions_DisplayName);
- Calculations = new List { new PipingCalculation() };
+ Calculations = new List { new PipingCalculation() };
AssessmentResult = new OutputPlaceholder(RingtoetsCommonDataResources.FailureMechanism_AssessmentResult_DisplayName);
}
@@ -49,7 +50,7 @@
///
/// Gets all available piping calculations.
///
- public ICollection Calculations { get; private set; }
+ public ICollection Calculations { get; private set; }
///
/// Gets the calculation results for this failure mechanism.
Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/Ringtoets.Piping.Data.csproj
===================================================================
diff -u -r6819809d62f8609b8311b58dfef1b6ddef5701fe -red0b4ea830beb801bcc0e3eb5b28993001ed2981
--- Ringtoets/Piping/src/Ringtoets.Piping.Data/Ringtoets.Piping.Data.csproj (.../Ringtoets.Piping.Data.csproj) (revision 6819809d62f8609b8311b58dfef1b6ddef5701fe)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Data/Ringtoets.Piping.Data.csproj (.../Ringtoets.Piping.Data.csproj) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -63,7 +63,10 @@
+
+
+
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs
===================================================================
diff -u -rfb32e3411873a7b4c567792b9f335eba462e2702 -red0b4ea830beb801bcc0e3eb5b28993001ed2981
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision fb32e3411873a7b4c567792b9f335eba462e2702)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -1,5 +1,6 @@
using System;
using System.Collections;
+using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
@@ -63,7 +64,7 @@
Resources.PipingFailureMechanism_Calculate_Tooltip,
RingtoetsCommonFormsResources.CalculateAllIcon, (o, args) =>
{
- foreach (var calc in failureMechanism.Calculations)
+ foreach (PipingCalculation calc in GetAllPipingCalculationsResursively(failureMechanism))
{
RunActivityAction(new PipingCalculationActivity(calc));
}
@@ -73,14 +74,14 @@
RingtoetsCommonFormsResources.Clear_all_output_ToolTip,
RingtoetsCommonFormsResources.ClearIcon, (o, args) =>
{
- foreach (var calc in failureMechanism.Calculations)
+ foreach (PipingCalculation calc in GetAllPipingCalculationsResursively(failureMechanism))
{
calc.ClearOutput();
calc.NotifyObservers();
}
});
- if (!failureMechanism.Calculations.Any(c => c.HasOutput))
+ if (!GetAllPipingCalculationsResursively(failureMechanism).Any(c => c.HasOutput))
{
clearOutputNode.Enabled = false;
clearOutputNode.ToolTipText = Resources.ClearOutput_No_calculation_with_output_to_clear;
@@ -101,5 +102,10 @@
{
yield return failureMechanism.AssessmentResult;
}
+
+ private static IEnumerable GetAllPipingCalculationsResursively(PipingFailureMechanism failureMechanism)
+ {
+ return failureMechanism.Calculations.GetPipingCalculations().ToArray();
+ }
}
}
\ No newline at end of file
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PresentationObjects/PipingCalculationsTreeFolder.cs
===================================================================
diff -u -rfb32e3411873a7b4c567792b9f335eba462e2702 -red0b4ea830beb801bcc0e3eb5b28993001ed2981
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PresentationObjects/PipingCalculationsTreeFolder.cs (.../PipingCalculationsTreeFolder.cs) (revision fb32e3411873a7b4c567792b9f335eba462e2702)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PresentationObjects/PipingCalculationsTreeFolder.cs (.../PipingCalculationsTreeFolder.cs) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Linq;
+using System.Collections;
using Ringtoets.Common.Forms.PresentationObjects;
using Ringtoets.Piping.Data;
@@ -24,14 +23,25 @@
public PipingFailureMechanism ParentFailureMechanism { get; private set; }
- private static IEnumerable WrapCalculationsInPresentationObjects(PipingFailureMechanism failureMechanism)
+ private static IEnumerable WrapCalculationsInPresentationObjects(PipingFailureMechanism failureMechanism)
{
- return failureMechanism.Calculations.Select(calculation => new PipingCalculationContext
+ foreach (var calculationItem in failureMechanism.Calculations)
{
- WrappedPipingCalculation = calculation,
- AvailablePipingSurfaceLines = failureMechanism.SurfaceLines,
- AvailablePipingSoilProfiles = failureMechanism.SoilProfiles
- });
+ var pipingCalculation = calculationItem as PipingCalculation;
+ if (pipingCalculation != null)
+ {
+ yield return new PipingCalculationContext
+ {
+ WrappedPipingCalculation = pipingCalculation,
+ AvailablePipingSurfaceLines = failureMechanism.SurfaceLines,
+ AvailablePipingSoilProfiles = failureMechanism.SoilProfiles
+ };
+ }
+ else
+ {
+ yield return calculationItem;
+ }
+ }
}
}
}
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/IPipingCalculationItemExtensionsTest.cs
===================================================================
diff -u
--- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/IPipingCalculationItemExtensionsTest.cs (revision 0)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/IPipingCalculationItemExtensionsTest.cs (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -0,0 +1,182 @@
+using System.Collections.Generic;
+using System.Linq;
+
+using NUnit.Framework;
+
+namespace Ringtoets.Piping.Data.Test
+{
+ [TestFixture]
+ public class IPipingCalculationItemExtensionsTest
+ {
+ [Test]
+ public void GetPipingCalculations_FromPipingCalculation_ReturnThatCalculationInstance()
+ {
+ // Setup
+ IPipingCalculationItem calculation = new PipingCalculation();
+
+ // Call
+ IEnumerable result = calculation.GetPipingCalculations();
+
+ // Assert
+ CollectionAssert.AreEqual(new[]{calculation}, result);
+ }
+
+ [Test]
+ public void GetPipingCalculations_FromPipingCalculationGroupWithoutChildren_ReturnEmpty()
+ {
+ // Setup
+ IPipingCalculationItem groupWithoutChildren = new PipingCalculationGroup();
+
+ // Call
+ IEnumerable result = groupWithoutChildren.GetPipingCalculations();
+
+ // Assert
+ CollectionAssert.IsEmpty(result);
+ }
+
+ [Test]
+ public void GetPipingCalculations_FromPipingCalculationGroupWithEmptyGroups_ReturnEmpty()
+ {
+ // Setup
+ var rootGroup = new PipingCalculationGroup();
+ rootGroup.Children.Add(new PipingCalculationGroup());
+ rootGroup.Children.Add(new PipingCalculationGroup());
+ rootGroup.Children.Add(new PipingCalculationGroup());
+
+ IPipingCalculationItem groupsWithoutChildren = rootGroup;
+
+ // Call
+ IEnumerable result = groupsWithoutChildren.GetPipingCalculations();
+
+ // Assert
+ CollectionAssert.IsEmpty(result);
+ }
+
+ [Test]
+ public void GetPipingCalculations_FromPipingCalculationGroupWithGroupsAndCalculations_ReturnAllCalculationsRecursiveslyInAnyOrder()
+ {
+ // Setup
+ var calculation1 = new PipingCalculation();
+ var calculation2 = new PipingCalculation();
+ var calculation3 = new PipingCalculation();
+ var calculation4 = new PipingCalculation();
+
+ var subsubGroup = new PipingCalculationGroup();
+ subsubGroup.Children.Add(calculation4);
+
+ var subgroup1 = new PipingCalculationGroup();
+ subgroup1.Children.Add(calculation2);
+ subgroup1.Children.Add(subsubGroup);
+
+ var subgroup2 = new PipingCalculationGroup();
+ subgroup2.Children.Add(calculation3);
+
+ var rootGroup = new PipingCalculationGroup();
+ rootGroup.Children.Add(subgroup1);
+ rootGroup.Children.Add(calculation1);
+ rootGroup.Children.Add(subgroup2);
+
+ IPipingCalculationItem groupWithoutChildren = rootGroup;
+
+ // Call
+ IEnumerable result = groupWithoutChildren.GetPipingCalculations();
+
+ // Assert
+ var itemsThatShouldBeFound = new[]
+ {
+ calculation1,
+ calculation2,
+ calculation3,
+ calculation4
+ };
+ CollectionAssert.AreEquivalent(itemsThatShouldBeFound, result);
+ }
+
+ [Test]
+ public void GetPipingCalculations_FromEmptyEnummerable_ReturnEmpty()
+ {
+ // Setup
+ IEnumerable emptyEnumerable = Enumerable.Empty();
+
+ // Call
+ IEnumerable result = emptyEnumerable.GetPipingCalculations();
+
+ // Assert
+ CollectionAssert.IsEmpty(result);
+ }
+
+ [Test]
+ public void GetPipingCalculations_FromArrayWithCalculations_ReturnAllThoseCalculationsInAnyOrder()
+ {
+ // Setup
+ var calculation1 = new PipingCalculation();
+ var calculation2 = new PipingCalculation();
+ IEnumerable calculationArray = new[] { calculation1, calculation2 };
+
+ // Call
+ IEnumerable result = calculationArray.GetPipingCalculations();
+
+ // Assert
+ CollectionAssert.AreEquivalent(calculationArray, result);
+ }
+
+ [Test]
+ public void GetPipingCalculations_FromArrayWithEmptyGroups_ReturnEmpty()
+ {
+ // Setup
+ var emptyGroup1 = new PipingCalculationGroup();
+ var emptyGroup2 = new PipingCalculationGroup();
+ IEnumerable emptyEnumerable = new[] { emptyGroup1, emptyGroup2 };
+
+ // Call
+ IEnumerable result = emptyEnumerable.GetPipingCalculations();
+
+ // Assert
+ CollectionAssert.IsEmpty(result);
+ }
+
+ [Test]
+ public void GetPipingCalculations_FromArrayWithMixedGroupsAndCalculations_ReturnAllCalculationsInAnyOrder()
+ {
+ // Setup
+ var rootcalculation = new PipingCalculation();
+ var calculation1 = new PipingCalculation();
+ var calculation2 = new PipingCalculation();
+ var calculation3 = new PipingCalculation();
+ var calculation4 = new PipingCalculation();
+
+ var subsubGroup = new PipingCalculationGroup();
+ subsubGroup.Children.Add(calculation4);
+
+ var subgroup1 = new PipingCalculationGroup();
+ subgroup1.Children.Add(calculation2);
+ subgroup1.Children.Add(subsubGroup);
+
+ var subgroup2 = new PipingCalculationGroup();
+ subgroup2.Children.Add(calculation3);
+
+ var rootGroup = new PipingCalculationGroup();
+ rootGroup.Children.Add(subgroup1);
+ rootGroup.Children.Add(calculation1);
+ rootGroup.Children.Add(subgroup2);
+
+ var emptyRootGroup = new PipingCalculationGroup();
+
+ IEnumerable mixedArray = new IPipingCalculationItem[] { emptyRootGroup, rootGroup, rootcalculation };
+
+ // Call
+ IEnumerable result = mixedArray.GetPipingCalculations();
+
+ // Assert
+ var expectedCalculationItems = new[]
+ {
+ rootcalculation,
+ calculation1,
+ calculation2,
+ calculation3,
+ calculation4
+ };
+ CollectionAssert.AreEquivalent(expectedCalculationItems, result);
+ }
+ }
+}
\ No newline at end of file
Fisheye: Tag ed0b4ea830beb801bcc0e3eb5b28993001ed2981 refers to a dead (removed) revision in file `Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationDataTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationGroupTest.cs
===================================================================
diff -u
--- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationGroupTest.cs (revision 0)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationGroupTest.cs (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -0,0 +1,152 @@
+using Core.Common.Base;
+
+using NUnit.Framework;
+
+using Rhino.Mocks;
+
+namespace Ringtoets.Piping.Data.Test
+{
+ [TestFixture]
+ public class PipingCalculationGroupTest
+ {
+ [Test]
+ public void DefaultConstructor_ExpectedValues()
+ {
+ // Call
+ var group = new PipingCalculationGroup();
+
+ // Assert
+ Assert.IsInstanceOf(group);
+ Assert.IsInstanceOf(group);
+ Assert.AreEqual("Berekening groep", group.Name);
+ Assert.IsFalse(group.HasOutput);
+ CollectionAssert.IsEmpty(group.Children);
+ }
+
+ [Test]
+ public void Children_AddPipingCalculation_CalculationAddedToCollection()
+ {
+ // Setup
+ var calculation = new PipingCalculation();
+
+ var group = new PipingCalculationGroup();
+
+ // Call
+ group.Children.Add(calculation);
+
+ // Assert
+ CollectionAssert.Contains(group.Children, calculation);
+ }
+
+ [Test]
+ public void Children_RemovePipingCalculation_CalculationRemovedFromCollection()
+ {
+ // Setup
+ var calculation = new PipingCalculation();
+
+ var group = new PipingCalculationGroup();
+ group.Children.Add(calculation);
+
+ // Call
+ group.Children.Remove(calculation);
+
+ // Assert
+ CollectionAssert.DoesNotContain(group.Children, calculation);
+ }
+
+ [Test]
+ public void Children_AddPipingCalculationGroup_GroupAddedToCollection()
+ {
+ // Setup
+ var childGroup = new PipingCalculationGroup();
+
+ var group = new PipingCalculationGroup();
+
+ // Call
+ group.Children.Add(childGroup);
+
+ // Assert
+ CollectionAssert.Contains(group.Children, childGroup);
+ }
+
+ [Test]
+ public void Children_RemovePipingCalculationGroup_GroupRemovedFromCollection()
+ {
+ // Setup
+ var childGroup = new PipingCalculationGroup();
+
+ var group = new PipingCalculationGroup();
+ group.Children.Add(childGroup);
+
+ // Call
+ group.Children.Remove(childGroup);
+
+ // Assert
+ CollectionAssert.DoesNotContain(group.Children, childGroup);
+ }
+
+ [Test]
+ public void HasOutput_NoChildren_ReturnFalse()
+ {
+ // Setup
+ var group = new PipingCalculationGroup();
+
+ // Precondition
+ CollectionAssert.IsEmpty(group.Children);
+
+ // Call
+ var hasOutput = group.HasOutput;
+
+ // Assert
+ Assert.IsFalse(hasOutput);
+ }
+
+ [Test]
+ public void HasOutput_HasChildWithOutput_ReturnTrue()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var childWithoutOutput = mocks.Stub();
+ childWithoutOutput.Stub(c => c.HasOutput).Return(false);
+
+ var childWithOutput = mocks.Stub();
+ childWithOutput.Stub(c => c.HasOutput).Return(true);
+ mocks.ReplayAll();
+
+ var group = new PipingCalculationGroup();
+ group.Children.Add(childWithoutOutput);
+ group.Children.Add(childWithOutput);
+
+ // Call
+ var hasOutput = group.HasOutput;
+
+ // Assert
+ Assert.IsTrue(hasOutput);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void HasOutput_HasChildrenAllWithoutOutput_ReturnFalse()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var child1WithoutOutput = mocks.Stub();
+ child1WithoutOutput.Stub(c => c.HasOutput).Return(false);
+
+ var child2WithoutOutput = mocks.Stub();
+ child2WithoutOutput.Stub(c => c.HasOutput).Return(false);
+ mocks.ReplayAll();
+
+ var group = new PipingCalculationGroup();
+ group.Children.Add(child1WithoutOutput);
+ group.Children.Add(child2WithoutOutput);
+
+ // Call
+ var hasOutput = group.HasOutput;
+
+ // Assert
+ Assert.IsFalse(hasOutput);
+ mocks.VerifyAll();
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationTest.cs
===================================================================
diff -u
--- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationTest.cs (revision 0)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationTest.cs (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -0,0 +1,168 @@
+using Core.Common.Base;
+using NUnit.Framework;
+using Rhino.Mocks;
+using Ringtoets.Piping.Calculation.TestUtil;
+
+namespace Ringtoets.Piping.Data.Test
+{
+ public class PipingCalculationTest
+ {
+ private MockRepository mockRepository;
+
+ [SetUp]
+ public void SetUp()
+ {
+ mockRepository = new MockRepository();
+ }
+
+ [Test]
+ public void DefaultConstructor_DefaultPropertyValuesAreSet()
+ {
+ // Call
+ var calculation = new PipingCalculation();
+
+ // Assert
+ Assert.IsInstanceOf(calculation);
+
+ Assert.AreEqual("Berekening", calculation.Name);
+
+ Assert.AreEqual("Commentaar", calculation.Comments.Name);
+ Assert.IsInstanceOf(calculation.InputParameters);
+
+ Assert.IsFalse(calculation.HasOutput);
+ Assert.IsNull(calculation.Output);
+ Assert.AreEqual("Berekeningsverslag", calculation.CalculationReport.Name);
+ }
+
+ [Test]
+ public void Notify_SingleListenerAttached_ListenerIsNotified()
+ {
+ // Setup
+ var observer = mockRepository.StrictMock();
+ observer.Expect(o => o.UpdateObserver());
+
+ mockRepository.ReplayAll();
+
+ var calculation = new PipingCalculation();
+
+ calculation.Attach(observer);
+
+ // Call & Assert
+ calculation.NotifyObservers();
+ }
+
+ [Test]
+ public void Notify_SingleListenerAttachedAndDeattached_ListenerIsNotNotified()
+ {
+ // Setup
+ var observer = mockRepository.StrictMock();
+ observer.Expect(o => o.UpdateObserver()).Repeat.Never();
+ mockRepository.ReplayAll();
+
+ var calculation = new PipingCalculation();
+
+ calculation.Attach(observer);
+ calculation.Detach(observer);
+
+ // Call & Assert
+ calculation.NotifyObservers();
+ }
+
+ [Test]
+ public void Notify_TwoListenersAttached_BothAreNotified()
+ {
+ // Setup
+ var observerA = mockRepository.StrictMock();
+ observerA.Expect(o => o.UpdateObserver());
+
+ var observerB = mockRepository.StrictMock();
+ observerB.Expect(o => o.UpdateObserver());
+
+ mockRepository.ReplayAll();
+
+ var calculation = new PipingCalculation();
+
+ calculation.Attach(observerA);
+ calculation.Attach(observerB);
+
+ // Call & Assert
+ calculation.NotifyObservers();
+ }
+
+ [Test]
+ public void Notify_TwoListenersAttachedOneDetached_InvokedOnce()
+ {
+ // Setup
+ var observerA = mockRepository.StrictMock();
+ observerA.Expect(o => o.UpdateObserver()).Repeat.Never();
+
+ var observerB = mockRepository.StrictMock();
+ observerB.Expect(o => o.UpdateObserver());
+
+ mockRepository.ReplayAll();
+
+ var calculation = new PipingCalculation();
+
+ calculation.Attach(observerA);
+ calculation.Attach(observerB);
+ calculation.Detach(observerA);
+
+ // Call & Assert
+ calculation.NotifyObservers();
+ }
+
+ [Test]
+ public void Detach_DetachNonAttachedObserver_ThrowsNoException()
+ {
+ // Setup
+ var observer = mockRepository.StrictMock();
+
+ var calculation = new PipingCalculation();
+
+ // Call & Assert
+ calculation.Detach(observer);
+ }
+
+ [Test]
+ public void ClearOutput_Always_SetsOutputToNull()
+ {
+ // Setup
+ var data = new PipingCalculation
+ {
+ Output = new TestPipingOutput()
+ };
+
+ // Call
+ data.ClearOutput();
+
+ // Assert
+ Assert.IsNull(data.Output);
+ }
+
+ [Test]
+ public void HasOutput_OutputNull_ReturnsFalse()
+ {
+ // Setup
+ var data = new PipingCalculation
+ {
+ Output = null
+ };
+
+ // Call & Assert
+ Assert.IsFalse(data.HasOutput);
+ }
+
+ [Test]
+ public void HasOutput_OutputSet_ReturnsTrue()
+ {
+ // Setup
+ var data = new PipingCalculation
+ {
+ Output = new TestPipingOutput()
+ };
+
+ // Call & Assert
+ Assert.IsTrue(data.HasOutput);
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs
===================================================================
diff -u -rc0e407c65daebe4f446f9414367593eff80af1b2 -red0b4ea830beb801bcc0e3eb5b28993001ed2981
--- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs (.../PipingFailureMechanismTest.cs) (revision c0e407c65daebe4f446f9414367593eff80af1b2)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs (.../PipingFailureMechanismTest.cs) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -1,4 +1,6 @@
-using Core.Common.Base;
+using System.Collections.Generic;
+
+using Core.Common.Base;
using NUnit.Framework;
using Rhino.Mocks;
@@ -127,5 +129,67 @@
// Call & Assert
pipingFailureMechanism.Detach(observer);
}
+
+ [Test]
+ public void Calculations_AddPipingCalculation_ItemIsAddedToCollection()
+ {
+ // Setup
+ var calculation = new PipingCalculation();
+
+ var failureMechanism = new PipingFailureMechanism();
+
+ // Call
+ failureMechanism.Calculations.Add(calculation);
+
+ // Assert
+ CollectionAssert.Contains(failureMechanism.Calculations, calculation);
+ }
+
+ [Test]
+ public void Calculations_RemovePipingCalculation_ItemIsRemovedFromCollection()
+ {
+ // Setup
+ var calculation = new PipingCalculation();
+
+ var failureMechanism = new PipingFailureMechanism();
+ failureMechanism.Calculations.Add(calculation);
+
+ // Call
+ failureMechanism.Calculations.Remove(calculation);
+
+ // Assert
+ CollectionAssert.DoesNotContain(failureMechanism.Calculations, calculation);
+ }
+
+ [Test]
+ public void Calculations_AddPipingCalculationFolder_ItemIsAddedToCollection()
+ {
+ // Setup
+ var folder = new PipingCalculationGroup();
+
+ var failureMechanism = new PipingFailureMechanism();
+
+ // Call
+ failureMechanism.Calculations.Add(folder);
+
+ // Assert
+ CollectionAssert.Contains(failureMechanism.Calculations, folder);
+ }
+
+ [Test]
+ public void Calculations_RemovePipingCalculationFolder_ItemIsRemovedFromCollection()
+ {
+ // Setup
+ var folder = new PipingCalculationGroup();
+
+ var failureMechanism = new PipingFailureMechanism();
+ failureMechanism.Calculations.Add(folder);
+
+ // Call
+ failureMechanism.Calculations.Remove(folder);
+
+ // Assert
+ CollectionAssert.DoesNotContain(failureMechanism.Calculations, folder);
+ }
}
}
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj
===================================================================
diff -u -r8ed458d0460c2bab956a7c3a75c2cdb5c1aae3e6 -red0b4ea830beb801bcc0e3eb5b28993001ed2981
--- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj (.../Ringtoets.Piping.Data.Test.csproj) (revision 8ed458d0460c2bab956a7c3a75c2cdb5c1aae3e6)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj (.../Ringtoets.Piping.Data.Test.csproj) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -60,7 +60,9 @@
-
+
+
+
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingCalculationsTreeFolderTest.cs
===================================================================
diff -u -rfb32e3411873a7b4c567792b9f335eba462e2702 -red0b4ea830beb801bcc0e3eb5b28993001ed2981
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingCalculationsTreeFolderTest.cs (.../PipingCalculationsTreeFolderTest.cs) (revision fb32e3411873a7b4c567792b9f335eba462e2702)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingCalculationsTreeFolderTest.cs (.../PipingCalculationsTreeFolderTest.cs) (revision ed0b4ea830beb801bcc0e3eb5b28993001ed2981)
@@ -14,7 +14,7 @@
public class PipingCalculationsTreeFolderTest
{
[Test]
- public void ParameteredConstructor_ExpectedValues()
+ public void ParameteredConstructor_FailureMechanismWithOneCalculation_ExpectedValues()
{
// Setup
const string folderName = "Berekeningen";
@@ -29,9 +29,11 @@
Assert.IsInstanceOf(calculationsFolder);
Assert.AreEqual(folderName, calculationsFolder.Name);
Assert.AreSame(failureMechanism, calculationsFolder.ParentFailureMechanism);
- var calculationPresentationObjects = calculationsFolder.Contents
- .OfType()
- .ToArray();
+
+ object[] contentsAsArray = calculationsFolder.Contents.OfType