Index: Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Properties/Resources.Designer.cs =================================================================== diff -u -r5eb251659313f12d82ee14e5703572ae09455e07 -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 5eb251659313f12d82ee14e5703572ae09455e07) +++ Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18444 +// Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -77,14 +77,5 @@ return ResourceManager.GetString("PipingCalculation_Validate_Lacks_surfaceline_uplift", resourceCulture); } } - - /// - /// Looks up a localized string similar to Het profiel '{0}' bevat geen waterdoorlatende laag.. - /// - internal static string PipingProfileCreator_No_aquifer_layer { - get { - return ResourceManager.GetString("PipingProfileCreator_No_aquifer_layer", resourceCulture); - } - } } } Index: Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Properties/Resources.resx =================================================================== diff -u -r5eb251659313f12d82ee14e5703572ae09455e07 -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Properties/Resources.resx (.../Resources.resx) (revision 5eb251659313f12d82ee14e5703572ae09455e07) +++ Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Properties/Resources.resx (.../Resources.resx) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -123,7 +123,4 @@ Een dwarsdoorsnede moet geselecteerd zijn om een Uplift berekening uit te kunnen voeren. - - Het profiel '{0}' bevat geen waterdoorlatende laag. - \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs =================================================================== diff -u -rab8195118fb8a60050a3949f6591ce20b15105c6 -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision ab8195118fb8a60050a3949f6591ce20b15105c6) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -79,15 +79,6 @@ } /// - /// Looks up a localized string similar to Geen waterdoorlatende laag gevonden voor het profiel.. - /// - internal static string Error_Cannot_Construct_PipingSoilProfile_Without_Aquifer_Layer { - get { - return ResourceManager.GetString("Error_Cannot_Construct_PipingSoilProfile_Without_Aquifer_Layer", resourceCulture); - } - } - - /// /// Looks up a localized string similar to Geen lagen gevonden voor het profiel.. /// internal static string Error_Cannot_Construct_PipingSoilProfile_Without_Layers { Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx =================================================================== diff -u -rab8195118fb8a60050a3949f6591ce20b15105c6 -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx (.../Resources.resx) (revision ab8195118fb8a60050a3949f6591ce20b15105c6) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx (.../Resources.resx) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -117,9 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Geen waterdoorlatende laag gevonden voor het profiel. - Geen lagen gevonden voor het profiel. Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.Designer.cs =================================================================== diff -u -r2da86d14cee084c7d6bfa52136d387cdcdb0a025 -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 2da86d14cee084c7d6bfa52136d387cdcdb0a025) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -70,24 +70,6 @@ } /// - /// Looks up a localized string similar to Kan geen 2D en 1D lagen combineren in een profiel.. - /// - public static string Error_Cannot_combine_2D_and_1D_layers_in_profile { - get { - return ResourceManager.GetString("Error_Cannot_combine_2D_and_1D_layers_in_profile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Collecties van de x en y coordinaten van lijnen vereisen een lengte van 4.. - /// - public static string Error_Collections_of_lines_coordinates_need_length_of_0_ { - get { - return ResourceManager.GetString("Error_Collections_of_lines_coordinates_need_length_of_0_", resourceCulture); - } - } - - /// /// Looks up a localized string similar to Het bestandspad '{0}' verwijst naar een map die niet bestaat.. /// public static string Error_Directory_in_path_0_missing { @@ -232,15 +214,6 @@ } /// - /// Looks up a localized string similar to Er is een onverwachte fout opgetreden bij het inlezen van het profiel.. - /// - public static string PipingSoilProfileReader_Unexepected_error_occured { - get { - return ResourceManager.GetString("PipingSoilProfileReader_Unexepected_error_occured", resourceCulture); - } - } - - /// /// Looks up a localized string similar to Het bestand op '{0}' is niet geschikt om dwarsdoorsneden uit te lezen (Verwachte header: locationid;X1;Y1;Z1).. /// public static string PipingSurfaceLinesCsvReader_File_0_invalid_header { Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.resx =================================================================== diff -u -r2da86d14cee084c7d6bfa52136d387cdcdb0a025 -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.resx (.../Resources.resx) (revision 2da86d14cee084c7d6bfa52136d387cdcdb0a025) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Properties/Resources.resx (.../Resources.resx) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -117,9 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Kan geen 2D en 1D lagen combineren in een profiel. - Kan geen 1D profiel bepalen wanneer segmenten in een 2D laag verticaal lopen op de gekozen positie: x = {0}. @@ -162,9 +159,6 @@ Ondergrondprofiel in database bevat geen geldige waarde in kolom {0}. - - Er is een onverwachte fout opgetreden bij het inlezen van het profiel. - Het bestand op '{0}' is niet geschikt om dwarsdoorsneden uit te lezen (Verwachte header: locationid;X1;Y1;Z1). @@ -186,9 +180,6 @@ De database heeft niet de vereiste versie informatie. Vereiste versie is: {0}. - - Collecties van de x en y coordinaten van lijnen vereisen een lengte van 4. - Kon profiel '{0}' niet opbouwen vanuit de gegevens uit de database. Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilProfileTest.cs =================================================================== diff -u -r97c9e382dffcf32dc34d2e05e6a8a475b833ebd4 -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilProfileTest.cs (.../PipingSoilProfileTest.cs) (revision 97c9e382dffcf32dc34d2e05e6a8a475b833ebd4) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilProfileTest.cs (.../PipingSoilProfileTest.cs) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -53,6 +53,21 @@ var message = Assert.Throws(test).Message; Assert.AreEqual(Properties.Resources.Error_Cannot_Construct_PipingSoilProfile_Without_Layers, message); } - + + [Test] + [TestCase(null)] + [TestCase("")] + [TestCase("some name")] + public void ToString_WithName_ReturnsName(string name) + { + // Setup + var profile = new PipingSoilProfile(name, 0.0, new[] + { + new PipingSoilLayer(0.0) + }); + + // Call & Assert + Assert.AreEqual(name, profile.ToString()); + } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Point2DTest.cs =================================================================== diff -u -r2da86d14cee084c7d6bfa52136d387cdcdb0a025 -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Point2DTest.cs (.../Point2DTest.cs) (revision 2da86d14cee084c7d6bfa52136d387cdcdb0a025) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Point2DTest.cs (.../Point2DTest.cs) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -51,6 +51,32 @@ } [Test] + public void Equals_ToNull_ReturnsFalse() + { + // Setup + var point = new Point2D(); + + // Call + var result = point.Equals(null); + + // Assert + Assert.IsFalse(result); + } + + [Test] + public void Equals_ToOtherType_ReturnsFalse() + { + // Setup + var point = new Point2D(); + + // Call + var result = point.Equals(new Point3D()); + + // Assert + Assert.IsFalse(result); + } + + [Test] public void Equals_ToItself_ReturnsTrue() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Point3DTest.cs =================================================================== diff -u -ra950714ad9510756331d862aa35695fa0b2ed03b -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Point3DTest.cs (.../Point3DTest.cs) (revision a950714ad9510756331d862aa35695fa0b2ed03b) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Point3DTest.cs (.../Point3DTest.cs) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -36,6 +36,32 @@ } [Test] + public void Equals_ToNull_ReturnsFalse() + { + // Setup + var point = new Point3D(); + + // Call + var result = point.Equals(null); + + // Assert + Assert.IsFalse(result); + } + + [Test] + public void Equals_ToOtherType_ReturnsFalse() + { + // Setup + var point = new Point3D(); + + // Call + var result = point.Equals(new Point2D()); + + // Assert + Assert.IsFalse(result); + } + + [Test] public void Equals_ToItself_ReturnsTrue() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Segment2DTest.cs =================================================================== diff -u -r602479eb3666493485aee246d56b08958a6fc958 -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Segment2DTest.cs (.../Segment2DTest.cs) (revision 602479eb3666493485aee246d56b08958a6fc958) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Segment2DTest.cs (.../Segment2DTest.cs) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -118,6 +118,17 @@ } [Test] + public void Equals_WithOtherObjectType_ReturnsFalse() + { + // Setup + var random = new Random(22); + var segment = new Segment2D(new Point2D(random.NextDouble(), random.NextDouble()), new Point2D(random.NextDouble(), random.NextDouble())); + + // Call & Assert + Assert.IsFalse(segment.Equals(new Point2D(0.0,0.0))); + } + + [Test] public void Equals_SegmentWithTwoPointsWithSameXY_ReturnsTrue() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilLayer2DTest.cs =================================================================== diff -u -r602479eb3666493485aee246d56b08958a6fc958 -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilLayer2DTest.cs (.../SoilLayer2DTest.cs) (revision 602479eb3666493485aee246d56b08958a6fc958) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilLayer2DTest.cs (.../SoilLayer2DTest.cs) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -25,6 +25,192 @@ } [Test] + [TestCase(1e-8)] + [TestCase(1)] + public void OuterLoop_TwoDisconnectedSegment_ThrowsArgumentException(double diff) + { + // Setup + var layer = new SoilLayer2D(); + var pointA = new Point2D(0.0, 0.0); + var pointB = new Point2D(1.0, 0.0); + var pointC = new Point2D(0.0, diff); + + // Call + TestDelegate test = () => layer.OuterLoop = new List + { + new Segment2D(pointA, pointB), + new Segment2D(pointB, pointC) + }; + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("De segmenten van de geometrie van de laag vormen geen lus.", exception.Message); + } + + [Test] + [TestCase(1e-8)] + [TestCase(1)] + public void OuterLoop_ThreeDisconnectedSegment_ThrowsArgumentException(double diff) + { + // Setup + var layer = new SoilLayer2D(); + var pointA = new Point2D(0.0,0.0); + var pointB = new Point2D(1.0,0.0); + var pointC = new Point2D(1.0,1.0); + var pointD = new Point2D(0.0,diff); + + // Call + TestDelegate test = () => layer.OuterLoop = new List + { + new Segment2D(pointA,pointB), + new Segment2D(pointB,pointC), + new Segment2D(pointC,pointD), + }; + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("De segmenten van de geometrie van de laag vormen geen lus.", exception.Message); + } + + [Test] + public void OuterLoop_TwoConnectedSegment_SetsNewLoop() + { + // Setup + var layer = new SoilLayer2D(); + var pointA = new Point2D(0.0, 0.0); + var pointB = new Point2D(1.0, 0.0); + + // Call + layer.OuterLoop = new List + { + new Segment2D(pointA,pointB), + new Segment2D(pointB,pointA) + }; + + // Assert + Assert.NotNull(layer.OuterLoop); + Assert.AreEqual(new Segment2D(pointA,pointB), layer.OuterLoop[0]); + Assert.AreEqual(new Segment2D(pointB,pointA), layer.OuterLoop[1]); + } + + [Test] + public void OuterLoop_ThreeConnectedSegment_SetsNewLoop() + { + // Setup + var layer = new SoilLayer2D(); + var pointA = new Point2D(0.0, 0.0); + var pointB = new Point2D(1.0, 0.0); + var pointC = new Point2D(1.0, 1.0); + + // Call + layer.OuterLoop = new List + { + new Segment2D(pointA,pointB), + new Segment2D(pointB,pointC), + new Segment2D(pointC,pointA) + }; + + // Assert + Assert.NotNull(layer.OuterLoop); + Assert.AreEqual(new Segment2D(pointA,pointB), layer.OuterLoop[0]); + Assert.AreEqual(new Segment2D(pointB,pointC), layer.OuterLoop[1]); + Assert.AreEqual(new Segment2D(pointC,pointA), layer.OuterLoop[2]); + } + + [Test] + [TestCase(1e-8)] + [TestCase(1)] + public void AddInnerLoop_TwoDisconnectedSegment_ThrowsArgumentException(double diff) + { + // Setup + var layer = new SoilLayer2D(); + var pointA = new Point2D(0.0, 0.0); + var pointB = new Point2D(1.0, 0.0); + var pointC = new Point2D(0.0, diff); + + // Call + TestDelegate test = () => layer.AddInnerLoop(new List + { + new Segment2D(pointA, pointB), + new Segment2D(pointB, pointC) + }); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("De segmenten van de geometrie van de laag vormen geen lus.", exception.Message); + } + + [Test] + [TestCase(1e-8)] + [TestCase(1)] + public void AddInnerLoop_ThreeDisconnectedSegment_ThrowsArgumentException(double diff) + { + // Setup + var layer = new SoilLayer2D(); + var pointA = new Point2D(0.0,0.0); + var pointB = new Point2D(1.0,0.0); + var pointC = new Point2D(1.0,1.0); + var pointD = new Point2D(0.0,diff); + + // Call + TestDelegate test = () => layer.AddInnerLoop(new List + { + new Segment2D(pointA,pointB), + new Segment2D(pointB,pointC), + new Segment2D(pointC,pointD), + }); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("De segmenten van de geometrie van de laag vormen geen lus.", exception.Message); + } + + [Test] + public void AddInnerLoop_TwoConnectedSegment_SetsNewLoop() + { + // Setup + var layer = new SoilLayer2D(); + var pointA = new Point2D(0.0, 0.0); + var pointB = new Point2D(1.0, 0.0); + + // Call + layer.AddInnerLoop(new List + { + new Segment2D(pointA,pointB), + new Segment2D(pointB,pointA) + }); + + // Assert + Assert.AreEqual(1, layer.InnerLoops.Count()); + Assert.AreEqual(new Segment2D(pointA, pointB), layer.InnerLoops.ElementAt(0)[0]); + Assert.AreEqual(new Segment2D(pointB, pointA), layer.InnerLoops.ElementAt(0)[1]); + } + + [Test] + public void AddInnerLoop_ThreeConnectedSegment_SetsNewLoop() + { + // Setup + var layer = new SoilLayer2D(); + var pointA = new Point2D(0.0, 0.0); + var pointB = new Point2D(1.0, 0.0); + var pointC = new Point2D(1.0, 1.0); + + // Call + layer.AddInnerLoop(new List + { + new Segment2D(pointA,pointB), + new Segment2D(pointB,pointC), + new Segment2D(pointC,pointA) + }); + + // Assert + Assert.AreEqual(1, layer.InnerLoops.Count()); + Assert.AreEqual(new Segment2D(pointA,pointB), layer.InnerLoops.ElementAt(0)[0]); + Assert.AreEqual(new Segment2D(pointB, pointC), layer.InnerLoops.ElementAt(0)[1]); + Assert.AreEqual(new Segment2D(pointC, pointA), layer.InnerLoops.ElementAt(0)[2]); + } + + [Test] public void AsPipingSoilLayers_DefaultConstructed_ReturnsEmptyCollectionWithMaxValueBottom() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilProfileBuilder2DTest.cs =================================================================== diff -u -r602479eb3666493485aee246d56b08958a6fc958 -rcfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilProfileBuilder2DTest.cs (.../SoilProfileBuilder2DTest.cs) (revision 602479eb3666493485aee246d56b08958a6fc958) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Builders/SoilProfileBuilder2DTest.cs (.../SoilProfileBuilder2DTest.cs) (revision cfba2b11da9ac0bb1daf377b8dcb15f7c84e0cfb) @@ -39,6 +39,45 @@ } [Test] + public void Add_LayerWithVerticalLineOnXInXml_ThrowsSoilProfileBuilderException() + { + // Setup + var profileName = "SomeProfile"; + var atX = 0.0; + var builder = new SoilProfileBuilder2D(profileName, atX); + + SoilLayer2D soilLayer = new SoilLayer2D + { + OuterLoop = new List { + new Segment2D + ( + new Point2D(atX,0.0), + new Point2D(atX,1.0) + ), + new Segment2D( + + new Point2D(atX,1.0), + new Point2D(0.5,0.5) + ), + new Segment2D( + + new Point2D(0.5,0.5), + new Point2D(atX,0.0) + ) + } + }; + + // Call + TestDelegate test = () => builder.Add(soilLayer); + + // Assert + var exception = Assert.Throws(test); + Assert.IsInstanceOf(exception.InnerException); + var message = string.Format("Kan geen 1D profiel bepalen wanneer segmenten in een 2D laag verticaal lopen op de gekozen positie: x = {0}.", atX); + Assert.AreEqual(message, exception.Message); + } + + [Test] public void Build_WithOutLayers_ThrowsSoilProfileBuilderException() { // Setup