Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs =================================================================== diff -u -r2253 -r2323 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs (.../CombineImportedData.cs) (revision 2253) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs (.../CombineImportedData.cs) (revision 2323) @@ -431,7 +431,7 @@ } } - private bool CheckCharacteristicPointsForCoincidingLocations(SurfaceLine2 surfaceLine2, + internal bool CheckCharacteristicPointsForCoincidingLocations(SurfaceLine2 surfaceLine2, out CharacteristicPointType type1, out CharacteristicPointType type2) { var doubleFound = false; @@ -559,16 +559,7 @@ // Check on illegal coinciding characteristic points if (charCheck) { - CharacteristicPointType firstType; - CharacteristicPointType secondType; - charCheck = CheckCharacteristicPointsForCoincidingLocations(surfaceLine, out firstType, out secondType); - if (!charCheck) - { - var coincidingCharPointsFoundForSurfaceError = LocalizationManager.GetTranslatedText(GetType(), "CoincidingCharPointsFoundForSurfaceError"); - LogMessage logmessage = new LogMessage(LogMessageType.Error, null, String.Format("{0} : {1} : {2} : {3}", - surfaceLine.Name, coincidingCharPointsFoundForSurfaceError, firstType.ToString(), secondType.ToString())); - ErrorMessages.Add(logmessage); - } + charCheck = CheckOnCoincidingPoints(surfaceLine); } if (!charCheck) { @@ -579,6 +570,24 @@ } } + internal bool CheckOnCoincidingPoints(SurfaceLine2 surfaceLine) + { + bool charCheck; + CharacteristicPointType firstType; + CharacteristicPointType secondType; + charCheck = CheckCharacteristicPointsForCoincidingLocations(surfaceLine, out firstType, out secondType); + if (!charCheck) + { + var coincidingCharPointsFoundForSurfaceError = + LocalizationManager.GetTranslatedText(GetType(), "CoincidingCharPointsFoundForSurfaceError"); + LogMessage logmessage = new LogMessage(LogMessageType.Error, null, String.Format("{0} : {1} : {2} : {3}", + surfaceLine.Name, coincidingCharPointsFoundForSurfaceError, firstType.ToString(), secondType.ToString())); + ErrorMessages.Add(logmessage); + } + + return charCheck; + } + private void TransferScenarios(Dike dike) { if (ScenarioRecords == null) Index: DamClients/DamUI/trunk/src/Dam/Tests/CsvImporterTestsNew.cs =================================================================== diff -u -r2253 -r2323 --- DamClients/DamUI/trunk/src/Dam/Tests/CsvImporterTestsNew.cs (.../CsvImporterTestsNew.cs) (revision 2253) +++ DamClients/DamUI/trunk/src/Dam/Tests/CsvImporterTestsNew.cs (.../CsvImporterTestsNew.cs) (revision 2323) @@ -27,13 +27,19 @@ using Deltares.Dam.Data.CsvImporters; using Deltares.Dam.Data.Importers; using Deltares.Dam.Data.IO; +using Deltares.DamEngine.Data.Geotechnics; +using Deltares.Geometry; +using Deltares.Geotechnics.GeotechnicalGeometry; +using Deltares.Geotechnics.SurfaceLines; using Deltares.Probabilistic; using Deltares.Standard.EventPublisher; using Deltares.Standard.Logging; using Deltares.Standard.TestUtils; using NUnit.Framework; +using CharacteristicPointType = Deltares.Geotechnics.SurfaceLines.CharacteristicPointType; using DataAttribute = Deltares.Dam.Data.DataPlugins.Configuration.DataAttribute; +using SurfaceLine2Extensions = Deltares.Geotechnics.SurfaceLines.SurfaceLine2Extensions; namespace Deltares.Dam.Tests { @@ -1146,5 +1152,67 @@ Assert.AreEqual(0.5, location.StabilitySlopeAdaptionDeltaX, tolerance); } } + + private Deltares.Geotechnics.SurfaceLines.SurfaceLine2 CreateValidSurfaceLine() + { + var surfaceLine = new Deltares.Geotechnics.SurfaceLines.SurfaceLine2() + { + Geometry = new LocalizedGeometryPointString(), + CharacteristicPoints = { GeometryMustContainPoint = true } + }; + surfaceLine.EnsurePointOfType(0, 0, 0, CharacteristicPointType.SurfaceLevelOutside); + surfaceLine.EnsurePointOfType(10, 0, 0, CharacteristicPointType.DikeToeAtRiver); + surfaceLine.EnsurePointOfType(12, 0, 2, CharacteristicPointType.DikeTopAtRiver); + surfaceLine.EnsurePointOfType(15, 0, 2, CharacteristicPointType.DikeTopAtPolder); + surfaceLine.EnsurePointOfType(20, 0, -1, CharacteristicPointType.DikeToeAtPolder); + surfaceLine.EnsurePointOfType(80, 0, -1, CharacteristicPointType.SurfaceLevelInside); + return surfaceLine; + } + + private Deltares.Geotechnics.SurfaceLines.SurfaceLine2 CreateInvalidSurfaceLine() + { + var surfaceLine = CreateValidSurfaceLine(); + surfaceLine.EnsurePointOfType(15, 0, 2, CharacteristicPointType.ShoulderBaseInside); + return surfaceLine; + } + + [Test] + public void TestCheckCharacteristicPointsForCoincidingLocationsValid() + { + var surfaceLine = CreateValidSurfaceLine(); + var combineImportedData = new CombineImportedData(); + CharacteristicPointType point1; + CharacteristicPointType point2; + var doNotCoincide = combineImportedData.CheckCharacteristicPointsForCoincidingLocations(surfaceLine, out point1, out point2); + Assert.IsTrue(doNotCoincide); + + } + + [Test] + public void TestCheckCharacteristicPointsForCoincidingLocationsInValid() + { + var surfaceLine = CreateInvalidSurfaceLine(); + var combineImportedData = new CombineImportedData(); + CharacteristicPointType point1; + CharacteristicPointType point2; + var doNotCoincide = combineImportedData.CheckCharacteristicPointsForCoincidingLocations(surfaceLine, out point1, out point2); + Assert.IsFalse(doNotCoincide); + Assert.AreEqual(CharacteristicPointType.DikeTopAtPolder, point1); + Assert.AreEqual(CharacteristicPointType.ShoulderBaseInside, point2); + } + + [Test] + public void TestProperMessageForCheckCharacteristicPointsForCoincidingLocationsInValid() + { + var surfaceLine = CreateInvalidSurfaceLine(); + var combineImportedData = new CombineImportedData(); + combineImportedData.ErrorMessages.Clear(); + var doNotCoincide = combineImportedData.CheckOnCoincidingPoints(surfaceLine); + Assert.IsFalse(doNotCoincide); + Assert.AreEqual(1, combineImportedData.ErrorMessages.Count); + Assert.IsTrue(combineImportedData.ErrorMessages[0].Message.Contains(CharacteristicPointType.DikeTopAtPolder.ToString())); + Assert.IsTrue(combineImportedData.ErrorMessages[0].Message.Contains(CharacteristicPointType.ShoulderBaseInside.ToString())); + } + } }