Index: DeltaShell.sln
===================================================================
diff -u -r0cc887bb46e8cd47745f5743311902faa4c6bc87 -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- DeltaShell.sln (.../DeltaShell.sln) (revision 0cc887bb46e8cd47745f5743311902faa4c6bc87)
+++ DeltaShell.sln (.../DeltaShell.sln) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -124,7 +124,7 @@
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Wti", "Wti", "{C9DA93BC-1034-4D15-AD4E-773E3F560179}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wti.Data", "src\Plugins\Wti\Wti.Data\Wti.Data.csproj", "{CE994CC9-6F6A-48AC-B4BE-02C30A21F4DB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wti.Data", "src\Plugins\Ringtoets\Piping\src\Ringtoets.Piping.Data\Wti.Data.csproj", "{CE994CC9-6F6A-48AC-B4BE-02C30A21F4DB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wti.IO", "src\Plugins\Wti\Wti.IO\Wti.IO.csproj", "{35B87B7A-7F50-4139-B563-589EE522B1ED}"
EndProject
@@ -144,7 +144,7 @@
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ringtoets.Piping.Plugin.Test", "src\Plugins\Ringtoets\Piping\test\Ringtoets.Piping.Plugin.Test\Ringtoets.Piping.Plugin.Test.csproj", "{9A5C8069-520E-49D3-AA62-E8FB19614A27}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wti.Data.Test", "test\Plugins\Wti\Wti.Data.Test\Wti.Data.Test.csproj", "{19EB1C52-D90B-40F2-A7AF-364CC5D89F68}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wti.Data.Test", "src\Plugins\Ringtoets\Piping\test\Ringtoets.Piping.Data.Test\Wti.Data.Test.csproj", "{19EB1C52-D90B-40F2-A7AF-364CC5D89F68}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "installer", "installer", "{C4E268AD-A25B-4F47-8F92-E5137FDF7CC7}"
EndProject
@@ -162,7 +162,7 @@
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wti.Calculation.TestUtil", "src\Plugins\Ringtoets\Piping\test\Ringtoets.Piping.Calculation.TestUtil\Wti.Calculation.TestUtil.csproj", "{27E0A5C9-3ABF-426A-A3DA-7D0B83A218C8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wti.Data.TestUtil", "test\Plugins\Wti\Wti.Data.TestUtil\Wti.Data.TestUtil.csproj", "{955E574D-67CE-4347-AA6B-7DF8A04ED754}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wti.Data.TestUtil", "src\Plugins\Ringtoets\Piping\test\Ringtoets.Piping.Data.TestUtil\Wti.Data.TestUtil.csproj", "{955E574D-67CE-4347-AA6B-7DF8A04ED754}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Ringtoets", "Ringtoets", "{5A029776-37C6-4622-A4E9-9DB9E8E935AB}"
EndProject
@@ -520,24 +520,24 @@
{07206938-9671-4DC7-BDE4-35B0F6E20DBC} = {A300D2BD-2E91-4EA7-A421-646EE7B5118B}
{4FDA4BD2-2C84-4C7C-9908-818884D52DBB} = {A300D2BD-2E91-4EA7-A421-646EE7B5118B}
{E0990383-FB2E-47D1-99CD-9B9FA2929E5B} = {A300D2BD-2E91-4EA7-A421-646EE7B5118B}
- {CE994CC9-6F6A-48AC-B4BE-02C30A21F4DB} = {C9DA93BC-1034-4D15-AD4E-773E3F560179}
{35B87B7A-7F50-4139-B563-589EE522B1ED} = {C9DA93BC-1034-4D15-AD4E-773E3F560179}
{7CD038E1-E111-4969-ACED-22C5BD2974E1} = {C9DA93BC-1034-4D15-AD4E-773E3F560179}
{F3A82DA4-A377-4009-A424-EFC8839913ED} = {5A029776-37C6-4622-A4E9-9DB9E8E935AB}
+ {C2EEB390-385B-4471-ABB8-9C1F1A8D0C11} = {F3A82DA4-A377-4009-A424-EFC8839913ED}
+ {0FA77E45-C347-4677-9DA0-4C330D1440D5} = {F3A82DA4-A377-4009-A424-EFC8839913ED}
{622A8282-D872-4DD5-8B70-578A403F74FF} = {BC862348-6B4E-49EA-9099-2E5BE6DC183A}
{E4B0E068-F1A3-47BA-965F-0EC1E78E530A} = {BC862348-6B4E-49EA-9099-2E5BE6DC183A}
- {19EB1C52-D90B-40F2-A7AF-364CC5D89F68} = {BC862348-6B4E-49EA-9099-2E5BE6DC183A}
- {955E574D-67CE-4347-AA6B-7DF8A04ED754} = {BC862348-6B4E-49EA-9099-2E5BE6DC183A}
- {0FA77E45-C347-4677-9DA0-4C330D1440D5} = {F3A82DA4-A377-4009-A424-EFC8839913ED}
- {C2EEB390-385B-4471-ABB8-9C1F1A8D0C11} = {F3A82DA4-A377-4009-A424-EFC8839913ED}
- {3CCB05DB-C7B3-4EF7-B41D-22B6D2A3774E} = {C4E268AD-A25B-4F47-8F92-E5137FDF7CC7}
- {1D3D58B6-EF7E-401E-92A0-104067D222EE} = {0FA77E45-C347-4677-9DA0-4C330D1440D5}
- {10B8D63D-87E8-46DF-ACA9-A8CF22EE8FB5} = {0FA77E45-C347-4677-9DA0-4C330D1440D5}
- {D64E4F0E-E341-496F-82B2-941AD202B4E3} = {0FA77E45-C347-4677-9DA0-4C330D1440D5}
{9A5C8069-520E-49D3-AA62-E8FB19614A27} = {C2EEB390-385B-4471-ABB8-9C1F1A8D0C11}
{D783543B-46A1-4848-A812-AF5A5259ED7E} = {C2EEB390-385B-4471-ABB8-9C1F1A8D0C11}
- {91389DA2-3FF4-4559-90B3-4061549789DD} = {C2EEB390-385B-4471-ABB8-9C1F1A8D0C11}
{27E0A5C9-3ABF-426A-A3DA-7D0B83A218C8} = {C2EEB390-385B-4471-ABB8-9C1F1A8D0C11}
+ {91389DA2-3FF4-4559-90B3-4061549789DD} = {C2EEB390-385B-4471-ABB8-9C1F1A8D0C11}
+ {19EB1C52-D90B-40F2-A7AF-364CC5D89F68} = {C2EEB390-385B-4471-ABB8-9C1F1A8D0C11}
+ {955E574D-67CE-4347-AA6B-7DF8A04ED754} = {C2EEB390-385B-4471-ABB8-9C1F1A8D0C11}
+ {3CCB05DB-C7B3-4EF7-B41D-22B6D2A3774E} = {C4E268AD-A25B-4F47-8F92-E5137FDF7CC7}
+ {D64E4F0E-E341-496F-82B2-941AD202B4E3} = {0FA77E45-C347-4677-9DA0-4C330D1440D5}
+ {1D3D58B6-EF7E-401E-92A0-104067D222EE} = {0FA77E45-C347-4677-9DA0-4C330D1440D5}
+ {10B8D63D-87E8-46DF-ACA9-A8CF22EE8FB5} = {0FA77E45-C347-4677-9DA0-4C330D1440D5}
+ {CE994CC9-6F6A-48AC-B4BE-02C30A21F4DB} = {0FA77E45-C347-4677-9DA0-4C330D1440D5}
{4AD99020-8612-46E5-A313-F9ADA7B196E4} = {0D2E4E16-EE0A-4E50-9218-947B1D91C84D}
EndGlobalSection
GlobalSection(TextTemplating) = postSolution
Index: src/DeltaShell/DeltaShell.Gui/DeltaShell.Gui.csproj
===================================================================
diff -u -rabafde44f0d5eacfbd71a1a8ea8b4c25fed0f799 -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- src/DeltaShell/DeltaShell.Gui/DeltaShell.Gui.csproj (.../DeltaShell.Gui.csproj) (revision abafde44f0d5eacfbd71a1a8ea8b4c25fed0f799)
+++ src/DeltaShell/DeltaShell.Gui/DeltaShell.Gui.csproj (.../DeltaShell.Gui.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -292,15 +292,15 @@
Wti.Base
False
-
+
{d64e4f0e-e341-496f-82b2-941ad202b4e3}
Wti.Calculation
{10b8d63d-87e8-46df-aca9-a8cf22ee8fb5}
Ringtoets.Piping.Service
-
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Wti.Data
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Wti.Calculation.csproj
===================================================================
diff -u -r0cc887bb46e8cd47745f5743311902faa4c6bc87 -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Wti.Calculation.csproj (.../Wti.Calculation.csproj) (revision 0cc887bb46e8cd47745f5743311902faa4c6bc87)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Wti.Calculation.csproj (.../Wti.Calculation.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -66,7 +66,7 @@
Wti.Base
False
-
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Wti.Data
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingData.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingData.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingData.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,184 @@
+using System.Collections.Generic;
+using DelftTools.Shell.Core;
+
+namespace Wti.Data
+{
+ ///
+ /// This class holds the information which can be made visible in the graphical interface of the application.
+ ///
+ public class PipingData : IObservable
+ {
+ private readonly IList observers = new List();
+
+ ///
+ /// Constructs a new instance of with default values set for some of the parameters.
+ ///
+ public PipingData()
+ {
+ // Defaults as they have been defined in the DikesPiping Kernel's Technical Documentation of 07 Oct 15
+ BeddingAngle = 37.0;
+ MeanDiameter70 = 2.08e-4;
+ Gravity = 9.81;
+ WaterKinematicViscosity = 1.33e-6;
+ WhitesDragCoefficient = 0.25;
+ SandParticlesVolumicWeight = 16.5;
+ WaterVolumetricWeight = 9.81;
+ SellmeijerReductionFactor = 0.3;
+ DampingFactorExit = 1.0;
+ }
+
+ ///
+ /// Gets or sets the damping factor at the exit point.
+ ///
+ public double DampingFactorExit { get; set; }
+
+ ///
+ /// Gets or sets the reduction factor Sellmeijer.
+ ///
+ public double SellmeijerReductionFactor { get; set; }
+
+ ///
+ /// Gets or sets the volumetric weight of water.
+ /// [kN/m³]
+ ///
+ public double WaterVolumetricWeight { get; set; }
+
+ ///
+ /// Gets or sets the (lowerbound) volumic weight of sand grain material of a sand layer under water.
+ /// [kN/m³]
+ ///
+ public double SandParticlesVolumicWeight { get; set; }
+
+ ///
+ /// Gets or sets the White's drag coefficient.
+ ///
+ public double WhitesDragCoefficient { get; set; }
+
+ ///
+ /// Gets or sets the kinematic viscosity of water at 10 degrees Celsius.
+ /// [m²/s]
+ ///
+ public double WaterKinematicViscosity { get; set; }
+
+ ///
+ /// Gets or sets the gravitational acceleration.
+ /// [m/s²]
+ ///
+ public double Gravity { get; set; }
+
+ ///
+ /// Gets or sets the mean diameter of small scale tests applied to different kinds of sand, on which the formula of Sellmeijer has been fit.
+ /// [m]
+ ///
+ public double MeanDiameter70 { get; set; }
+
+ ///
+ /// Gets or sets the angle of the force balance representing the amount in which sand grains resist rolling.
+ /// [°]
+ ///
+ public double BeddingAngle { get; set; }
+
+ ///
+ /// Gets or sets the calculation value used to account for uncertainty in the model for uplift.
+ ///
+ public double UpliftModelFactor { get; set; }
+
+ ///
+ /// Gets or sets the outside high water level.
+ /// [m]
+ ///
+ public double AssessmentLevel { get; set; }
+
+ ///
+ /// Gets or sets the piezometric head at the exit point.
+ /// [m]
+ ///
+ public double PiezometricHeadExit { get; set; }
+
+ ///
+ /// Gets or sets the phreatic level at the exit point.
+ /// [m]
+ ///
+ public double PhreaticLevelExit { get; set; }
+
+ ///
+ /// Gets or sets the piezometric head in the hinterland.
+ /// [m]
+ ///
+ public double PiezometricHeadPolder { get; set; }
+
+ ///
+ /// Gets or sets the critical exit gradient for heave.
+ ///
+ public double CriticalHeaveGradient { get; set; }
+
+ ///
+ /// Gets or sets the total thickness of the coverage layer at the exit point.
+ /// [m]
+ ///
+ public double ThicknessCoverageLayer { get; set; }
+
+ ///
+ /// Gets or sets the calculation value used to account for uncertainty in the model for Sellmeijer.
+ ///
+ public double SellmeijerModelFactor { get; set; }
+
+ ///
+ /// Gets or sets the horizontal distance between entree and exit point.
+ /// [m]
+ ///
+ public double SeepageLength { get; set; }
+
+ ///
+ /// Gets or sets the sieve size through which 70% fraction of the grains of the top part of the aquifer passes.
+ /// [m]
+ ///
+ public double Diameter70 { get; set; }
+
+ ///
+ /// Gets or sets the Darcy-speed with which water flows through the aquifer layer.
+ /// [m/s]
+ ///
+ public double DarcyPermeability { get; set; }
+
+ ///
+ /// Gets or sets the thickness of the aquifer layer.
+ /// [m]
+ ///
+ public double ThicknessAquiferLayer { get; set; }
+
+ ///
+ /// Gets or sets the x coordinate of the exit point.
+ /// [m]
+ ///
+ public double ExitPointXCoordinate { get; set; }
+
+ ///
+ /// Gets or sets the surface line.
+ ///
+ public RingtoetsPipingSurfaceLine SurfaceLine { get; set; }
+
+ ///
+ /// Gets or sets , which contains the results of a Piping calculation.
+ ///
+ public PipingOutput Output { 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/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanism.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,59 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+using DelftTools.Shell.Core;
+
+namespace Wti.Data
+{
+ ///
+ /// Model for performing piping calculations.
+ ///
+ public class PipingFailureMechanism : IObservable
+ {
+ private readonly IList observers = new List();
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public PipingFailureMechanism()
+ {
+ SurfaceLines = new ObservableList();
+ SoilProfiles = Enumerable.Empty();
+ PipingData = new PipingData();
+ }
+
+ ///
+ /// Gets the available within the scope of the piping failure mechanism.
+ ///
+ public IEnumerable SurfaceLines { get; private set; }
+
+ ///
+ /// Gets the , which contains input and output of a piping calculation.
+ ///
+ public PipingData PipingData { get; private set; }
+
+ ///
+ /// Gets the available profiles within the scope of the piping failure mechanism.
+ ///
+ public IEnumerable SoilProfiles { get; private 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/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingOutput.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingOutput.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingOutput.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,57 @@
+namespace Wti.Data
+{
+ ///
+ /// Simple class containing the results of a Piping calculation.
+ ///
+ public class PipingOutput
+ {
+ ///
+ /// Creates a new instance of .
+ ///
+ /// The calculated z-value for the uplift sub calculation.
+ /// The factor of safety for the uplift sub calculation.
+ /// The calculated z-value for the heave sub calculation.
+ /// The factor of safety for the heave sub calculation.
+ /// The calculated z-value for the Sellmeijer sub calculation.
+ /// The factor of safety for the Sellmeijer sub calculation.
+ public PipingOutput(double upliftZValue, double upliftFactorOfSafety, double heaveZValue, double heaveFactorOfSafety, double sellmeijerZValue, double sellmeijerFactorOfSafety)
+ {
+ HeaveFactorOfSafety = heaveFactorOfSafety;
+ HeaveZValue = heaveZValue;
+ UpliftFactorOfSafety = upliftFactorOfSafety;
+ UpliftZValue = upliftZValue;
+ SellmeijerFactorOfSafety = sellmeijerFactorOfSafety;
+ SellmeijerZValue = sellmeijerZValue;
+ }
+
+ ///
+ /// The calculated z-value for the uplift sub calculation.
+ ///
+ public double UpliftZValue { get; private set; }
+
+ ///
+ /// The factor of safety for the uplift sub calculation.
+ ///
+ public double UpliftFactorOfSafety { get; private set; }
+
+ ///
+ /// The calculated z-value for the heave sub calculation.
+ ///
+ public double HeaveZValue { get; private set; }
+
+ ///
+ /// The factor of safety for the heave sub calculation.
+ ///
+ public double HeaveFactorOfSafety { get; private set; }
+
+ ///
+ /// The calculated z-value for the Sellmeijer sub calculation.
+ ///
+ public double SellmeijerZValue { get; private set; }
+
+ ///
+ /// The factor of safety for the Sellmeijer sub calculation.
+ ///
+ public double SellmeijerFactorOfSafety { get; private set; }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSoilLayer.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSoilLayer.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSoilLayer.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,14 @@
+using System.Collections.Generic;
+
+namespace Wti.Data
+{
+ public class PipingSoilLayer
+ {
+ public PipingSoilLayer(double top)
+ {
+ Top = top;
+ }
+
+ public double Top { get; private set; }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSoilProfile.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSoilProfile.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSoilProfile.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,59 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using Wti.Data.Properties;
+
+namespace Wti.Data
+{
+ ///
+ /// This class represents a soil profile, which was imported for use in a piping calculation.
+ ///
+ public class PipingSoilProfile
+ {
+ private IEnumerable layers;
+
+ ///
+ /// Creates a new instance of , with the given , and .
+ /// A new collection is created for and used in the .
+ ///
+ /// The name of the profile.
+ /// The bottom level of the profile.
+ /// The collection of layers that should be part of the profile.
+ public PipingSoilProfile(string name, double bottom, IEnumerable layers)
+ {
+ if (layers == null || layers.Count() == 0)
+ {
+ throw new ArgumentException(String.Format(Resources.Error_CannotConstructPipingSoilProfileWithoutLayers, name));
+ }
+ Name = name;
+ Bottom = bottom;
+ Layers = layers;
+ }
+
+ ///
+ /// Gets the bottom level of the .
+ ///
+ public double Bottom { get; private set; }
+
+ ///
+ /// Gets the name of .
+ ///
+ public string Name { get; private set; }
+
+ ///
+ /// Gets a of the for the .
+ ///
+ public IEnumerable Layers
+ {
+ get
+ {
+ return layers;
+ }
+ private set
+ {
+ layers = value.ToArray();
+ }
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Point3D.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Point3D.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Point3D.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,68 @@
+using System;
+
+namespace Wti.Data
+{
+ ///
+ /// Defines a mathematical point in 3D Euclidean space.
+ ///
+ public class Point3D
+ {
+ ///
+ /// Gets or sets the x coordinate.
+ ///
+ public double X { get; set; }
+
+ ///
+ /// Gets or sets the y coordinate.
+ ///
+ public double Y { get; set; }
+
+ ///
+ /// Gets or sets the z coordinate.
+ ///
+ public double Z { get; set; }
+
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(null, obj))
+ {
+ return false;
+ }
+ if (ReferenceEquals(this, obj))
+ {
+ return true;
+ }
+ if (obj.GetType() != GetType())
+ {
+ return false;
+ }
+ return Equals((Point3D) obj);
+ }
+
+ public override int GetHashCode()
+ {
+ unchecked
+ {
+ var hashCode = X.GetHashCode();
+ hashCode = (hashCode*397) ^ Y.GetHashCode();
+ hashCode = (hashCode*397) ^ Z.GetHashCode();
+ return hashCode;
+ }
+ }
+
+ public override string ToString()
+ {
+ return String.Format("({0}, {1}, {2})", X, Y, Z);
+ }
+
+ ///
+ /// Compares the with based on , and .
+ ///
+ /// A to compare with.
+ /// True if the coordinates of the matches the coordinate of . False otherwise.
+ protected bool Equals(Point3D other)
+ {
+ return X.Equals(other.X) && Y.Equals(other.Y) && Z.Equals(other.Z);
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/AssemblyInfo.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/AssemblyInfo.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/AssemblyInfo.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,6 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Wti.Data")]
+[assembly: AssemblyProduct("Wti.Data")]
+[assembly: Guid("5ff8830f-c542-40f3-9f0f-64002f39b9ef")]
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,72 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34209
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Wti.Data.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Wti.Data.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Geen lagen gevonden voor het profiel '{0}'..
+ ///
+ internal static string Error_CannotConstructPipingSoilProfileWithoutLayers {
+ get {
+ return ResourceManager.GetString("Error_CannotConstructPipingSoilProfileWithoutLayers", resourceCulture);
+ }
+ }
+ }
+}
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Geen lagen gevonden voor het profiel '{0}'.
+
+
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/RingtoetsPipingSurfaceLine.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/RingtoetsPipingSurfaceLine.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/RingtoetsPipingSurfaceLine.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,61 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Wti.Data
+{
+ ///
+ /// Definition of a surfaceline for piping.
+ ///
+ public class RingtoetsPipingSurfaceLine
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public RingtoetsPipingSurfaceLine()
+ {
+ Name = string.Empty;
+ Points = Enumerable.Empty();
+ }
+
+ ///
+ /// Gets or sets the name of the surfaceline.
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// Gets or sets the 3D points describing its geometry.
+ ///
+ public IEnumerable Points { get; private set; }
+
+ ///
+ /// Gets or sets the first 3D geometry point defining the surfaceline in world coordinates.
+ ///
+ public Point3D StartingWorldPoint { get; private set; }
+
+ ///
+ /// Gets or sets the last 3D geometry point defining the surfaceline in world coordinates.
+ ///
+ public Point3D EndingWorldPoint { get; private set; }
+
+ ///
+ /// Sets the geometry of the surfaceline.
+ ///
+ /// The collection of points defining the surfaceline geometry.
+ public void SetGeometry(IEnumerable points)
+ {
+ var point3Ds = points.ToArray();
+ Points = point3Ds;
+
+ if (point3Ds.Length > 0)
+ {
+ StartingWorldPoint = point3Ds[0];
+ EndingWorldPoint = point3Ds[point3Ds.Length - 1];
+ }
+ }
+
+ public override string ToString()
+ {
+ return Name;
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Wti.Data.csproj
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Wti.Data.csproj (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/Wti.Data.csproj (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,95 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {CE994CC9-6F6A-48AC-B4BE-02C30A21F4DB}
+ Library
+ Properties
+ Wti.Data
+ Wti.Data
+ v4.0
+ 512
+
+
+ true
+ bin\Debug\
+ 4
+ DEBUG;TRACE
+ full
+ x86
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+ bin\Debug\Wti.Data.XML
+
+
+ bin\Release\
+ 4
+ TRACE
+ true
+ pdbonly
+ x86
+ prompt
+ MinimumRecommendedRules.ruleset
+ bin\Release\Wti.Data.XML
+
+
+
+
+
+
+
+ Properties\GlobalAssembly.cs
+
+
+
+
+
+
+
+
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+
+ {82b61d20-fd4b-49be-9252-5bf6e3ee4666}
+ DelftTools.Shell.Core
+
+
+ {f49bd8b2-332a-4c91-a196-8cce0a2c7d98}
+ DelftTools.Utils
+
+
+ {c90b77da-e421-43cc-b82e-529651bc21ac}
+ Wti.Base
+ False
+
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/WtiProject.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/WtiProject.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Data/WtiProject.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,79 @@
+using System.Collections.Generic;
+using DelftTools.Shell.Core;
+using DelftTools.Utils;
+
+namespace Wti.Data
+{
+ ///
+ /// Container for all the data that has been imported and calculated by the user when performing an assessment.
+ ///
+ public class WtiProject : INameable, IObservable
+ {
+ private readonly IList observers = new List();
+
+ ///
+ /// Creates a new instance of with a default name set.
+ ///
+ public WtiProject()
+ {
+ Name = "WTI project";
+ }
+
+ ///
+ /// Gets or sets the .
+ ///
+ public PipingFailureMechanism PipingFailureMechanism { get; private set; }
+
+ ///
+ /// The name of the .
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// Removes the assigned to the .
+ ///
+ public void ClearPipingFailureMechanism()
+ {
+ PipingFailureMechanism = null;
+ }
+
+ ///
+ /// Creates a new and assign it to the .
+ ///
+ public void InitializePipingFailureMechanism()
+ {
+ PipingFailureMechanism = new PipingFailureMechanism();
+ }
+
+ ///
+ /// Determines whether a new can be added to the .
+ ///
+ /// True if a new can be assigned. False otherwise.
+ public bool CanAddPipingFailureMechanism()
+ {
+ return PipingFailureMechanism == null;
+ }
+
+ #region IObservable
+
+ 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();
+ }
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Plugin/Ringtoets.Piping.Plugin.csproj
===================================================================
diff -u -rbf4322caa6a74c61bf905b8156f6110aa07f9afc -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Plugin/Ringtoets.Piping.Plugin.csproj (.../Ringtoets.Piping.Plugin.csproj) (revision bf4322caa6a74c61bf905b8156f6110aa07f9afc)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Plugin/Ringtoets.Piping.Plugin.csproj (.../Ringtoets.Piping.Plugin.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -103,15 +103,15 @@
Wti.Base
False
-
+
{d64e4f0e-e341-496f-82b2-941ad202b4e3}
Wti.Calculation
{10B8D63D-87E8-46DF-ACA9-A8CF22EE8FB5}
Ringtoets.Piping.Service
-
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Wti.Data
Index: src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Service/Ringtoets.Piping.Service.csproj
===================================================================
diff -u -r0cc887bb46e8cd47745f5743311902faa4c6bc87 -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Service/Ringtoets.Piping.Service.csproj (.../Ringtoets.Piping.Service.csproj) (revision 0cc887bb46e8cd47745f5743311902faa4c6bc87)
+++ src/Plugins/Ringtoets/Piping/src/Ringtoets.Piping.Service/Ringtoets.Piping.Service.csproj (.../Ringtoets.Piping.Service.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -82,7 +82,7 @@
Wti.Base
False
-
+
{CE994CC9-6F6A-48AC-B4BE-02C30A21F4DB}
Wti.Data
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Calculation.Test/Wti.Calculation.Test.csproj
===================================================================
diff -u -r0cc887bb46e8cd47745f5743311902faa4c6bc87 -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Calculation.Test/Wti.Calculation.Test.csproj (.../Wti.Calculation.Test.csproj) (revision 0cc887bb46e8cd47745f5743311902faa4c6bc87)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Calculation.Test/Wti.Calculation.Test.csproj (.../Wti.Calculation.Test.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -52,7 +52,7 @@
-
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Wti.Data
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Calculation.TestUtil/Wti.Calculation.TestUtil.csproj
===================================================================
diff -u -r0cc887bb46e8cd47745f5743311902faa4c6bc87 -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Calculation.TestUtil/Wti.Calculation.TestUtil.csproj (.../Wti.Calculation.TestUtil.csproj) (revision 0cc887bb46e8cd47745f5743311902faa4c6bc87)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Calculation.TestUtil/Wti.Calculation.TestUtil.csproj (.../Wti.Calculation.TestUtil.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -47,7 +47,7 @@
-
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Wti.Data
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingDataTest.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingDataTest.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingDataTest.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,140 @@
+using DelftTools.Shell.Core;
+using NUnit.Framework;
+using Rhino.Mocks;
+
+namespace Wti.Data.Test
+{
+ public class PipingDataTest
+ {
+ private MockRepository mockRepository;
+
+ [SetUp]
+ public void SetUp()
+ {
+ mockRepository = new MockRepository();
+ }
+
+ [Test]
+ public void DefaultConstructor_DefaultPropertyValuesAreSet()
+ {
+ // Call
+ var defaultConstructed = new PipingData();
+
+ // Assert
+ Assert.AreEqual(0, defaultConstructed.CriticalHeaveGradient);
+ Assert.AreEqual(0, defaultConstructed.UpliftModelFactor);
+ Assert.AreEqual(0, defaultConstructed.PiezometricHeadExit);
+ Assert.AreEqual(0, defaultConstructed.PiezometricHeadPolder);
+ Assert.AreEqual(0, defaultConstructed.ThicknessCoverageLayer);
+ Assert.AreEqual(0, defaultConstructed.PhreaticLevelExit);
+ Assert.AreEqual(0, defaultConstructed.AssessmentLevel);
+ Assert.AreEqual(0, defaultConstructed.SellmeijerModelFactor);
+ Assert.AreEqual(0, defaultConstructed.SeepageLength);
+ Assert.AreEqual(0, defaultConstructed.Diameter70);
+ Assert.AreEqual(0, defaultConstructed.ThicknessAquiferLayer);
+ Assert.AreEqual(0, defaultConstructed.DarcyPermeability);
+ Assert.IsNull(defaultConstructed.SurfaceLine);
+
+ Assert.AreEqual(1.0, defaultConstructed.DampingFactorExit);
+ Assert.AreEqual(0.3, defaultConstructed.SellmeijerReductionFactor);
+ Assert.AreEqual(16.5, defaultConstructed.SandParticlesVolumicWeight);
+ Assert.AreEqual(9.81, defaultConstructed.Gravity);
+ Assert.AreEqual(1.33e-6, defaultConstructed.WaterKinematicViscosity);
+ Assert.AreEqual(9.81, defaultConstructed.WaterVolumetricWeight);
+ Assert.AreEqual(0.25, defaultConstructed.WhitesDragCoefficient);
+ Assert.AreEqual(37, defaultConstructed.BeddingAngle);
+ Assert.AreEqual(2.08e-4, defaultConstructed.MeanDiameter70);
+
+ Assert.IsNull(defaultConstructed.Output);
+ }
+
+ [Test]
+ public void Notify_SingleListenerAttached_ListenerIsNotified()
+ {
+ // Setup
+ var observer = mockRepository.StrictMock();
+ observer.Expect(o => o.UpdateObserver());
+
+ mockRepository.ReplayAll();
+
+ var pipingData = new PipingData();
+
+ pipingData.Attach(observer);
+
+ // Call & Assert
+ pipingData.NotifyObservers();
+ }
+
+ [Test]
+ public void Notify_SingleListenerAttachedAndDeattached_ListenerIsNotNotified()
+ {
+ // Setup
+ var observer = mockRepository.StrictMock();
+ observer.Expect(o => o.UpdateObserver()).Repeat.Never();
+ mockRepository.ReplayAll();
+
+ var pipingData = new PipingData();
+
+ pipingData.Attach(observer);
+ pipingData.Detach(observer);
+
+ // Call & Assert
+ pipingData.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 pipingData = new PipingData();
+
+ pipingData.Attach(observerA);
+ pipingData.Attach(observerB);
+
+ // Call & Assert
+ pipingData.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 pipingData = new PipingData();
+
+ pipingData.Attach(observerA);
+ pipingData.Attach(observerB);
+ pipingData.Detach(observerA);
+
+ // Call & Assert
+ pipingData.NotifyObservers();
+ }
+
+ [Test]
+ public void Detach_DetachNonAttachedObserver_ThrowsNoException()
+ {
+ // Setup
+ var observer = mockRepository.StrictMock();
+
+ var pipingData = new PipingData();
+
+ // Call & Assert
+ pipingData.Detach(observer);
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismTest.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,124 @@
+using DelftTools.Shell.Core;
+using NUnit.Framework;
+using Rhino.Mocks;
+
+namespace Wti.Data.Test
+{
+ [TestFixture]
+ public class PipingFailureMechanismTest
+ {
+ private MockRepository mockRepository;
+
+ [SetUp]
+ public void SetUp()
+ {
+ mockRepository = new MockRepository();
+ }
+
+ [Test]
+ public void DefaultConstructor_ExpectedValues()
+ {
+ // call
+ var piping = new PipingFailureMechanism();
+
+ // assert
+ CollectionAssert.IsEmpty(piping.SurfaceLines);
+ Assert.IsInstanceOf>(piping.SurfaceLines);
+ CollectionAssert.IsEmpty(piping.SoilProfiles);
+ Assert.IsNotNull(piping.PipingData);
+ }
+
+ [Test]
+ public void Notify_SingleListenerAttached_ListenerIsNotified()
+ {
+ // Setup
+ var observer = mockRepository.StrictMock();
+ observer.Expect(o => o.UpdateObserver());
+
+ mockRepository.ReplayAll();
+
+ var pipingFailureMechanism = new PipingFailureMechanism();
+
+ pipingFailureMechanism.Attach(observer);
+
+ // Call & Assert
+ pipingFailureMechanism.NotifyObservers();
+ mockRepository.VerifyAll();
+ }
+
+ [Test]
+ public void Notify_SingleListenerAttachedAndDeattached_ListenerIsNotNotified()
+ {
+ // Setup
+ var observer = mockRepository.StrictMock();
+ observer.Expect(o => o.UpdateObserver()).Repeat.Never();
+ mockRepository.ReplayAll();
+
+ var pipingFailureMechanism = new PipingFailureMechanism();
+
+ pipingFailureMechanism.Attach(observer);
+ pipingFailureMechanism.Detach(observer);
+
+ // Call & Assert
+ pipingFailureMechanism.NotifyObservers();
+ mockRepository.VerifyAll();
+ }
+
+ [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 pipingFailureMechanism = new PipingFailureMechanism();
+
+ pipingFailureMechanism.Attach(observerA);
+ pipingFailureMechanism.Attach(observerB);
+
+ // Call & Assert
+ pipingFailureMechanism.NotifyObservers();
+ mockRepository.VerifyAll();
+ }
+
+ [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 pipingFailureMechanism = new PipingFailureMechanism();
+
+ pipingFailureMechanism.Attach(observerA);
+ pipingFailureMechanism.Attach(observerB);
+ pipingFailureMechanism.Detach(observerA);
+
+ // Call & Assert
+ pipingFailureMechanism.NotifyObservers();
+ mockRepository.VerifyAll();
+ }
+
+ [Test]
+ public void Detach_DetachNonAttachedObserver_ThrowsNoException()
+ {
+ // Setup
+ var observer = mockRepository.StrictMock();
+
+ var pipingFailureMechanism = new PipingFailureMechanism();
+
+ // Call & Assert
+ pipingFailureMechanism.Detach(observer);
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingOutputTest.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingOutputTest.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingOutputTest.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,29 @@
+using System;
+using NUnit.Framework;
+
+namespace Wti.Data.Test
+{
+ public class PipingOutputTest
+ {
+ [Test]
+ public void GivenSomeValues_WhenConstructedWithValues_ThenPropertiesAreSet()
+ {
+ var random = new Random(22);
+ var zuValue = random.NextDouble();
+ var foSuValue = random.NextDouble();
+ var zhValue = random.NextDouble();
+ var foShValue = random.NextDouble();
+ var zsValue = random.NextDouble();
+ var foSsValue = random.NextDouble();
+
+ var actual = new PipingOutput(zuValue, foSuValue, zhValue, foShValue, zsValue, foSsValue);
+
+ Assert.That(actual.UpliftZValue, Is.EqualTo(zuValue));
+ Assert.That(actual.UpliftFactorOfSafety, Is.EqualTo(foSuValue));
+ Assert.That(actual.HeaveZValue, Is.EqualTo(zhValue));
+ Assert.That(actual.HeaveFactorOfSafety, Is.EqualTo(foShValue));
+ Assert.That(actual.SellmeijerZValue, Is.EqualTo(zsValue));
+ Assert.That(actual.SellmeijerFactorOfSafety, Is.EqualTo(foSsValue));
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilLayerTest.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilLayerTest.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilLayerTest.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,22 @@
+using System;
+using NUnit.Framework;
+
+namespace Wti.Data.Test
+{
+ public class PipingSoilLayerTest
+ {
+ [Test]
+ public void Constructor_WithTop_ReturnsNewInstanceWithTopSet()
+ {
+ // Setup
+ var top = new Random(22).NextDouble();
+
+ // Call
+ var layer = new PipingSoilLayer(top);
+
+ // Assert
+ Assert.NotNull(layer);
+ Assert.AreEqual(top, layer.Top);
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilProfileTest.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilProfileTest.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilProfileTest.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.ObjectModel;
+using NUnit.Framework;
+
+namespace Wti.Data.Test
+{
+ public class PipingSoilProfileTest
+ {
+ [Test]
+ [TestCase(1)]
+ [TestCase(5)]
+ public void Constructor_WithNameBottomLayers_ReturnsInstanceWithPropsAndEquivalentLayerCollection(int layerCount)
+ {
+ // Setup
+ var name = "Profile";
+ var bottom = new Random(22).NextDouble();
+ var equivalentLayers = new Collection();
+ for (var i = 0; i < layerCount; i++)
+ {
+ equivalentLayers.Add(new PipingSoilLayer(0.0));
+ }
+
+ // Call
+ var profile = new PipingSoilProfile(name, bottom, equivalentLayers);
+
+ // Assert
+ Assert.AreNotSame(equivalentLayers, profile.Layers);
+ CollectionAssert.AreEquivalent(equivalentLayers, profile.Layers);
+ Assert.AreEqual(name, profile.Name);
+ Assert.AreEqual(bottom, profile.Bottom);
+ }
+
+ [Test]
+ public void Constructor_WithNameBottomLayersEmpty_ThrowsArgumentException()
+ {
+ // Call
+ TestDelegate test = () => new PipingSoilProfile(String.Empty, Double.NaN, new Collection());
+
+ // Assert
+ Assert.Throws(test);
+ }
+
+ [Test]
+ public void Constructor_WithNameBottomLayersNull_ThrowsArgumentException()
+ {
+ // Call
+ TestDelegate test = () => new PipingSoilProfile(String.Empty, Double.NaN, null);
+
+ // Assert
+ Assert.Throws(test);
+ }
+
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Point3DTest.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Point3DTest.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Point3DTest.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,170 @@
+using System;
+using NUnit.Framework;
+
+namespace Wti.Data.Test
+{
+ [TestFixture]
+ public class Point3DTest
+ {
+ [Test]
+ public void DefaultConstructor_ExpectedValues()
+ {
+ // Call
+ var point = new Point3D();
+
+ // Assert
+ Assert.AreEqual(0, point.X);
+ Assert.AreEqual(0, point.Y);
+ Assert.AreEqual(0, point.Z);
+ }
+
+ [Test]
+ public void AutomaticProperties_SetAndGetValuesAgain_ReturnedValueShouldBeSameAsSetValue()
+ {
+ // Setup
+ var point = new Point3D();
+
+ // Call
+ point.X = 1.1;
+ point.Y = 2.2;
+ point.Z = -1.1;
+
+ // Assert
+ Assert.AreEqual(1.1, point.X);
+ Assert.AreEqual(2.2, point.Y);
+ Assert.AreEqual(-1.1, point.Z);
+ }
+
+ [Test]
+ public void Equals_ToItself_ReturnsTrue()
+ {
+ // Setup
+ var point = new Point3D();
+
+ // Call
+ var result = point.Equals(point);
+
+ // Assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ [TestCase(0,0,0)]
+ [TestCase(1,2,3)]
+ [TestCase(3.5,3.6,3.7)]
+ public void Equals_OtherWithSameCoordinates_ReturnsTrue(double x, double y, double z)
+ {
+ // Setup
+ var point = new Point3D
+ {
+ X = x,
+ Y = y,
+ Z = z
+ };
+ var otherPoint = new Point3D
+ {
+ X = x,
+ Y = y,
+ Z = z
+ };
+
+ // Call
+ var result = point.Equals(otherPoint);
+
+ // Assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ [TestCase(1e-8, 0, 0)]
+ [TestCase(0, 1e-8, 0)]
+ [TestCase(0, 0, 1e-8)]
+ public void Equals_CloseToOtherPoint_ReturnsFalse(double deltaX, double deltaY, double deltaZ)
+ {
+ // Setup
+ var random = new Random(22);
+ var x = random.NextDouble();
+ var y = random.NextDouble();
+ var z = random.NextDouble();
+
+ var point = new Point3D
+ {
+ X = x,
+ Y = y,
+ Z = z
+ };
+ var otherPoint = new Point3D
+ {
+ X = x + deltaX,
+ Y = y + deltaY,
+ Z = z + deltaZ
+ };
+
+ // Call
+ var result = point.Equals(otherPoint);
+
+ // Assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void GetHashCode_PointsAreEqual_PointsHashesEqual()
+ {
+ // Setup
+ var random = new Random(22);
+ var x = random.NextDouble();
+ var y = random.NextDouble();
+ var z = random.NextDouble();
+
+ var point = new Point3D
+ {
+ X = x,
+ Y = y,
+ Z = z
+ };
+ var otherPoint = new Point3D
+ {
+ X = x,
+ Y = y,
+ Z = z
+ };
+
+ // Call
+ var result = point.GetHashCode();
+ var otherResult = otherPoint.GetHashCode();
+
+ // Assert
+ Assert.AreEqual(result, otherResult);
+ }
+
+ [Test]
+ [SetCulture("nl-NL")]
+ public void ToString_HasCoordinatValues_NL_PrintCoordinateValuesInLocalCulture()
+ {
+ DoToString_HasCoordinateValues_PrintCoordinateValuesInLocalCulture();
+ }
+
+ [Test]
+ [SetCulture("en-US")]
+ public void ToString_HasCoordinatValues_EN_PrintCoordinateValuesInLocalCulture()
+ {
+ DoToString_HasCoordinateValues_PrintCoordinateValuesInLocalCulture();
+ }
+
+ private static void DoToString_HasCoordinateValues_PrintCoordinateValuesInLocalCulture()
+ {
+ // Setup
+ var point = new Point3D
+ {
+ X = 1.1, Y = 2.2, Z = 3.3
+ };
+
+ // Call
+ var stringRepresentation = point.ToString();
+
+ // Assert
+ var expectedText = String.Format("({0}, {1}, {2})", point.X, point.Y, point.Z);
+ Assert.AreEqual(expectedText, stringRepresentation);
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PointCollectionHelperTest.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PointCollectionHelperTest.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PointCollectionHelperTest.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,92 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+using Wti.Data.TestUtil;
+
+namespace Wti.Data.Test
+{
+ public class PointCollectionHelperTest
+ {
+ [Test]
+ public void CreateFromString_OnePoint_ReturnsExpectedPoints()
+ {
+ // Call
+ var result = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine,
+ "3",
+ "..1..",
+ ".....",
+ "....."
+ )).ToArray();
+
+ // Assert
+ Assert.AreEqual(1, result.Length);
+ Assert.AreEqual(2, result[0].X);
+ Assert.AreEqual(2, result[0].Z);
+ }
+
+ [Test]
+ public void CreateFromString_TwoPoint_ReturnsExpectedPoints()
+ {
+ // Call
+ var result = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine,
+ "3",
+ "..1..",
+ ".....",
+ "....2"
+ )).ToArray();
+
+ // Assert
+ Assert.AreEqual(2, result.Length);
+ Assert.AreEqual(2, result[0].X);
+ Assert.AreEqual(2, result[0].Z);
+ Assert.AreEqual(4, result[1].X);
+ Assert.AreEqual(0, result[1].Z);
+ }
+
+ [Test]
+ public void CreateFromString_TwoPointReversed_ReturnsExpectedPoints()
+ {
+ // Call
+ var result = PointCollectionHelper.CreateFromString(String.Join(Environment.NewLine,
+ "3",
+ "..2..",
+ ".....",
+ "....1"
+ )).ToArray();
+
+ // Assert
+ Assert.AreEqual(2, result.Length);
+ Assert.AreEqual(2, result[1].X);
+ Assert.AreEqual(2, result[1].Z);
+ Assert.AreEqual(4, result[0].X);
+ Assert.AreEqual(0, result[0].Z);
+ }
+
+
+ [Test]
+ public void CreateFromFile_TwoPointReversed_ReturnsExpectedPoints()
+ {
+ // Setup
+ var text = String.Join(Environment.NewLine,
+ "3",
+ "..2..",
+ ".....",
+ "....1"
+ );
+ var url = "temp";
+ File.WriteAllText(url, text);
+
+ // Call
+ var result = PointCollectionHelper.CreateFromFile(url).ToArray();
+
+ // Assert
+ Assert.AreEqual(2, result.Length);
+ Assert.AreEqual(2, result[1].X);
+ Assert.AreEqual(2, result[1].Z);
+ Assert.AreEqual(4, result[0].X);
+ Assert.AreEqual(0, result[0].Z);
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Properties/AssemblyInfo.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Properties/AssemblyInfo.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Properties/AssemblyInfo.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,39 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+
+[assembly: AssemblyTitle("Wti.Data.Test")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("Wti.Data.Test")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+
+[assembly: Guid("505a1b37-9940-42f9-9217-e90824e8f637")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/RingtoetsPipingSurfaceLineTest.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/RingtoetsPipingSurfaceLineTest.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/RingtoetsPipingSurfaceLineTest.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,82 @@
+using System;
+using System.Linq;
+
+using NUnit.Framework;
+
+namespace Wti.Data.Test
+{
+ [TestFixture]
+ public class RingtoetsPipingSurfaceLineTest
+ {
+ [Test]
+ public void DefaultConstructor_ExpectedValues()
+ {
+ // Call
+ var surfaceLine = new RingtoetsPipingSurfaceLine();
+
+ // Assert
+ Assert.AreEqual(String.Empty, surfaceLine.Name);
+ CollectionAssert.IsEmpty(surfaceLine.Points);
+ Assert.IsNull(surfaceLine.StartingWorldPoint);
+ Assert.IsNull(surfaceLine.EndingWorldPoint);
+ }
+
+ [Test]
+ public void SetGeometry_EmptyCollection_PointsSetEmptyAndNullStartAndEndWorldPoints()
+ {
+ // Setup
+ var surfaceLine = new RingtoetsPipingSurfaceLine();
+
+ var sourceData = Enumerable.Empty();
+
+ // Call
+ surfaceLine.SetGeometry(sourceData);
+
+ // Assert
+ CollectionAssert.IsEmpty(surfaceLine.Points);
+ Assert.IsNull(surfaceLine.StartingWorldPoint);
+ Assert.IsNull(surfaceLine.EndingWorldPoint);
+ }
+
+ [Test]
+ public void SetGeometry_CollectionOfOnePoint_InitializeStartAndEndWorldPointsToSameInstanceAndInitializePoints()
+ {
+ // Setup
+ var surfaceLine = new RingtoetsPipingSurfaceLine();
+
+ var sourceData = new[]
+ {
+ new Point3D
+ {
+ X = 1.1, Y = 2.2, Z = 3.3
+ }
+ };
+
+ // Call
+ surfaceLine.SetGeometry(sourceData);
+
+ // Assert
+ Assert.AreNotSame(sourceData, surfaceLine.Points);
+ CollectionAssert.AreEqual(sourceData, surfaceLine.Points);
+ Assert.AreSame(sourceData[0], surfaceLine.StartingWorldPoint);
+ Assert.AreSame(sourceData[0], surfaceLine.EndingWorldPoint);
+ }
+
+ [Test]
+ public void ToString_ReturnName()
+ {
+ // Setup
+ const string niceName = "Nice name";
+ var surfaceLine = new RingtoetsPipingSurfaceLine
+ {
+ Name = niceName
+ };
+
+ // Call
+ var text = surfaceLine.ToString();
+
+ // Assert
+ Assert.AreEqual(niceName, text);
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Wti.Data.Test.csproj
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Wti.Data.Test.csproj (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Wti.Data.Test.csproj (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,83 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {19EB1C52-D90B-40F2-A7AF-364CC5D89F68}
+ Library
+ Properties
+ Wti.Data.Test
+ Wti.Data.Test
+ v4.0
+ 512
+
+
+ true
+ bin\Debug\
+ 4
+ DEBUG;TRACE
+ full
+ x86
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+ bin\Release\
+ 4
+ TRACE
+ true
+ pdbonly
+ x86
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+
+ ..\..\..\..\..\..\lib\nunit.framework.dll
+
+
+ ..\..\..\..\..\..\lib\Rhino.Mocks.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {82b61d20-fd4b-49be-9252-5bf6e3ee4666}
+ DelftTools.Shell.Core
+
+
+ {f49bd8b2-332a-4c91-a196-8cce0a2c7d98}
+ DelftTools.Utils
+
+
+ {ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
+ Wti.Data
+
+
+ {955E574D-67CE-4347-AA6B-7DF8A04ED754}
+ Wti.Data.TestUtil
+
+
+
+
+
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/WtiProjectTest.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/WtiProjectTest.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/WtiProjectTest.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,154 @@
+using DelftTools.Shell.Core;
+using DelftTools.Utils;
+using NUnit.Framework;
+using Rhino.Mocks;
+
+namespace Wti.Data.Test
+{
+ [TestFixture]
+ public class WtiProjectTest
+ {
+ [Test]
+ public void DefaultConstructor_ExpectedValues()
+ {
+ // Call
+ var project = new WtiProject();
+
+ // Assert
+ Assert.IsInstanceOf(project);
+ Assert.IsInstanceOf(project);
+ Assert.AreEqual("WTI project", project.Name);
+ }
+
+ [Test]
+ public void InitializePipingFailureMechanism_WithoutFailureMechanismSet_SetNewFailureMechanism()
+ {
+ // Setup
+ var project = new WtiProject();
+
+ // Call
+ project.InitializePipingFailureMechanism();
+
+ // Assert
+ Assert.IsNotNull(project.PipingFailureMechanism);
+
+ }
+
+ [Test]
+ public void InitializePipingFailureMechanism_WithFailureMechanismSet_SetNewFailureMechanism()
+ {
+ // Setup
+ var project = new WtiProject();
+ project.InitializePipingFailureMechanism();
+ PipingFailureMechanism notExpectedFailureMechanism = project.PipingFailureMechanism;
+
+ // Precondition
+ Assert.IsNotNull(notExpectedFailureMechanism);
+
+ // Call
+ project.InitializePipingFailureMechanism();
+
+ // Assert
+ Assert.AreNotSame(notExpectedFailureMechanism, project.PipingFailureMechanism);
+ }
+
+ [Test]
+ public void ClearPipingFailureMechanism_WithFailureMechanismSet_FailureMechanismUnassigned()
+ {
+ // Setup
+ var project = new WtiProject();
+ project.InitializePipingFailureMechanism();
+ PipingFailureMechanism notExpectedFailureMechanism = project.PipingFailureMechanism;
+
+ // Precondition
+ Assert.IsNotNull(notExpectedFailureMechanism);
+
+ // Call
+ project.ClearPipingFailureMechanism();
+
+ // Assert
+ Assert.IsNull(project.PipingFailureMechanism);
+ }
+
+ [Test]
+ public void ClearPipingFailureMechanism_WithoutFailureMechanismSet_PipingFailureMechanismStillUnassigned()
+ {
+ // Setup
+ var project = new WtiProject();
+
+ // Precondition
+ Assert.IsNull(project.PipingFailureMechanism);
+
+ // Call
+ project.ClearPipingFailureMechanism();
+
+ // Assert
+ Assert.IsNull(project.PipingFailureMechanism);
+ }
+
+ [Test]
+ public void NotifyObservers_ObserverAttachedToProject_ObserverIsNotified()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var observer = mocks.StrictMock();
+ observer.Expect(o => o.UpdateObserver());
+ mocks.ReplayAll();
+
+ var project = new WtiProject();
+ project.Attach(observer);
+
+ // Call
+ project.NotifyObservers();
+
+ // Assert
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void NotifyObservers_ObserverHasBeenDetached_ObserverShouldNotBeNotified()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var observer = mocks.StrictMock();
+ mocks.ReplayAll();
+
+ var project = new WtiProject();
+ project.Attach(observer);
+ project.Detach(observer);
+
+ // Call
+ project.NotifyObservers();
+
+ // Assert
+ mocks.VerifyAll(); // Expect no calls on observer
+ }
+
+ [Test]
+ public void CanAddPipingFailureMechanism_NoPipingFailureMechanismAssigned_ReturnsTrue()
+ {
+ // Setup
+ var project = new WtiProject();
+
+ // Call
+ var result = project.CanAddPipingFailureMechanism();
+
+ // Assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void CanAddPipingFailureMechanism_PipingFailureMechanismInitialized_ReturnsTrue()
+ {
+ // Setup
+ var project = new WtiProject();
+ project.InitializePipingFailureMechanism();
+
+ // Call
+ var result = project.CanAddPipingFailureMechanism();
+
+ // Assert
+ Assert.IsFalse(result);
+ }
+ }
+}
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/PointCollectionHelper.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/PointCollectionHelper.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/PointCollectionHelper.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text.RegularExpressions;
+
+namespace Wti.Data.TestUtil
+{
+ public class PointCollectionHelper
+ {
+ public static HashSet CreateFromFile(string url)
+ {
+ return CreateFromString(File.ReadAllText(url));
+ }
+
+ public static HashSet CreateFromString(string s)
+ {
+ var points = new SortedDictionary();
+ var lines = s.Split(new [] { Environment.NewLine }, StringSplitOptions.None);
+ var height = int.Parse(lines[0]);
+ var lineIndex = 1;
+ for (int z = height - 1; z >= 0; z--, lineIndex++)
+ {
+ foreach (var tuple in AllIndexesOfDigit(lines[lineIndex]))
+ {
+ points.Add(tuple.Item1,new Point3D
+ {
+ X = tuple.Item2, Z = z
+ });
+ }
+ }
+ return new HashSet(points.Values);
+ }
+
+ private static IEnumerable> AllIndexesOfDigit(string word)
+ {
+ var guess = @"\d";
+ var matches = Regex.Matches(word, guess);
+ foreach (Match match in matches)
+ {
+ var digit = int.Parse(match.Value);
+ yield return Tuple.Create(digit, match.Index);
+ }
+ }
+ }
+}
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Properties/AssemblyInfo.cs
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Properties/AssemblyInfo.cs (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Properties/AssemblyInfo.cs (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Wti.Data.TestUtil")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("Wti.Data.TestUtil")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("093a0353-57ca-42a8-bedb-a329a633ff43")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Wti.Data.TestUtil.csproj
===================================================================
diff -u
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Wti.Data.TestUtil.csproj (revision 0)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/Wti.Data.TestUtil.csproj (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -0,0 +1,60 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {955E574D-67CE-4347-AA6B-7DF8A04ED754}
+ Library
+ Properties
+ Wti.Data.TestUtil
+ Wti.Data.TestUtil
+ v4.0
+ 512
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {CE994CC9-6F6A-48AC-B4BE-02C30A21F4DB}
+ Wti.Data
+
+
+
+
+
\ No newline at end of file
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/Ringtoets.Piping.Plugin.Test.csproj
===================================================================
diff -u -rbf4322caa6a74c61bf905b8156f6110aa07f9afc -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/Ringtoets.Piping.Plugin.Test.csproj (.../Ringtoets.Piping.Plugin.Test.csproj) (revision bf4322caa6a74c61bf905b8156f6110aa07f9afc)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/Ringtoets.Piping.Plugin.Test.csproj (.../Ringtoets.Piping.Plugin.Test.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -74,11 +74,11 @@
{f49bd8b2-332a-4c91-a196-8cce0a2c7d98}
DelftTools.Utils
-
+
{d64e4f0e-e341-496f-82b2-941ad202b4e3}
Wti.Calculation
-
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Wti.Data
Index: src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/Ringtoets.Piping.Service.Test.csproj
===================================================================
diff -u -r0cc887bb46e8cd47745f5743311902faa4c6bc87 -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/Ringtoets.Piping.Service.Test.csproj (.../Ringtoets.Piping.Service.Test.csproj) (revision 0cc887bb46e8cd47745f5743311902faa4c6bc87)
+++ src/Plugins/Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/Ringtoets.Piping.Service.Test.csproj (.../Ringtoets.Piping.Service.Test.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -65,15 +65,15 @@
{82b61d20-fd4b-49be-9252-5bf6e3ee4666}
DelftTools.Shell.Core
-
+
{D64E4F0E-E341-496F-82B2-941AD202B4E3}
Wti.Calculation
{10B8D63D-87E8-46DF-ACA9-A8CF22EE8FB5}
Ringtoets.Piping.Service
-
+
{CE994CC9-6F6A-48AC-B4BE-02C30A21F4DB}
Wti.Data
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/PipingData.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/PipingFailureMechanism.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/PipingOutput.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/PipingSoilLayer.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/PipingSoilProfile.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/Point3D.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/Properties/AssemblyInfo.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/Properties/Resources.Designer.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/Properties/Resources.resx'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/RingtoetsPipingSurfaceLine.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/Wti.Data.csproj'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Data/WtiProject.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: src/Plugins/Wti/Wti.Forms/Wti.Forms.csproj
===================================================================
diff -u -rabafde44f0d5eacfbd71a1a8ea8b4c25fed0f799 -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- src/Plugins/Wti/Wti.Forms/Wti.Forms.csproj (.../Wti.Forms.csproj) (revision abafde44f0d5eacfbd71a1a8ea8b4c25fed0f799)
+++ src/Plugins/Wti/Wti.Forms/Wti.Forms.csproj (.../Wti.Forms.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -102,15 +102,15 @@
Wti.Base
False
-
+
{D64E4F0E-E341-496F-82B2-941AD202B4E3}
Wti.Calculation
{10B8D63D-87E8-46DF-ACA9-A8CF22EE8FB5}
Ringtoets.Piping.Service
-
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Wti.Data
Index: src/Plugins/Wti/Wti.IO/Wti.IO.csproj
===================================================================
diff -u -r2423a70958e7fecfc92afa462c34194cc695a81e -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- src/Plugins/Wti/Wti.IO/Wti.IO.csproj (.../Wti.IO.csproj) (revision 2423a70958e7fecfc92afa462c34194cc695a81e)
+++ src/Plugins/Wti/Wti.IO/Wti.IO.csproj (.../Wti.IO.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -77,7 +77,7 @@
Wti.Base
False
-
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Wti.Data
Index: src/documentation/UML/UML.csproj
===================================================================
diff -u -rbf4322caa6a74c61bf905b8156f6110aa07f9afc -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- src/documentation/UML/UML.csproj (.../UML.csproj) (revision bf4322caa6a74c61bf905b8156f6110aa07f9afc)
+++ src/documentation/UML/UML.csproj (.../UML.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -58,15 +58,15 @@
{f49bd8b2-332a-4c91-a196-8cce0a2c7d98}
DelftTools.Utils
-
+
{d64e4f0e-e341-496f-82b2-941ad202b4e3}
Wti.Calculation
{10b8d63d-87e8-46df-aca9-a8cf22ee8fb5}
Ringtoets.Piping.Service
-
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Wti.Data
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.Test/PipingDataTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.Test/PipingFailureMechanismTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.Test/PipingOutputTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.Test/PipingSoilLayerTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.Test/PipingSoilProfileTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.Test/Point3DTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.Test/PointCollectionHelperTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.Test/Properties/AssemblyInfo.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.Test/RingtoetsPipingSurfaceLineTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.Test/Wti.Data.Test.csproj'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.Test/WtiProjectTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.TestUtil/PointCollectionHelper.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.TestUtil/Properties/AssemblyInfo.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 53a2d662c6893cb7e63dc150aaab6c2b3e9db769 refers to a dead (removed) revision in file `test/Plugins/Wti/Wti.Data.TestUtil/Wti.Data.TestUtil.csproj'.
Fisheye: No comparison available. Pass `N' to diff?
Index: test/Plugins/Wti/Wti.Forms.Test/Wti.Forms.Test.csproj
===================================================================
diff -u -r0cc887bb46e8cd47745f5743311902faa4c6bc87 -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- test/Plugins/Wti/Wti.Forms.Test/Wti.Forms.Test.csproj (.../Wti.Forms.Test.csproj) (revision 0cc887bb46e8cd47745f5743311902faa4c6bc87)
+++ test/Plugins/Wti/Wti.Forms.Test/Wti.Forms.Test.csproj (.../Wti.Forms.Test.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -85,11 +85,11 @@
{f49bd8b2-332a-4c91-a196-8cce0a2c7d98}
DelftTools.Utils
-
+
{d64e4f0e-e341-496f-82b2-941ad202b4e3}
Wti.Calculation
-
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Wti.Data
Index: test/Plugins/Wti/Wti.IO.Test/Wti.IO.Test.csproj
===================================================================
diff -u -r2423a70958e7fecfc92afa462c34194cc695a81e -r53a2d662c6893cb7e63dc150aaab6c2b3e9db769
--- test/Plugins/Wti/Wti.IO.Test/Wti.IO.Test.csproj (.../Wti.IO.Test.csproj) (revision 2423a70958e7fecfc92afa462c34194cc695a81e)
+++ test/Plugins/Wti/Wti.IO.Test/Wti.IO.Test.csproj (.../Wti.IO.Test.csproj) (revision 53a2d662c6893cb7e63dc150aaab6c2b3e9db769)
@@ -57,7 +57,7 @@
-
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Wti.Data
@@ -69,7 +69,7 @@
{EFA25023-CF6A-4FF7-8C42-B24D7F9509E1}
DelftTools.TestUtils
-
+
{955E574D-67CE-4347-AA6B-7DF8A04ED754}
Wti.Data.TestUtil