Index: Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/StructuresImporter.cs
===================================================================
diff -u -r423010168fe01b2373e9be55f047659911e670f5 -r1d6be87de63acfac543d4b90aaf0618d3203b0c3
--- Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/StructuresImporter.cs (.../StructuresImporter.cs) (revision 423010168fe01b2373e9be55f047659911e670f5)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/StructuresImporter.cs (.../StructuresImporter.cs) (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -47,12 +47,12 @@
///
/// Initializes a new instance of .
///
+ /// The import target.
/// The reference line used to check if the imported structures are intersecting it.
/// The path to the file to import from.
- /// The import target.
/// Thrown when ,
/// or is null.
- protected StructuresImporter(ReferenceLine referenceLine, string filePath, T importTarget)
+ protected StructuresImporter(T importTarget, ReferenceLine referenceLine, string filePath)
: base(filePath, importTarget)
{
if (referenceLine == null)
@@ -127,16 +127,7 @@
string csvFilePath = Path.ChangeExtension(FilePath, ".csv");
- StructuresCharacteristicsCsvReader rowsReader;
- try
- {
- rowsReader = new StructuresCharacteristicsCsvReader(csvFilePath);
- }
- catch (ArgumentException exception)
- {
- log.Error(exception.Message);
- return new ReadResult(true);
- }
+ var rowsReader = new StructuresCharacteristicsCsvReader(csvFilePath);
int totalNumberOfRows;
try
@@ -227,11 +218,6 @@
exception.Message);
log.Warn(message);
}
- catch (CriticalFileReadException exception)
- {
- log.Error(exception.Message);
- return new ReadResult(true);
- }
}
return new ReadResult(false)
{
Index: Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs
===================================================================
diff -u -r423010168fe01b2373e9be55f047659911e670f5 -r1d6be87de63acfac543d4b90aaf0618d3203b0c3
--- Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 423010168fe01b2373e9be55f047659911e670f5)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -22,7 +22,7 @@
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// Runtime Version:4.0.30319.18444
+// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -822,9 +822,9 @@
///
/// Looks up a localized string similar to Kan geen geldige gegevens vinden voor kunstwerklocatie met KWKIDENT '{0}'..
///
- public static string StructuresImporter_CreateSpecificStructures_no_structursdata_for_location_0_ {
+ public static string StructuresImporter_CreateSpecificStructures_no_structuresdata_for_location_0_ {
get {
- return ResourceManager.GetString("StructuresImporter_CreateSpecificStructures_no_structursdata_for_location_0_", resourceCulture);
+ return ResourceManager.GetString("StructuresImporter_CreateSpecificStructures_no_structuresdata_for_location_0_", resourceCulture);
}
}
@@ -875,34 +875,6 @@
}
///
- /// Looks up a localized string similar to Parameter '{0}' ontbreekt voor de kunstwerklocatie met KWKIDENT '{1}'..
- ///
- public static string StructuresImporter_ValidateParameterNames_Parameter_0_missing_for_structure_1_ {
- get {
- return ResourceManager.GetString("StructuresImporter_ValidateParameterNames_Parameter_0_missing_for_structure_1_", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Parameter '{0}' wordt herhaald voor de kunstwerklocatie met KWKIDENT '{1}'..
- ///
- public static string StructuresImporter_ValidateParameterNames_Parameter_0_repeated_for_structure_1_ {
- get {
- return ResourceManager.GetString("StructuresImporter_ValidateParameterNames_Parameter_0_repeated_for_structure_1_", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Kunstwerklocatie met KWKIDENT '{0}' bevat teveel parameters. De verwachte parameters zijn: '{1}'..
- ///
- public static string StructuresImporter_ValidateParameterNames_Structure_0_has_too_many_parameters_expected_parameters_1_ {
- get {
- return ResourceManager.GetString("StructuresImporter_ValidateParameterNames_Structure_0_has_too_many_parameters_exp" +
- "ected_parameters_1_", resourceCulture);
- }
- }
-
- ///
/// Looks up a localized string similar to Het kunstwerk heeft geen geldige waarde voor attribuut '{0}'..
///
public static string StructuresReader_GetNextStructure_Invalid_KWKIDENT {
Index: Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx
===================================================================
diff -u -r423010168fe01b2373e9be55f047659911e670f5 -r1d6be87de63acfac543d4b90aaf0618d3203b0c3
--- Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx (.../Resources.resx) (revision 423010168fe01b2373e9be55f047659911e670f5)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx (.../Resources.resx) (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -356,16 +356,7 @@
Inlezen van kunstwerkgegevens.
-
+
Kan geen geldige gegevens vinden voor kunstwerklocatie met KWKIDENT '{0}'.
-
- Kunstwerklocatie met KWKIDENT '{0}' bevat teveel parameters. De verwachte parameters zijn: '{1}'.
-
-
- Parameter '{0}' ontbreekt voor de kunstwerklocatie met KWKIDENT '{1}'.
-
-
- Parameter '{0}' wordt herhaald voor de kunstwerklocatie met KWKIDENT '{1}'.
-
\ No newline at end of file
Index: Ringtoets/Common/src/Ringtoets.Common.IO/Ringtoets.Common.IO.csproj
===================================================================
diff -u -r423010168fe01b2373e9be55f047659911e670f5 -r1d6be87de63acfac543d4b90aaf0618d3203b0c3
--- Ringtoets/Common/src/Ringtoets.Common.IO/Ringtoets.Common.IO.csproj (.../Ringtoets.Common.IO.csproj) (revision 423010168fe01b2373e9be55f047659911e670f5)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/Ringtoets.Common.IO.csproj (.../Ringtoets.Common.IO.csproj) (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -73,9 +73,11 @@
+
+
Index: Ringtoets/Common/src/Ringtoets.Common.IO/Structures/StructuresParameterRowsValidator.cs
===================================================================
diff -u
--- Ringtoets/Common/src/Ringtoets.Common.IO/Structures/StructuresParameterRowsValidator.cs (revision 0)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/Structures/StructuresParameterRowsValidator.cs (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -0,0 +1,221 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Ringtoets.Common.IO.Structures
+{
+ ///
+ /// This class contains validations methods for objects.
+ ///
+ public static class StructuresParameterRowsValidator
+ {
+ private static readonly Dictionary>> heightStructuresRules =
+ new Dictionary>>
+ {
+ {
+ "KW_HOOGTE1", OrientationOfTheNormalOfTheStructure
+ },
+ {
+ "KW_HOOGTE2", LevelOfCrestOfStructure
+ },
+ {
+ "KW_HOOGTE3", FlowWidthAtBottomProtection
+ },
+ {
+ "KW_HOOGTE4", CriticalOvertoppingDischarge
+ },
+ {
+ "KW_HOOGTE5", WidthOfFlowApertures
+ },
+ {
+ "KW_HOOGTE6", FailureProbabilityOfStructureGivenErosion
+ },
+ {
+ "KW_HOOGTE7", StorageStructureArea
+ },
+ {
+ "KW_HOOGTE8", AllowableIncreaseOfLevelForStorage
+ }
+ };
+
+ ///
+ /// Validates a collection of .
+ ///
+ /// The objects to validate.
+ /// A object containing the validation result.
+ /// Thrown when is null.
+ public static ValidationResult ValidateHeightStructuresParameters(IList structureParameterRows)
+ {
+ if (structureParameterRows == null)
+ {
+ throw new ArgumentNullException("structureParameterRows");
+ }
+
+ List warningMessages = new List();
+ List errorMessages = new List();
+
+ foreach (string name in heightStructuresRules.Keys)
+ {
+ int count = structureParameterRows.Count(row => row.ParameterId.Equals(name));
+
+ if (count < 1)
+ {
+ errorMessages.Add(string.Format("Parameter '{0}' ontbreekt.", name));
+ continue;
+ }
+
+ if (count > 1)
+ {
+ warningMessages.Add(string.Format("Parameter '{0}' komt meermaals voor. De eerste specificatie wordt gebruikt.", name));
+ }
+
+ errorMessages.AddRange(heightStructuresRules[name](structureParameterRows.First(row => row.ParameterId.Equals(name))));
+ }
+
+ return new ValidationResult(errorMessages, warningMessages);
+ }
+
+ #region HeightStructuesRules
+
+ private static List OrientationOfTheNormalOfTheStructure(StructuresParameterRow row)
+ {
+ List messages = new List();
+ double orientation = row.NumericalValue;
+ if (!(orientation >= 0 && orientation <= 360))
+ {
+ messages.Add("De oriëntatie van het kunstwerk valt buiten het bereik [0, 360].");
+ }
+ return messages;
+ }
+
+ private static List LevelOfCrestOfStructure(StructuresParameterRow row)
+ {
+ List messages = new List();
+ double meanCrestLevel = row.NumericalValue;
+ if (double.IsNaN(meanCrestLevel) || double.IsInfinity(meanCrestLevel))
+ {
+ messages.Add("De kerende hoogte van het kunstwerk heeft een ongeldige waarde.");
+ }
+ double variance = row.VarianceValue;
+ if (double.IsNaN(variance) || double.IsInfinity(variance) || variance < 0.0 || row.VarianceType != VarianceType.StandardDeviation)
+ {
+ messages.Add("De standaard afwijking van de kerende hoogte normaalverdeling heeft een ongeldige waarde.");
+ }
+ return messages;
+ }
+
+ private static List FlowWidthAtBottomProtection(StructuresParameterRow row)
+ {
+ List messages = new List();
+ double meanFlowWidth = row.NumericalValue;
+ if (double.IsNaN(meanFlowWidth) || double.IsInfinity(meanFlowWidth))
+ {
+ messages.Add("De stroomvoerende breedte bij bodembescherming van het kunstwerk heeft een ongeldige waarde.");
+ }
+ double variance = row.VarianceValue;
+ if (double.IsNaN(variance) || double.IsInfinity(variance) || variance < 0.0 || row.VarianceType != VarianceType.CoefficientOfVariation)
+ {
+ messages.Add("De variantie van de stroomvoerende breedte bij bodembescherming lognormaalverdeling heeft een ongeldige waarde.");
+ }
+ return messages;
+ }
+
+ private static List CriticalOvertoppingDischarge(StructuresParameterRow row)
+ {
+ List messages = new List();
+ double meanDischange = row.NumericalValue;
+ if (double.IsNaN(meanDischange) || double.IsInfinity(meanDischange))
+ {
+ messages.Add("Het kritieke overslagdebiet per strekkende meter van het kunstwerk heeft een ongeldige waarde.");
+ }
+ double variance = row.VarianceValue;
+ if (double.IsNaN(variance) || double.IsInfinity(variance) || variance < 0.0 || row.VarianceType != VarianceType.CoefficientOfVariation)
+ {
+ messages.Add("De variantie van de kritieke overslagdebiet per strekkende meter lognormaalverdeling heeft een ongeldige waarde.");
+ }
+ return messages;
+ }
+
+ private static List WidthOfFlowApertures(StructuresParameterRow row)
+ {
+ List messages = new List();
+ double meanWidth = row.NumericalValue;
+ if (double.IsNaN(meanWidth) || double.IsInfinity(meanWidth))
+ {
+ messages.Add("De breedte van de kruin van het kunstwerk heeft een ongeldige waarde.");
+ }
+ double variance = row.VarianceValue;
+ if (double.IsNaN(variance) || double.IsInfinity(variance) || variance < 0.0 || row.VarianceType != VarianceType.StandardDeviation)
+ {
+ messages.Add("De standaard afwijking van de breedte van de kruin normaalverdeling heeft een ongeldige waarde.");
+ }
+ return messages;
+ }
+
+ private static List FailureProbabilityOfStructureGivenErosion(StructuresParameterRow row)
+ {
+ List messages = new List();
+ double failureProbability = row.NumericalValue;
+ if (failureProbability < 0.0 || failureProbability > 1.0)
+ {
+ messages.Add("De waarde voor de faalkans van het kunstwerk valt buiten het bereik [0, 1].");
+ }
+ return messages;
+ }
+
+ private static List StorageStructureArea(StructuresParameterRow row)
+ {
+ List messages = new List();
+ double meanArea = row.NumericalValue;
+ if (double.IsNaN(meanArea) || double.IsInfinity(meanArea))
+ {
+ messages.Add("Het kombergend oppervlak van het kunstwerk heeft een ongeldige waarde.");
+ }
+ double variance = row.VarianceValue;
+ if (double.IsNaN(variance) || double.IsInfinity(variance) || variance < 0.0 || row.VarianceType != VarianceType.CoefficientOfVariation)
+ {
+ messages.Add("De variantie van de kombergend oppervlak lognormaalverdeling heeft een ongeldige waarde.");
+ }
+ return messages;
+ }
+
+ private static List AllowableIncreaseOfLevelForStorage(StructuresParameterRow row)
+ {
+ List messages = new List();
+ double meanAllowableIncrease = row.NumericalValue;
+ if (double.IsNaN(meanAllowableIncrease) || double.IsInfinity(meanAllowableIncrease))
+ {
+ messages.Add("De toegestane peilverhoging op het kombergend oppervlak van het kunstwerk heeft een ongeldige waarde.");
+ }
+ double variance = row.VarianceValue;
+ if (double.IsNaN(variance) || double.IsInfinity(variance) || variance < 0.0 || row.VarianceType != VarianceType.CoefficientOfVariation)
+ {
+ messages.Add("De variantie van de toegestane peilverhoging op het kombergend oppervlak lognormaalverdeling heeft een ongeldige waarde.");
+ }
+ return messages;
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
Index: Ringtoets/Common/src/Ringtoets.Common.IO/ValidationResult.cs
===================================================================
diff -u
--- Ringtoets/Common/src/Ringtoets.Common.IO/ValidationResult.cs (revision 0)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/ValidationResult.cs (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -0,0 +1,103 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Ringtoets.Common.IO
+{
+ ///
+ /// This class represents the result of a validation.
+ ///
+ public class ValidationResult
+ {
+ private readonly List warningMessages = new List();
+ private readonly List errorMessages = new List();
+
+ ///
+ /// Create a new instance of .
+ ///
+ /// The error messages for this .
+ /// Thrown when:
+ ///
+ /// - is null
+ /// - any message in is null, empty or consists of whitespace
+ ///
+ public ValidationResult(ICollection errorMessages)
+ {
+ if (errorMessages == null || errorMessages.Any(string.IsNullOrWhiteSpace))
+ {
+ throw new ArgumentException("errorMessages");
+ }
+
+ IsValid = errorMessages.Count < 1;
+ this.errorMessages.AddRange(errorMessages);
+ }
+
+ ///
+ /// Create a new instance of .
+ ///
+ /// The error messages for this .
+ /// The warning messages for this .
+ /// Thrown when:
+ ///
+ /// - or is null
+ /// - any message in or is null, empty or consists of whitespace
+ ///
+ public ValidationResult(ICollection errorMessages, List warningMessages) : this(errorMessages)
+ {
+ if (warningMessages == null || warningMessages.Any(string.IsNullOrWhiteSpace))
+ {
+ throw new ArgumentException("warningMessages");
+ }
+
+ this.warningMessages.AddRange(warningMessages);
+ }
+
+ ///
+ /// Gets a value which indicates whether the validation subject is valid.
+ ///
+ public bool IsValid { get; private set; }
+
+ ///
+ /// Gets the error messages resulting from the validation.
+ ///
+ public IEnumerable ErrorMessages
+ {
+ get
+ {
+ return errorMessages;
+ }
+ }
+
+ ///
+ /// Gets the warning messages resulting from the validation.
+ ///
+ public IEnumerable WarningMessages
+ {
+ get
+ {
+ return warningMessages;
+ }
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/StructuresImporterTest.cs
===================================================================
diff -u -r423010168fe01b2373e9be55f047659911e670f5 -r1d6be87de63acfac543d4b90aaf0618d3203b0c3
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/StructuresImporterTest.cs (.../StructuresImporterTest.cs) (revision 423010168fe01b2373e9be55f047659911e670f5)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/StructuresImporterTest.cs (.../StructuresImporterTest.cs) (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -19,13 +19,407 @@
// 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 System.Linq;
+using Core.Common.Base;
+using Core.Common.Base.Geometry;
+using Core.Common.Base.IO;
+using Core.Common.TestUtil;
+using Core.Common.Utils.Builders;
using NUnit.Framework;
+using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.Common.IO.FileImporters;
+using Ringtoets.Common.IO.Structures;
+using CoreCommonUtilsResources = Core.Common.Utils.Properties.Resources;
namespace Ringtoets.Common.IO.Test.FileImporters
{
[TestFixture]
public class StructuresImporterTest
{
-
+ private readonly ObservableList testImportTarget = new ObservableList();
+ private readonly ReferenceLine testReferenceLine = new ReferenceLine();
+ private readonly string testFilePath = string.Empty;
+
+ [Test]
+ public void Constructor_Always_ExpectedValues()
+ {
+ // Call
+ var importer = new TestStructuresImporter(testImportTarget, testReferenceLine, testFilePath);
+
+ // Assert
+ Assert.IsInstanceOf(importer);
+ }
+
+ [Test]
+ public void Constructor_ImportTargetNull_ThrowArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => new TestStructuresImporter(null, testReferenceLine, testFilePath);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("importTarget", exception.ParamName);
+ }
+
+ [Test]
+ public void Constructor_ReferenceLineNull_ThrowArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => new TestStructuresImporter(testImportTarget, null, testFilePath);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("referenceLine", exception.ParamName);
+ }
+
+ [Test]
+ public void Constructor_FilePathNull_ThrowArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => new TestStructuresImporter(testImportTarget, testReferenceLine, null);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("filePath", exception.ParamName);
+ }
+
+ [Test]
+ [TestCase("")]
+ [TestCase(" ")]
+ public void Import_FromInvalidEmptyPath_FalseAndLogError(string filePath)
+ {
+ // Setup
+ var testStructuresImporter = new TestStructuresImporter(testImportTarget, testReferenceLine, filePath);
+
+ // Call
+ var importResult = true;
+ Action call = () => importResult = testStructuresImporter.Import();
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ string[] messageArray = messages.ToArray();
+ string expectedMessage = new FileReaderErrorMessageBuilder(filePath)
+ .Build(CoreCommonUtilsResources.Error_Path_must_be_specified);
+ StringAssert.StartsWith(expectedMessage, messageArray[0]);
+ });
+ Assert.IsFalse(importResult);
+ }
+
+ [Test]
+ public void Import_FromPathContainingInvalidFileCharacters_FalseAndLogError()
+ {
+ // Setup
+ string filePath = "c:\\Invalid_Characters.shp";
+
+ var invalidFileNameChars = Path.GetInvalidFileNameChars();
+ var invalidPath = filePath.Replace('_', invalidFileNameChars[0]);
+
+ var testStructuresImporter = new TestStructuresImporter(testImportTarget, testReferenceLine, invalidPath);
+
+ // Call
+ var importResult = true;
+ Action call = () => importResult = testStructuresImporter.Import();
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ string message = messages.First();
+ string expectedMessage = new FileReaderErrorMessageBuilder(invalidPath)
+ .Build(string.Format(CoreCommonUtilsResources.Error_Path_cannot_contain_Characters_0_, string.Join(", ", Path.GetInvalidFileNameChars())));
+ StringAssert.StartsWith(expectedMessage, message);
+ });
+ Assert.IsFalse(importResult);
+ }
+
+ [Test]
+ public void Import_FromDirectoryPath_FalseAndLogError()
+ {
+ // Setup
+ string folderPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO) + Path.DirectorySeparatorChar;
+
+ var testStructuresImporter = new TestStructuresImporter(testImportTarget, testReferenceLine, folderPath);
+
+ // Call
+ var importResult = true;
+ Action call = () => importResult = testStructuresImporter.Import();
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ string[] messageArray = messages.ToArray();
+ string expectedMessage = new FileReaderErrorMessageBuilder(folderPath)
+ .Build(CoreCommonUtilsResources.Error_Path_must_not_point_to_empty_file_name);
+ StringAssert.StartsWith(expectedMessage, messageArray[0]);
+ });
+ Assert.IsFalse(importResult);
+ }
+
+ [Test]
+ [TestCase("Multiple_Polygon_with_ID.shp")]
+ [TestCase("Multiple_PolyLine_with_ID.shp")]
+ [TestCase("Single_Multi-Polygon_with_ID.shp")]
+ [TestCase("Single_Multi-PolyLine_with_ID.shp")]
+ [TestCase("Single_Polygon_with_ID.shp")]
+ [TestCase("Single_PolyLine_with_ID.shp")]
+ public void Import_FromFileWithNonPointFeatures_FalseAndLogError(string shapeFileName)
+ {
+ // Setup
+ string filePath = TestHelper.GetTestDataPath(TestDataPath.Core.Components.Gis.IO,
+ shapeFileName);
+
+ var profilesImporter = new TestStructuresImporter(testImportTarget, testReferenceLine, filePath);
+
+ // Call
+ var importResult = true;
+ Action call = () => importResult = profilesImporter.Import();
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ string[] messageArray = messages.ToArray();
+ string expectedMessage =
+ string.Format("Fout bij het lezen van bestand '{0}': Kon geen punten vinden in dit bestand.", filePath);
+ StringAssert.EndsWith(expectedMessage, messageArray[0]);
+ });
+ Assert.IsFalse(importResult);
+ }
+
+ [Test]
+ public void Import_InvalidShapefile_ReturnsFalse()
+ {
+ // Setup
+ string invalidFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO,
+ Path.Combine("Structures", "StructuresWithoutKWKIDENT", "Kunstwerken.shp"));
+
+ var profilesImporter = new TestStructuresImporter(testImportTarget, testReferenceLine, invalidFilePath);
+
+ // Call
+ var importResult = profilesImporter.Import();
+
+ // Assert
+ Assert.IsFalse(importResult);
+ }
+
+ [Test]
+ public void Import_InvalidCsvFile_ReturnsFalse()
+ {
+ // Setup
+ string invalidFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO,
+ Path.Combine("Structures", "CorrectShpIncorrectCsv", "CorrectKunstwerken_IncorrectCsv.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 profilesImporter = new TestStructuresImporter(testImportTarget, referenceLine, invalidFilePath);
+
+ // Call
+ var importResult = profilesImporter.Import();
+
+ // Assert
+ Assert.IsFalse(importResult);
+ }
+
+ [Test]
+ public void Import_CancelOfImportToValidTargetWithValidFile_ReturnsFalse()
+ {
+ // Setup
+ string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Plugin,
+ Path.Combine("Structures", "CorrectFiles", "Kunstwerken.shp"));
+
+ var testStructuresImporter = new TestStructuresImporter(testImportTarget, testReferenceLine, filePath);
+
+ testStructuresImporter.Cancel();
+
+ // Call
+ bool importResult = testStructuresImporter.Import();
+
+ // Assert
+ Assert.IsFalse(importResult);
+ }
+
+ [Test]
+ public void Import_ReuseOfCancelledImportToValidTargetWithValidFile_ReturnsTrue()
+ {
+ // 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 testStructuresImporter = new TestStructuresImporter(new ObservableList(), referenceLine, filePath);
+
+ testStructuresImporter.Cancel();
+ bool importResult = testStructuresImporter.Import();
+
+ // Precondition
+ Assert.IsFalse(importResult);
+
+ // Call
+ importResult = testStructuresImporter.Import();
+
+ // Assert
+ Assert.IsTrue(importResult);
+ }
+
+ [Test]
+ public void Import_LocationOutsideReferenceLine_LogErrorAndReturnTrue()
+ {
+ // 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)
+ };
+ ReferenceLine referenceLine = new ReferenceLine();
+ referenceLine.SetGeometry(referencePoints);
+ var testStructuresImporter = new TestStructuresImporter(new ObservableList(), referenceLine, filePath);
+
+ // Call
+ var importResult = true;
+ Action call = () => importResult = testStructuresImporter.Import();
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ string[] messageArray = messages.ToArray();
+ string expectedMessage = "Een kunstwerklocatie met KWKIDENT 'KUNST6' ligt niet op de referentielijn. Locatie wordt overgeslagen.";
+ StringAssert.StartsWith(expectedMessage, messageArray[0]);
+ });
+ Assert.IsTrue(importResult);
+ }
+
+ [Test]
+ public void Import_DuplicateLocation_LogWarningAndReturnTrue()
+ {
+ // Setup
+ string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO,
+ Path.Combine("Structures", "DuplicateLocation", "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 testStructuresImporter = new TestStructuresImporter(new ObservableList(), referenceLine, filePath);
+
+ // Call
+ var importResult = true;
+ Action call = () => importResult = testStructuresImporter.Import();
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ string[] messageArray = messages.ToArray();
+ string expectedMessage = "Kunstwerklocatie met KWKIDENT 'KUNST3' is opnieuw ingelezen.";
+ StringAssert.StartsWith(expectedMessage, messageArray[0]);
+ });
+ Assert.IsTrue(importResult);
+ }
+
+ [Test]
+ public void Import_LocationKWKIDENTNull_LogErrorAndReturnFalse()
+ {
+ // Setup
+ string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO,
+ Path.Combine("Structures", "StructuresWithNullKWKident", "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 testStructuresImporter = new TestStructuresImporter(new ObservableList(), referenceLine, filePath);
+
+ // Call
+ var importResult = true;
+ Action call = () => importResult = testStructuresImporter.Import();
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ string[] messageArray = messages.ToArray();
+ string expectedMessage = "Fout bij het lezen van kunstwerk op regel 1. Het kunstwerk heeft geen geldige waarde voor attribuut 'KWKIDENT'. Dit kunstwerk wordt overgeslagen.";
+ StringAssert.StartsWith(expectedMessage, messageArray[0]);
+ });
+ Assert.IsFalse(importResult);
+ }
+
+ [Test]
+ public void Import_IllegalCsvFile_ReturnsFalse()
+ {
+ // Setup
+ string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO,
+ Path.Combine("Structures", "IllegalCsv", "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 testStructuresImporter = new TestStructuresImporter(new ObservableList(), referenceLine, filePath);
+
+ // Call
+ var importResult = testStructuresImporter.Import();
+
+ // Assert
+ Assert.IsFalse(importResult);
+ }
+
+ private class TestStructuresImporter : StructuresImporter>
+ {
+ public TestStructuresImporter(ObservableList importTarget, ReferenceLine referenceLine, string filePath)
+ : base(importTarget, referenceLine, filePath) {}
+
+ protected override void CreateSpecificStructures(ICollection structureLocations,
+ Dictionary> groupedStructureParameterRows) {}
+ }
+
+ private class TestStructure {}
}
}
\ No newline at end of file
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/Ringtoets.Common.IO.Test.csproj
===================================================================
diff -u -r423010168fe01b2373e9be55f047659911e670f5 -r1d6be87de63acfac543d4b90aaf0618d3203b0c3
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/Ringtoets.Common.IO.Test.csproj (.../Ringtoets.Common.IO.Test.csproj) (revision 423010168fe01b2373e9be55f047659911e670f5)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/Ringtoets.Common.IO.Test.csproj (.../Ringtoets.Common.IO.Test.csproj) (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -72,7 +72,9 @@
+
+
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/Structures/StructuresParameterRowsValidatorTest.cs
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/Structures/StructuresParameterRowsValidatorTest.cs (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/Structures/StructuresParameterRowsValidatorTest.cs (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -0,0 +1,165 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
+using Ringtoets.Common.IO.Structures;
+
+namespace Ringtoets.Common.IO.Test.Structures
+{
+ [TestFixture]
+ public class StructuresParameterRowsValidatorTest
+ {
+ [Test]
+ public void ValidateHeightStructuresParameters_StructureParameterRowsNull_ThrowsArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => StructuresParameterRowsValidator.ValidateHeightStructuresParameters(null);
+
+ // Assert
+ string paramName = Assert.Throws(call).ParamName;
+ Assert.AreEqual("structureParameterRows", paramName);
+ }
+
+ [Test]
+ public void ValidateHeightStructuresParameters_ParameterIdsMissingOrDuplicated_ExpectedValues()
+ {
+ // Setup
+ var structuresParameterRow = new StructuresParameterRow
+ {
+ ParameterId = "KW_HOOGTE1",
+ NumericalValue = 180.0
+ };
+
+ List structureParameterRows = new List
+ {
+ structuresParameterRow,
+ structuresParameterRow
+ };
+
+ // Call
+ ValidationResult validationResult = StructuresParameterRowsValidator.ValidateHeightStructuresParameters(structureParameterRows);
+
+ // Assert
+ Assert.IsFalse(validationResult.IsValid);
+ List expectedErrorMessages = new List
+ {
+ "Parameter 'KW_HOOGTE2' ontbreekt.",
+ "Parameter 'KW_HOOGTE3' ontbreekt.",
+ "Parameter 'KW_HOOGTE4' ontbreekt.",
+ "Parameter 'KW_HOOGTE5' ontbreekt.",
+ "Parameter 'KW_HOOGTE6' ontbreekt.",
+ "Parameter 'KW_HOOGTE7' ontbreekt.",
+ "Parameter 'KW_HOOGTE8' ontbreekt."
+ };
+ List expectedWarningMessages = new List
+ {
+ "Parameter 'KW_HOOGTE1' komt meermaals voor. De eerste specificatie wordt gebruikt."
+ };
+ CollectionAssert.AreEqual(expectedErrorMessages, validationResult.ErrorMessages);
+ CollectionAssert.AreEqual(expectedWarningMessages, validationResult.WarningMessages);
+ }
+
+ [Test]
+ public void ValidateHeightStructuresParameters_ParametersAllInvalid_ExpectedValues()
+ {
+ // Setup
+ List structureParameterRows = new List
+ {
+ new StructuresParameterRow
+ {
+ ParameterId = "KW_HOOGTE1",
+ NumericalValue = double.NaN
+ },
+ new StructuresParameterRow
+ {
+ ParameterId = "KW_HOOGTE2",
+ NumericalValue = double.NaN,
+ VarianceValue = -10.0
+ },
+ new StructuresParameterRow
+ {
+ ParameterId = "KW_HOOGTE3",
+ NumericalValue = double.NaN,
+ VarianceValue = double.NaN
+ },
+ new StructuresParameterRow
+ {
+ ParameterId = "KW_HOOGTE4",
+ NumericalValue = double.PositiveInfinity,
+ VarianceValue = double.PositiveInfinity
+ },
+ new StructuresParameterRow
+ {
+ ParameterId = "KW_HOOGTE5",
+ NumericalValue = double.PositiveInfinity,
+ VarianceValue = 10.0,
+ VarianceType = VarianceType.NotSpecified
+ },
+ new StructuresParameterRow
+ {
+ ParameterId = "KW_HOOGTE6",
+ NumericalValue = double.NegativeInfinity
+ },
+ new StructuresParameterRow
+ {
+ ParameterId = "KW_HOOGTE7",
+ NumericalValue = double.NegativeInfinity,
+ VarianceValue = -10.0
+ },
+ new StructuresParameterRow
+ {
+ ParameterId = "KW_HOOGTE8",
+ NumericalValue = double.PositiveInfinity,
+ VarianceValue = 10.0,
+ VarianceType = VarianceType.StandardDeviation
+ }
+ };
+
+ // Call
+ ValidationResult validationResult = StructuresParameterRowsValidator.ValidateHeightStructuresParameters(structureParameterRows);
+
+ // Assert
+ Assert.IsFalse(validationResult.IsValid);
+ List expectedErrorMessages = new List
+ {
+ "De oriëntatie van het kunstwerk valt buiten het bereik [0, 360].",
+ "De kerende hoogte van het kunstwerk heeft een ongeldige waarde.",
+ "De standaard afwijking van de kerende hoogte normaalverdeling heeft een ongeldige waarde.",
+ "De stroomvoerende breedte bij bodembescherming van het kunstwerk heeft een ongeldige waarde.",
+ "De variantie van de stroomvoerende breedte bij bodembescherming lognormaalverdeling heeft een ongeldige waarde.",
+ "Het kritieke overslagdebiet per strekkende meter van het kunstwerk heeft een ongeldige waarde.",
+ "De variantie van de kritieke overslagdebiet per strekkende meter lognormaalverdeling heeft een ongeldige waarde.",
+ "De breedte van de kruin van het kunstwerk heeft een ongeldige waarde.",
+ "De standaard afwijking van de breedte van de kruin normaalverdeling heeft een ongeldige waarde.",
+ "De waarde voor de faalkans van het kunstwerk valt buiten het bereik [0, 1].",
+ "Het kombergend oppervlak van het kunstwerk heeft een ongeldige waarde.",
+ "De variantie van de kombergend oppervlak lognormaalverdeling heeft een ongeldige waarde.",
+ "De toegestane peilverhoging op het kombergend oppervlak van het kunstwerk heeft een ongeldige waarde.",
+ "De variantie van de toegestane peilverhoging op het kombergend oppervlak lognormaalverdeling heeft een ongeldige waarde."
+ };
+ List expectedWarningMessages = new List();
+ CollectionAssert.AreEqual(expectedErrorMessages, validationResult.ErrorMessages);
+ CollectionAssert.AreEqual(expectedWarningMessages, validationResult.WarningMessages);
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/ValidationResultTest.cs
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/ValidationResultTest.cs (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/ValidationResultTest.cs (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -0,0 +1,199 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using System.Collections.Generic;
+using Core.Common.TestUtil;
+using NUnit.Framework;
+
+namespace Ringtoets.Common.IO.Test
+{
+ [TestFixture]
+ public class ValidationResultTest
+ {
+ List TestMessages()
+ {
+ return new List
+ {
+ "Some text."
+ };
+ }
+
+ #region Constructor one parameter
+
+ [Test]
+ public void Constructor_ErrorMessagesNull_ThrowsArgumentException()
+ {
+ // Call
+ TestDelegate call = () => new ValidationResult(null);
+
+ // Assert
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, "errorMessages");
+ }
+
+ [Test]
+ [TestCase(null)]
+ [TestCase("")]
+ [TestCase(" ")]
+ public void Constructor_ErrorMessagesContainsNullOrWhiteSpace_ThrowsArgumentException(string errormessage)
+ {
+ // Setup
+ List errorMessages = TestMessages();
+ errorMessages.Add(errormessage);
+
+ // Call
+ TestDelegate call = () => new ValidationResult(errorMessages);
+
+ // Assert
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, "errorMessages");
+ }
+
+ [Test]
+ public void Constructor_ErrorMessagesEmpty_ExpectedValues()
+ {
+ // Setup
+ List errorMessages = new List();
+
+ // Call
+ var validationResult = new ValidationResult(errorMessages);
+
+ // Assert
+ Assert.IsTrue(validationResult.IsValid);
+ CollectionAssert.IsEmpty(validationResult.ErrorMessages);
+ CollectionAssert.IsEmpty(validationResult.WarningMessages);
+ }
+
+ [Test]
+ public void Constructor_ErrorMessages_ExpectedValues()
+ {
+ // Setup
+ List errorMessages = TestMessages();
+
+ // Call
+ var validationResult = new ValidationResult(errorMessages);
+
+ // Assert
+ Assert.IsFalse(validationResult.IsValid);
+ CollectionAssert.AreEqual(errorMessages, validationResult.ErrorMessages);
+ CollectionAssert.IsEmpty(validationResult.WarningMessages);
+ }
+
+ #endregion
+
+ #region Constructor two parameters
+
+ [Test]
+ public void Constructor_ErrorMessagesNullWarningMessagesAreValid_ThrowsArgumentException()
+ {
+ // Setup
+ List warningMessages = new List();
+
+ // Call
+ TestDelegate call = () => new ValidationResult(null, warningMessages);
+
+ // Assert
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, "errorMessages");
+ }
+
+ [Test]
+ public void Constructor_ErrorMessagesAreValidWarningMessagesNull_ThrowsArgumentException()
+ {
+ // Setup
+ List errorMessages = new List();
+
+ // Call
+ TestDelegate call = () => new ValidationResult(errorMessages, null);
+
+ // Assert
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, "warningMessages");
+ }
+
+ [Test]
+ [TestCase(null)]
+ [TestCase("")]
+ [TestCase(" ")]
+ public void Constructor_ErrorMessagesContainsNullOrWhiteSpaceWarningMessagesAreValid_ThrowsArgumentException(string errormessage)
+ {
+ // Setup
+ List errorMessages = TestMessages();
+ errorMessages.Add(errormessage);
+ List warningMessages = new List();
+
+ // Call
+ TestDelegate call = () => new ValidationResult(errorMessages, warningMessages);
+
+ // Assert
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, "errorMessages");
+ }
+
+ [Test]
+ [TestCase(null)]
+ [TestCase("")]
+ [TestCase(" ")]
+ public void Constructor_ErrorMessagesAreValidWarningMessagesContainsNullOrWhiteSpace_ThrowsArgumentException(string warningMessage)
+ {
+ // Setup
+ List errorMessages = new List();
+ List warningMessages = TestMessages();
+ warningMessages.Add(warningMessage);
+
+ // Call
+ TestDelegate call = () => new ValidationResult(errorMessages, warningMessages);
+
+ // Assert
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, "warningMessages");
+ }
+
+ [Test]
+ public void Constructor_ErrorMessagesEmptyWarningMessagesEmpty_ExpectedValues()
+ {
+ // Setup
+ List errorMessages = new List();
+ List warningMessages = new List();
+
+ // Call
+ var validationResult = new ValidationResult(errorMessages, warningMessages);
+
+ // Assert
+ Assert.IsTrue(validationResult.IsValid);
+ CollectionAssert.IsEmpty(validationResult.ErrorMessages);
+ CollectionAssert.IsEmpty(validationResult.WarningMessages);
+ }
+
+ [Test]
+ public void Constructor_ErrorMessagesWarningMessages_ExpectedValues()
+ {
+ // Setup
+ List errorMessages = TestMessages();
+ List warningMessages = TestMessages();
+
+ // Call
+ var validationResult = new ValidationResult(errorMessages, warningMessages);
+
+ // Assert
+ Assert.IsFalse(validationResult.IsValid);
+ CollectionAssert.AreEqual(errorMessages, validationResult.ErrorMessages);
+ CollectionAssert.AreEqual(warningMessages, validationResult.WarningMessages);
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectFiles/Kunstwerken.csv
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectFiles/Kunstwerken.csv (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectFiles/Kunstwerken.csv (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -0,0 +1,17 @@
+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_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;
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIncorrectCsv/CorrectKunstwerken_IncorrectCsv.csv
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIncorrectCsv/CorrectKunstwerken_IncorrectCsv.csv (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIncorrectCsv/CorrectKunstwerken_IncorrectCsv.csv (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -0,0 +1,17 @@
+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;Boolean;Kwaliteitsoordeel.code
+12;KUNST1;1;KW_HOOGTE1;KUNSTW;Kunstwerk;ORIENTATIE;Ori�ntatie;grad;graden;;;Schematiseringshandleiding;;;;;45;0;
+12;KUNST1;1;KW_HOOGTE2;KRUIN;Kruin;NIVEAU;Niveau;m;meter;;;Schematiseringshandleiding;;;;;5.9;1;
+12;KUNST1;1;KW_HOOGTE3;STROM;Stroming;BREEDTE;Breedte;m;meter;;;Schematiseringshandleiding;;;;;18.5;1;
+12;KUNST1;1;KW_HOOGTE4;OVS;Overslag;DEBIET;Debiet;m3/s/m;kubieke meter per seconden per meter;;;Schematiseringshandleiding;;;;;0.1;0;
+12;KUNST1;1;KW_HOOGTE5;KRUIN;Kruin;BREEDTE;Breedte;m;meter;;;Schematiseringshandleiding;;;;;4;1;
+12;KUNST1;1;KW_HOOGTE6;KUNSTW;Kunstwerk;FAALKANS;Faalkans;;;;;Schematiseringshandleiding;;;;;1;0;
+12;KUNST1;1;KW_HOOGTE7;KOMBERG;Komberging;OPPERVLAKTE;Oppervlakte;m2;vierkante meter;;;Schematiseringshandleiding;;;;;500000;0;
+12;KUNST1;1;KW_HOOGTE8;PEIL;Peil;VERHOGING;Verhoging;m;meter;;;Schematiseringshandleiding;;;;;6.5;1;
+12;KUNST2;1;KW_HOOGTE1;KUNSTW;Kunstwerk;ORIENTATIE;Ori�ntatie;grad;graden;;;Schematiseringshandleiding;;;;;;0;
+12;KUNST2;1;KW_HOOGTE2;KRUIN;Kruin;NIVEAU;Niveau;m;meter;;;Schematiseringshandleiding;;;;;;1;
+12;KUNST2;1;KW_HOOGTE3;STROM;Stroming;BREEDTE;Breedte;m;meter;;;Schematiseringshandleiding;;;;;;1;
+12;KUNST2;1;KW_HOOGTE4;OVS;Overslag;DEBIET;Debiet;m3/s/m;kubieke meter per seconden per meter;;;Schematiseringshandleiding;;;;;;0;
+12;KUNST2;1;KW_HOOGTE5;KRUIN;Kruin;BREEDTE;Breedte;m;meter;;;Schematiseringshandleiding;;;;;;1;
+12;KUNST2;1;KW_HOOGTE6;KUNSTW;Kunstwerk;FAALKANS;Faalkans;;;;;Schematiseringshandleiding;;;;;1;0;
+12;KUNST2;1;KW_HOOGTE7;KOMBERG;Komberging;OPPERVLAKTE;Oppervlakte;m2;vierkante meter;;;Schematiseringshandleiding;;;;;;0;
+12;KUNST2;1;KW_HOOGTE8;PEIL;Peil;VERHOGING;Verhoging;m;meter;;;Schematiseringshandleiding;;;;;;1;
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIncorrectCsv/CorrectKunstwerken_IncorrectCsv.dbf
===================================================================
diff -u
Binary files differ
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIncorrectCsv/CorrectKunstwerken_IncorrectCsv.prj
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIncorrectCsv/CorrectKunstwerken_IncorrectCsv.prj (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIncorrectCsv/CorrectKunstwerken_IncorrectCsv.prj (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -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/CorrectShpIncorrectCsv/CorrectKunstwerken_IncorrectCsv.shp
===================================================================
diff -u
Binary files differ
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/CorrectShpIncorrectCsv/CorrectKunstwerken_IncorrectCsv.shx
===================================================================
diff -u
Binary files differ
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/DuplicateLocation/Kunstwerken.csv
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/DuplicateLocation/Kunstwerken.csv (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/DuplicateLocation/Kunstwerken.csv (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -0,0 +1,17 @@
+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_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;
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/DuplicateLocation/Kunstwerken.dbf
===================================================================
diff -u
Binary files differ
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/DuplicateLocation/Kunstwerken.prj
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/DuplicateLocation/Kunstwerken.prj (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/DuplicateLocation/Kunstwerken.prj (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -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/DuplicateLocation/Kunstwerken.shp
===================================================================
diff -u
Binary files differ
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/DuplicateLocation/Kunstwerken.shx
===================================================================
diff -u
Binary files differ
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/IllegalCsv/Kunstwerken.csv
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/IllegalCsv/Kunstwerken.csv (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/IllegalCsv/Kunstwerken.csv (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -0,0 +1 @@
\ No newline at end of file
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/IllegalCsv/Kunstwerken.dbf
===================================================================
diff -u
Binary files differ
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/IllegalCsv/Kunstwerken.prj
===================================================================
diff -u
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/IllegalCsv/Kunstwerken.prj (revision 0)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/IllegalCsv/Kunstwerken.prj (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -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/IllegalCsv/Kunstwerken.shp
===================================================================
diff -u
Binary files differ
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/Structures/IllegalCsv/Kunstwerken.shx
===================================================================
diff -u
Binary files differ
Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresImporter.cs
===================================================================
diff -u -r423010168fe01b2373e9be55f047659911e670f5 -r1d6be87de63acfac543d4b90aaf0618d3203b0c3
--- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresImporter.cs (.../HeightStructuresImporter.cs) (revision 423010168fe01b2373e9be55f047659911e670f5)
+++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.IO/HeightStructuresImporter.cs (.../HeightStructuresImporter.cs) (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -24,8 +24,8 @@
using System.Linq;
using Core.Common.Base;
using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.Common.IO;
using Ringtoets.Common.IO.FileImporters;
-using Ringtoets.Common.IO.Properties;
using Ringtoets.Common.IO.Structures;
using Ringtoets.HeightStructures.Data;
using RingtoetsCommonIOResources = Ringtoets.Common.IO.Properties.Resources;
@@ -37,18 +37,6 @@
///
public class HeightStructuresImporter : StructuresImporter>
{
- private static readonly string[] requiredParameterNames =
- {
- "KW_HOOGTE1",
- "KW_HOOGTE2",
- "KW_HOOGTE3",
- "KW_HOOGTE4",
- "KW_HOOGTE5",
- "KW_HOOGTE6",
- "KW_HOOGTE7",
- "KW_HOOGTE8"
- };
-
private readonly ObservableList importTarget;
///
@@ -61,39 +49,45 @@
/// Thrown when ,
/// or is null.
public HeightStructuresImporter(ObservableList importTarget, ReferenceLine referenceLine, string filePath)
- : base(referenceLine, filePath, importTarget)
+ : base(importTarget, referenceLine, filePath)
{
this.importTarget = importTarget;
}
protected override void CreateSpecificStructures(ICollection structureLocations,
Dictionary> groupedStructureParameterRows)
{
- IEnumerable importedHeightStructures = CreateHeightStructures(structureLocations, groupedStructureParameterRows);
+ IEnumerable importedHeightStructures = CreateHeightStructures(structureLocations.ToList(), groupedStructureParameterRows);
foreach (HeightStructure heightStructure in importedHeightStructures)
{
importTarget.Add(heightStructure);
}
}
- private IEnumerable CreateHeightStructures(IEnumerable structureLocations,
+ private IEnumerable CreateHeightStructures(IList structureLocations,
Dictionary> groupedStructureParameterRows)
{
var heightStructures = new List();
- foreach (StructureLocation structureLocation in structureLocations)
+ for (int i = 0; i < structureLocations.Count; i++)
{
+ StructureLocation structureLocation = structureLocations[i];
+
string id = structureLocation.Id;
if (!groupedStructureParameterRows.ContainsKey(id))
{
- log.ErrorFormat(Resources.StructuresImporter_CreateSpecificStructures_no_structursdata_for_location_0_, id);
+ log.WarnFormat(RingtoetsCommonIOResources.StructuresImporter_CreateSpecificStructures_no_structuresdata_for_location_0_, id);
+ log.ErrorFormat("Kunstwerk nummer {0} wordt overgeslagen.", i);
continue;
}
List structureParameterRows = groupedStructureParameterRows[id];
- if (!ValidateParameterNames(structureParameterRows, id))
+
+ ValidationResult parameterRowsValidationResult = StructuresParameterRowsValidator.ValidateHeightStructuresParameters(structureParameterRows);
+ if (!parameterRowsValidationResult.IsValid)
{
+ LogMessages(parameterRowsValidationResult, i);
continue;
}
@@ -103,30 +97,17 @@
return heightStructures;
}
- private bool ValidateParameterNames(List structureParameterRows, string id)
+ private void LogMessages(ValidationResult validationResult, int i)
{
- bool isValid = true;
- if (structureParameterRows.Count > requiredParameterNames.Length)
+ foreach (string message in validationResult.WarningMessages)
{
- log.ErrorFormat(RingtoetsCommonIOResources.StructuresImporter_ValidateParameterNames_Structure_0_has_too_many_parameters_expected_parameters_1_, id, string.Join(", ", requiredParameterNames));
- isValid = false;
+ log.Warn(message);
}
-
- foreach (string name in requiredParameterNames)
+ foreach (string message in validationResult.ErrorMessages)
{
- int count = structureParameterRows.Count(row => row.ParameterId.Equals(name));
- if (count < 1)
- {
- log.ErrorFormat(RingtoetsCommonIOResources.StructuresImporter_ValidateParameterNames_Parameter_0_missing_for_structure_1_, name, id);
- isValid = false;
- }
- if (count > 1)
- {
- log.ErrorFormat(RingtoetsCommonIOResources.StructuresImporter_ValidateParameterNames_Parameter_0_repeated_for_structure_1_, name, id);
- isValid = false;
- }
+ log.Error(message);
}
- return isValid;
+ log.ErrorFormat("Kunstwerk nummer {0} wordt overgeslagen.", i);
}
private static HeightStructure CreateHeightStructure(StructureLocation structureLocation, List structureParameterRows)
Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/FileImporters/ProfilesImporterTest.cs
===================================================================
diff -u -r2973c5f790a5131e427bd5f73e2a620044199639 -r1d6be87de63acfac543d4b90aaf0618d3203b0c3
--- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/FileImporters/ProfilesImporterTest.cs (.../ProfilesImporterTest.cs) (revision 2973c5f790a5131e427bd5f73e2a620044199639)
+++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/FileImporters/ProfilesImporterTest.cs (.../ProfilesImporterTest.cs) (revision 1d6be87de63acfac543d4b90aaf0618d3203b0c3)
@@ -41,46 +41,47 @@
[TestFixture]
public class ProfilesImporterTest
{
+ private readonly ObservableList testImportTarget = new ObservableList();
+ private readonly ReferenceLine testReferenceLine = new ReferenceLine();
+ private readonly string testFilePath = string.Empty;
+
[Test]
- public void ParameterdConstructor_ExpectedValues()
+ public void ParameteredConstructor_ExpectedValues()
{
- // Setup
- ReferenceLine referenceLine = new ReferenceLine();
-
// Call
- var importer = new TestProfilesImporter(new ObservableList(), referenceLine, "");
+ var importer = new TestProfilesImporter(testImportTarget, testReferenceLine, testFilePath);
// Assert
Assert.IsInstanceOf(importer);
}
[Test]
- public void ParameterdConstructor_ImportTargetNull_ThrowArgumentNullException()
+ public void ParameteredConstructor_ImportTargetNull_ThrowArgumentNullException()
{
// Call
- TestDelegate call = () => new TestProfilesImporter(null, new ReferenceLine(), "");
+ TestDelegate call = () => new TestProfilesImporter(null, testReferenceLine, testFilePath);
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("importTarget", exception.ParamName);
}
[Test]
- public void ParameterdConstructor_ReferenceLineNull_ThrowArgumentNullException()
+ public void ParameteredConstructor_ReferenceLineNull_ThrowArgumentNullException()
{
// Call
- TestDelegate call = () => new TestProfilesImporter(new ObservableList(), null, "");
+ TestDelegate call = () => new TestProfilesImporter(testImportTarget, null, testFilePath);
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("referenceLine", exception.ParamName);
}
[Test]
- public void ParameterdConstructor_FilePathNull_ThrowArgumentNullException()
+ public void ParameteredConstructor_FilePathNull_ThrowArgumentNullException()
{
// Call
- TestDelegate call = () => new TestProfilesImporter(new ObservableList(), new ReferenceLine(), null);
+ TestDelegate call = () => new TestProfilesImporter(testImportTarget, testReferenceLine, null);
// Assert
var exception = Assert.Throws(call);
@@ -93,13 +94,10 @@
public void Import_FromInvalidEmptyPath_FalseAndLogError(string filePath)
{
// Setup
- ReferenceLine referenceLine = new ReferenceLine();
- var testProfilesImporter = new TestProfilesImporter(new ObservableList(), referenceLine, filePath);
+ var testProfilesImporter = new TestProfilesImporter(testImportTarget, testReferenceLine, filePath);
- // Precondition
- var importResult = true;
-
// Call
+ var importResult = true;
Action call = () => importResult = testProfilesImporter.Import();
// Assert
@@ -122,8 +120,7 @@
var invalidFileNameChars = Path.GetInvalidFileNameChars();
var invalidPath = filePath.Replace('_', invalidFileNameChars[0]);
- ReferenceLine referenceLine = new ReferenceLine();
- var testProfilesImporter = new TestProfilesImporter(new ObservableList(), referenceLine, invalidPath);
+ var testProfilesImporter = new TestProfilesImporter(testImportTarget, testReferenceLine, invalidPath);
// Call
var importResult = true;
@@ -146,8 +143,7 @@
// Setup
string folderPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Plugin) + Path.DirectorySeparatorChar;
- ReferenceLine referenceLine = new ReferenceLine();
- var testProfilesImporter = new TestProfilesImporter(new ObservableList(), referenceLine, folderPath);
+ var testProfilesImporter = new TestProfilesImporter(testImportTarget, testReferenceLine, folderPath);
// Call
var importResult = true;
@@ -177,8 +173,7 @@
string filePath = TestHelper.GetTestDataPath(TestDataPath.Core.Components.Gis.IO,
shapeFileName);
- ReferenceLine referenceLine = new ReferenceLine();
- var testProfilesImporter = new TestProfilesImporter(new ObservableList(), referenceLine, filePath);
+ var testProfilesImporter = new TestProfilesImporter(testImportTarget, testReferenceLine, filePath);
// Call
var importResult = true;
@@ -206,8 +201,7 @@
string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Plugin,
Path.Combine("DikeProfiles", shapeFileName));
- ReferenceLine referenceLine = new ReferenceLine();
- var testProfilesImporter = new TestProfilesImporter(new ObservableList(), referenceLine, filePath);
+ var testProfilesImporter = new TestProfilesImporter(testImportTarget, testReferenceLine, filePath);
// Call
var importResult = true;
@@ -473,16 +467,8 @@
string filePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Plugin,
Path.Combine("DikeProfiles", "AllOkTestData", "Voorlanden 12-2.shp"));
- var referencePoints = new List
- {
- new Point2D(130074.3, 543717.4),
- new Point2D(130084.3, 543727.4)
- };
- ReferenceLine referenceLine = new ReferenceLine();
- referenceLine.SetGeometry(referencePoints);
- var testProfilesImporter = new TestProfilesImporter(new ObservableList(), referenceLine, filePath);
+ var testProfilesImporter = new TestProfilesImporter(testImportTarget, testReferenceLine, filePath);
- // Precondition
testProfilesImporter.Cancel();
// Call
@@ -510,6 +496,8 @@
testProfilesImporter.Cancel();
bool importResult = testProfilesImporter.Import();
+
+ // Precondition
Assert.IsFalse(importResult);
// Call