Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectFiles/Kunstwerken.csv =================================================================== diff -u -r1d6be87de63acfac543d4b90aaf0618d3203b0c3 -r83c343bc1fee0c7092c9d9a5ffe36fd9ee6b1aa6 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectFiles/Kunstwerken.csv (.../Kunstwerken.csv) (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectFiles/Kunstwerken.csv (.../Kunstwerken.csv) (revision 83c343bc1fee0c7092c9d9a5ffe36fd9ee6b1aa6) @@ -1,17 +1,9 @@ Namespace;Identificatie;Versie;Kunstwerken.identificatie;Parameter.code;Parameter.omschrijving;Grootheid.code;Grootheid.omschrijving;Eenheid.code;Eenheid.omschrijving;Hoedanigheid.code;Hoedanigheid.omschrijving;Waardebepalingsmethode.code;Waardebepalingsmethode.codespace;Waardebewerkingsmethode.code;Waardebewerkingsmethode.codespace;AlphanumeriekeWaarde;NumeriekeWaarde;Standarddeviatie.variance;Boolean;Kwaliteitsoordeel.code 12;KUNST1;1;KW_HOOGTE1;KUNSTW;Kunstwerk;ORIENTATIE;Ori�ntatie;grad;graden;;;Schematiseringshandleiding;;;;;45;0;0; 12;KUNST1;1;KW_HOOGTE2;KRUIN;Kruin;NIVEAU;Niveau;m;meter;;;Schematiseringshandleiding;;;;;5.9;0.01;1; -12;KUNST1;1;KW_HOOGTE3;STROM;Stroming;BREEDTE;Breedte;m;meter;;;Schematiseringshandleiding;;;;;18.5;0.05;1; +12;KUNST1;1;KW_HOOGTE3;STROM;Stroming;BREEDTE;Breedte;m;meter;;;Schematiseringshandleiding;;;;;18.5;0.05;0; 12;KUNST1;1;KW_HOOGTE4;OVS;Overslag;DEBIET;Debiet;m3/s/m;kubieke meter per seconden per meter;;;Schematiseringshandleiding;;;;;0.1;0.15;0; 12;KUNST1;1;KW_HOOGTE5;KRUIN;Kruin;BREEDTE;Breedte;m;meter;;;Schematiseringshandleiding;;;;;4;0.05;1; 12;KUNST1;1;KW_HOOGTE6;KUNSTW;Kunstwerk;FAALKANS;Faalkans;;;;;Schematiseringshandleiding;;;;;1;0;0; 12;KUNST1;1;KW_HOOGTE7;KOMBERG;Komberging;OPPERVLAKTE;Oppervlakte;m2;vierkante meter;;;Schematiseringshandleiding;;;;;500000;0.1;0; -12;KUNST1;1;KW_HOOGTE8;PEIL;Peil;VERHOGING;Verhoging;m;meter;;;Schematiseringshandleiding;;;;;6.5;0.1;1; -12;KUNST2;1;KW_HOOGTE1;KUNSTW;Kunstwerk;ORIENTATIE;Ori�ntatie;grad;graden;;;Schematiseringshandleiding;;;;;;0;0; -12;KUNST2;1;KW_HOOGTE2;KRUIN;Kruin;NIVEAU;Niveau;m;meter;;;Schematiseringshandleiding;;;;;;0.01;1; -12;KUNST2;1;KW_HOOGTE3;STROM;Stroming;BREEDTE;Breedte;m;meter;;;Schematiseringshandleiding;;;;;;0.05;1; -12;KUNST2;1;KW_HOOGTE4;OVS;Overslag;DEBIET;Debiet;m3/s/m;kubieke meter per seconden per meter;;;Schematiseringshandleiding;;;;;;0.15;0; -12;KUNST2;1;KW_HOOGTE5;KRUIN;Kruin;BREEDTE;Breedte;m;meter;;;Schematiseringshandleiding;;;;;;0.05;1; -12;KUNST2;1;KW_HOOGTE6;KUNSTW;Kunstwerk;FAALKANS;Faalkans;;;;;Schematiseringshandleiding;;;;;1;0;0; -12;KUNST2;1;KW_HOOGTE7;KOMBERG;Komberging;OPPERVLAKTE;Oppervlakte;m2;vierkante meter;;;Schematiseringshandleiding;;;;;;0.1;0; -12;KUNST2;1;KW_HOOGTE8;PEIL;Peil;VERHOGING;Verhoging;m;meter;;;Schematiseringshandleiding;;;;;;0.1;1; +12;KUNST1;1;KW_HOOGTE8;PEIL;Peil;VERHOGING;Verhoging;m;meter;;;Schematiseringshandleiding;;;;;6.5;0.1;0; Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIcompleteCsv/Kunstwerken.csv =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIcompleteCsv/Kunstwerken.csv (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIcompleteCsv/Kunstwerken.csv (revision 83c343bc1fee0c7092c9d9a5ffe36fd9ee6b1aa6) @@ -0,0 +1,10 @@ +Namespace;Identificatie;Versie;Kunstwerken.identificatie;Parameter.code;Parameter.omschrijving;Grootheid.code;Grootheid.omschrijving;Eenheid.code;Eenheid.omschrijving;Hoedanigheid.code;Hoedanigheid.omschrijving;Waardebepalingsmethode.code;Waardebepalingsmethode.codespace;Waardebewerkingsmethode.code;Waardebewerkingsmethode.codespace;AlphanumeriekeWaarde;NumeriekeWaarde;Standarddeviatie.variance;Boolean;Kwaliteitsoordeel.code +12;KUNST1;1;KW_HOOGTE1;KUNSTW;Kunstwerk;ORIENTATIE;Ori�ntatie;grad;graden;;;Schematiseringshandleiding;;;;0;-45;0;0; +12;KUNST1;1;KW_HOOGTE2;KRUIN;Kruin;NIVEAU;Niveau;m;meter;;;Schematiseringshandleiding;;;;;5.9;0.01;1; +12;KUNST1;1;KW_HOOGTE2;KRUIN;Kruin;NIVEAU;Niveau;m;meter;;;Schematiseringshandleiding;;;;;5.9;0.01;1; +12;KUNST1;1;KW_HOOGTE3;STROM;Stroming;BREEDTE;Breedte;m;meter;;;Schematiseringshandleiding;;;;;18.5;0.05;1; +12;KUNST1;1;KW_HOOGTE4;OVS;Overslag;DEBIET;Debiet;m3/s/m;kubieke meter per seconden per meter;;;Schematiseringshandleiding;;;;;0.1;0.15;0; +12;KUNST1;1;KW_HOOGTE5;KRUIN;Kruin;BREEDTE;Breedte;m;meter;;;Schematiseringshandleiding;;;;;4;0.05;1; +12;KUNST1;1;KW_HOOGTE6;KUNSTW;Kunstwerk;FAALKANS;Faalkans;;;;;Schematiseringshandleiding;;;;;1;0;0; +12;KUNST1;1;KW_HOOGTE7;KOMBERG;Komberging;OPPERVLAKTE;Oppervlakte;m2;vierkante meter;;;Schematiseringshandleiding;;;;;500000;0.1;0; +12;KUNST1;1;KW_HOOGTE8;PEIL;Peil;VERHOGING;Verhoging;m;meter;;;Schematiseringshandleiding;;;;;6.5;0.1;1; Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIcompleteCsv/Kunstwerken.dbf =================================================================== diff -u Binary files differ Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIcompleteCsv/Kunstwerken.prj =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIcompleteCsv/Kunstwerken.prj (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIcompleteCsv/Kunstwerken.prj (revision 83c343bc1fee0c7092c9d9a5ffe36fd9ee6b1aa6) @@ -0,0 +1 @@ +PROJCS["RD_New",GEOGCS["GCS_Amersfoort",DATUM["D_Amersfoort",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.017453292519943295]],PROJECTION["Double_Stereographic"],PARAMETER["False_Easting",155000.0],PARAMETER["False_Northing",463000.0],PARAMETER["Central_Meridian",5.38763888888889],PARAMETER["Scale_Factor",0.9999079],PARAMETER["Latitude_Of_Origin",52.15616055555555],UNIT["Meter",1.0]] \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIcompleteCsv/Kunstwerken.shp =================================================================== diff -u Binary files differ Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIcompleteCsv/Kunstwerken.shx =================================================================== diff -u Binary files differ Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresImporter.cs =================================================================== diff -u -r1d6be87de63acfac543d4b90aaf0618d3203b0c3 -r83c343bc1fee0c7092c9d9a5ffe36fd9ee6b1aa6 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresImporter.cs (.../HeightStructuresImporter.cs) (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresImporter.cs (.../HeightStructuresImporter.cs) (revision 83c343bc1fee0c7092c9d9a5ffe36fd9ee6b1aa6) @@ -78,7 +78,7 @@ if (!groupedStructureParameterRows.ContainsKey(id)) { log.WarnFormat(RingtoetsCommonIOResources.StructuresImporter_CreateSpecificStructures_no_structuresdata_for_location_0_, id); - log.ErrorFormat("Kunstwerk nummer {0} wordt overgeslagen.", i); + log.ErrorFormat("Kunstwerk nummer {0} wordt overgeslagen.", i+1); continue; } @@ -87,7 +87,7 @@ ValidationResult parameterRowsValidationResult = StructuresParameterRowsValidator.ValidateHeightStructuresParameters(structureParameterRows); if (!parameterRowsValidationResult.IsValid) { - LogMessages(parameterRowsValidationResult, i); + LogMessages(parameterRowsValidationResult, i+1); continue; } Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/HeightStructuresImporterTest.cs =================================================================== diff -u -r423010168fe01b2373e9be55f047659911e670f5 -r83c343bc1fee0c7092c9d9a5ffe36fd9ee6b1aa6 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/HeightStructuresImporterTest.cs (.../HeightStructuresImporterTest.cs) (revision 423010168fe01b2373e9be55f047659911e670f5) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/HeightStructuresImporterTest.cs (.../HeightStructuresImporterTest.cs) (revision 83c343bc1fee0c7092c9d9a5ffe36fd9ee6b1aa6) @@ -19,13 +19,125 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; +using System.Collections.Generic; +using System.IO; +using Core.Common.Base; +using Core.Common.Base.Geometry; +using Core.Common.TestUtil; using NUnit.Framework; +using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.IO.FileImporters; +using Ringtoets.HeightStructures.Data; namespace Ringtoets.HeightStructures.IO.Test { [TestFixture] public class HeightStructuresImporterTest { - + private readonly ObservableList testImportTarget = new ObservableList(); + private readonly ReferenceLine testReferenceLine = new ReferenceLine(); + private readonly string testFilePath = string.Empty; + + [Test] + public void Constructor_Always_ExcpectedValues() + { + // Call + var importer = new HeightStructuresImporter(testImportTarget, testReferenceLine, testFilePath); + + // Assert + Assert.IsInstanceOf>>(importer); + } + + [Test] + public void Constructor_ImportTargetNull_ThrowArgumentNullException() + { + // Call + TestDelegate call = () => new HeightStructuresImporter(null, testReferenceLine, testFilePath); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("importTarget", exception.ParamName); + } + + [Test] + public void Import_ValidImcompleteFile_LogAndTrue() + { + // Setup + string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("Structures", "CorrectFiles", "Kunstwerken.shp")); + + var referencePoints = new List + { + new Point2D(131144.094, 549979.893), + new Point2D(131538.705, 548316.752), + new Point2D(135878.442, 532149.859), + new Point2D(131225.017, 548395.948), + new Point2D(131270.38, 548367.462), + new Point2D(131507.119, 548322.951) + }; + ReferenceLine referenceLine = new ReferenceLine(); + referenceLine.SetGeometry(referencePoints); + var structuresImporter = new HeightStructuresImporter(new ObservableList(), referenceLine, filePath); + + // Call + bool importResult = false; + Action call = () => importResult = structuresImporter.Import(); + + // Assert + string[] expectedMessages = + { + "Kan geen geldige gegevens vinden voor kunstwerklocatie met KWKIDENT 'KUNST2'.", + "Kunstwerk nummer 2 wordt overgeslagen.", + "Kan geen geldige gegevens vinden voor kunstwerklocatie met KWKIDENT 'KUNST3'.", + "Kunstwerk nummer 3 wordt overgeslagen.", + "Kan geen geldige gegevens vinden voor kunstwerklocatie met KWKIDENT 'KUNST4'.", + "Kunstwerk nummer 4 wordt overgeslagen.", + "Kan geen geldige gegevens vinden voor kunstwerklocatie met KWKIDENT 'KUNST5'.", + "Kunstwerk nummer 5 wordt overgeslagen.", + "Kan geen geldige gegevens vinden voor kunstwerklocatie met KWKIDENT 'KUNST6'.", + "Kunstwerk nummer 6 wordt overgeslagen." + }; + TestHelper.AssertLogMessagesAreGenerated(call, expectedMessages); + Assert.IsTrue(importResult); + } + + [Test] + public void Import_InvalidCsvFile_LogAndTrue() + { + // Setup + string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, + Path.Combine("Structures", "CorrectShpIcompleteCsv", "Kunstwerken.shp")); + + string csvFilePath = Path.ChangeExtension(filePath, ".csv"); + + var referencePoints = new List + { + new Point2D(131144.094, 549979.893), + new Point2D(131538.705, 548316.752), + new Point2D(135878.442, 532149.859), + new Point2D(131225.017, 548395.948), + new Point2D(131270.38, 548367.462), + new Point2D(131507.119, 548322.951) + }; + ReferenceLine referenceLine = new ReferenceLine(); + referenceLine.SetGeometry(referencePoints); + var structuresImporter = new HeightStructuresImporter(new ObservableList(), referenceLine, filePath); + + // Call + bool importResult = false; + Action call = () => importResult = structuresImporter.Import(); + + // Assert + string[] expectedMessages = + { + "Parameter 'KW_HOOGTE2' komt meermaals voor. De eerste specificatie wordt gebruikt.", + "De variantie van de stroomvoerende breedte bij bodembescherming lognormaalverdeling heeft een ongeldige waarde.", + "De variantie van de toegestane peilverhoging op het kombergend oppervlak lognormaalverdeling heeft een ongeldige waarde.", + "Kunstwerk nummer 1 wordt overgeslagen." + }; + TestHelper.AssertLogMessagesAreGenerated(call, expectedMessages); + Assert.IsTrue(importResult); + } } } \ No newline at end of file Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/Ringtoets.HeightStructures.IO.Test.csproj =================================================================== diff -u -r423010168fe01b2373e9be55f047659911e670f5 -r83c343bc1fee0c7092c9d9a5ffe36fd9ee6b1aa6 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/Ringtoets.HeightStructures.IO.Test.csproj (.../Ringtoets.HeightStructures.IO.Test.csproj) (revision 423010168fe01b2373e9be55f047659911e670f5) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.IO.Test/Ringtoets.HeightStructures.IO.Test.csproj (.../Ringtoets.HeightStructures.IO.Test.csproj) (revision 83c343bc1fee0c7092c9d9a5ffe36fd9ee6b1aa6) @@ -58,6 +58,26 @@ + + {3BBFD65B-B277-4E50-AE6D-BD24C3434609} + Core.Common.Base + + + {D749EE4C-CE50-4C17-BF01-9A953028C126} + Core.Common.TestUtil + + + {D4200F43-3F72-4F42-AF0A-8CED416A38EC} + Ringtoets.Common.Data + + + {52BA7627-CBAB-4209-BE77-3B5F31378277} + Ringtoets.Common.IO + + + {1C0017D8-35B5-4CA0-8FC7-A83F46DBDC99} + Ringtoets.HeightStructures.Data + {D63FCFEC-34E8-4C68-8B4F-99338D2447AC} Ringtoets.HeightStructures.IO