Index: Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoAssessmentSectionCommand.cs =================================================================== diff -u -r76a7de2e77e45645d0e7e485e03333baf9cc3b0d -r316e741c3eefe3aab13dd070b56654a6bc4c24f1 --- Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoAssessmentSectionCommand.cs (.../AddNewDemoAssessmentSectionCommand.cs) (revision 76a7de2e77e45645d0e7e485e03333baf9cc3b0d) +++ Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoAssessmentSectionCommand.cs (.../AddNewDemoAssessmentSectionCommand.cs) (revision 316e741c3eefe3aab13dd070b56654a6bc4c24f1) @@ -542,6 +542,7 @@ { var surfaceLinesImporter = new PipingSurfaceLinesCsvImporter(pipingFailureMechanism.SurfaceLines, demoAssessmentSection.ReferenceLine, + new RingtoetsPipingSurfaceLineReplaceDataStrategy(), Path.Combine(embeddedResourceFileWriter.TargetFolderPath, "DR6_surfacelines.csv")); surfaceLinesImporter.Import(); Index: Ringtoets/Integration/test/Ringtoets.Integration.TestUtils/DataImportHelper.cs =================================================================== diff -u -ra59b471e3b6a02319f91b7317b3814a099ef0221 -r316e741c3eefe3aab13dd070b56654a6bc4c24f1 --- Ringtoets/Integration/test/Ringtoets.Integration.TestUtils/DataImportHelper.cs (.../DataImportHelper.cs) (revision a59b471e3b6a02319f91b7317b3814a099ef0221) +++ Ringtoets/Integration/test/Ringtoets.Integration.TestUtils/DataImportHelper.cs (.../DataImportHelper.cs) (revision 316e741c3eefe3aab13dd070b56654a6bc4c24f1) @@ -186,7 +186,10 @@ "DR6_surfacelines.krp.csv")) { var filePath = Path.Combine(embeddedResourceFileWriter.TargetFolderPath, "DR6_surfacelines.csv"); - var activity = new FileImportActivity(new PipingSurfaceLinesCsvImporter(assessmentSection.PipingFailureMechanism.SurfaceLines, assessmentSection.ReferenceLine, filePath), + var activity = new FileImportActivity(new PipingSurfaceLinesCsvImporter(assessmentSection.PipingFailureMechanism.SurfaceLines, + assessmentSection.ReferenceLine, + new RingtoetsPipingSurfaceLineReplaceDataStrategy(), + filePath), "PipingSurfaceLinesCsvImporter"); activity.Run(); activity.Finish(); Fisheye: Tag 316e741c3eefe3aab13dd070b56654a6bc4c24f1 refers to a dead (removed) revision in file `Ringtoets/Piping/src/Ringtoets.Piping.IO/Importer/ISurfaceLineUpdateStrategy.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Importer/ISurfaceLineUpdateSurfaceLineStrategy.cs =================================================================== diff -u --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Importer/ISurfaceLineUpdateSurfaceLineStrategy.cs (revision 0) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Importer/ISurfaceLineUpdateSurfaceLineStrategy.cs (revision 316e741c3eefe3aab13dd070b56654a6bc4c24f1) @@ -0,0 +1,49 @@ +// 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.Base; +using Ringtoets.Piping.Primitives; + +namespace Ringtoets.Piping.IO.Importer +{ + /// + /// Interface describing the method of updating the data model after new surface lines + /// have been imported. + /// + public interface ISurfaceLineUpdateSurfaceLineStrategy + { + /// + /// Adds the imported data to the . + /// + /// The + /// which needs to be updated. + /// The imported surface lines. + /// The source path from where the surface lines were imported from. + /// An of updated instances. + /// Thrown when any of the input parameters is null + IEnumerable UpdateSurfaceLinesWithImportedData( + ObservableCollectionWithSourcePath targetCollection, + IEnumerable readRingtoetsPipingSurfaceLines, + string sourceFilePath); + } +} Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Ringtoets.Piping.IO.csproj =================================================================== diff -u -ree74bbc714b9c3d6b46e7c7734640366ef197ef6 -r316e741c3eefe3aab13dd070b56654a6bc4c24f1 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Ringtoets.Piping.IO.csproj (.../Ringtoets.Piping.IO.csproj) (revision ee74bbc714b9c3d6b46e7c7734640366ef197ef6) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Ringtoets.Piping.IO.csproj (.../Ringtoets.Piping.IO.csproj) (revision 316e741c3eefe3aab13dd070b56654a6bc4c24f1) @@ -54,7 +54,7 @@ - + Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/PipingSurfaceLinesCsvImporter.cs =================================================================== diff -u -rd6d1b03ce8dc3c4e6bba565a85ea310f6196adea -r316e741c3eefe3aab13dd070b56654a6bc4c24f1 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/PipingSurfaceLinesCsvImporter.cs (.../PipingSurfaceLinesCsvImporter.cs) (revision d6d1b03ce8dc3c4e6bba565a85ea310f6196adea) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/PipingSurfaceLinesCsvImporter.cs (.../PipingSurfaceLinesCsvImporter.cs) (revision 316e741c3eefe3aab13dd070b56654a6bc4c24f1) @@ -30,6 +30,7 @@ using Core.Common.IO.Readers; using log4net; using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Piping.IO.Importer; using Ringtoets.Piping.IO.SurfaceLines; using Ringtoets.Piping.Plugin.Properties; using Ringtoets.Piping.Primitives; @@ -53,6 +54,7 @@ private const string characteristicPointsFileSubExtension = ".krp"; private const string csvFileExtension = ".csv"; + private readonly ISurfaceLineUpdateSurfaceLineStrategy surfaceLineUpdateStrategy; private readonly ILog log = LogManager.GetLogger(typeof(PipingSurfaceLinesCsvImporter)); private readonly ReferenceLine referenceLine; @@ -62,16 +64,29 @@ /// /// The import target. /// The reference line. + /// The strategy to update the surface lines with imported data. /// The path to the file to import from. /// Thrown when /// or is null. - public PipingSurfaceLinesCsvImporter(ObservableCollectionWithSourcePath importTarget, ReferenceLine referenceLine, string filePath) : base(filePath, importTarget) + public PipingSurfaceLinesCsvImporter(ObservableCollectionWithSourcePath importTarget, + ReferenceLine referenceLine, + ISurfaceLineUpdateSurfaceLineStrategy surfaceLineUpdateStrategy, + string filePath) : base(filePath, importTarget) { + if (importTarget == null) + { + throw new ArgumentNullException(nameof(importTarget)); + } if (referenceLine == null) { throw new ArgumentNullException(nameof(referenceLine)); } + if (surfaceLineUpdateStrategy == null) + { + throw new ArgumentNullException(nameof(surfaceLineUpdateStrategy)); + } + this.surfaceLineUpdateStrategy = surfaceLineUpdateStrategy; this.referenceLine = referenceLine; } @@ -96,8 +111,7 @@ return false; } - ImportTarget.AddRange(importResults, FilePath); - + surfaceLineUpdateStrategy.UpdateSurfaceLinesWithImportedData(ImportTarget, importResults, FilePath); return true; } Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/RingtoetsPipingSurfaceLineReplaceDataStrategy.cs =================================================================== diff -u -ree74bbc714b9c3d6b46e7c7734640366ef197ef6 -r316e741c3eefe3aab13dd070b56654a6bc4c24f1 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/RingtoetsPipingSurfaceLineReplaceDataStrategy.cs (.../RingtoetsPipingSurfaceLineReplaceDataStrategy.cs) (revision ee74bbc714b9c3d6b46e7c7734640366ef197ef6) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/RingtoetsPipingSurfaceLineReplaceDataStrategy.cs (.../RingtoetsPipingSurfaceLineReplaceDataStrategy.cs) (revision 316e741c3eefe3aab13dd070b56654a6bc4c24f1) @@ -30,7 +30,7 @@ /// /// Strategy to replace the surface lines with the imported surface lines. /// - public class RingtoetsPipingSurfaceLineReplaceDataStrategy : ISurfaceLineUpdateStrategy + public class RingtoetsPipingSurfaceLineReplaceDataStrategy : ISurfaceLineUpdateSurfaceLineStrategy { public IEnumerable UpdateSurfaceLinesWithImportedData(ObservableCollectionWithSourcePath targetCollection, IEnumerable readRingtoetsPipingSurfaceLines, Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingPlugin.cs =================================================================== diff -u -r76a7de2e77e45645d0e7e485e03333baf9cc3b0d -r316e741c3eefe3aab13dd070b56654a6bc4c24f1 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 76a7de2e77e45645d0e7e485e03333baf9cc3b0d) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 316e741c3eefe3aab13dd070b56654a6bc4c24f1) @@ -106,6 +106,7 @@ IsEnabled = context => context.AssessmentSection.ReferenceLine != null, CreateFileImporter = (context, filePath) => new PipingSurfaceLinesCsvImporter(context.WrappedData, context.AssessmentSection.ReferenceLine, + new RingtoetsPipingSurfaceLineReplaceDataStrategy(), filePath) }; Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/PipingSurfaceLinesCsvImporterTest.cs =================================================================== diff -u -r580a0557ffdf6af30593c7a94c561b353a0400cb -r316e741c3eefe3aab13dd070b56654a6bc4c24f1 --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/PipingSurfaceLinesCsvImporterTest.cs (.../PipingSurfaceLinesCsvImporterTest.cs) (revision 580a0557ffdf6af30593c7a94c561b353a0400cb) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/PipingSurfaceLinesCsvImporterTest.cs (.../PipingSurfaceLinesCsvImporterTest.cs) (revision 316e741c3eefe3aab13dd070b56654a6bc4c24f1) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; @@ -31,6 +32,7 @@ using NUnit.Framework; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Piping.Data; +using Ringtoets.Piping.IO.Importer; using Ringtoets.Piping.Plugin.FileImporter; using Ringtoets.Piping.Primitives; using PipingIOResources = Ringtoets.Piping.IO.Properties.Resources; @@ -50,13 +52,65 @@ private readonly string surfaceLineFormat = "{0}.csv"; [Test] + public void Constructor_ObservableListNull_ThrowsArgumentNullException() + { + // Setup + var referenceLine = new ReferenceLine(); + + // Call + TestDelegate call = () => new PipingSurfaceLinesCsvImporter(null, + referenceLine, + new TestSurfaceLineUpdateStrategy(), + string.Empty); + + // Assert + string parameter = Assert.Throws(call).ParamName; + Assert.AreEqual("importTarget", parameter); + } + + [Test] + public void Constructor_ReferenceLineNull_ThrowsArgumentNullException() + { + // Setup + var list = new ObservableCollectionWithSourcePath(); + + // Call + TestDelegate call = () => new PipingSurfaceLinesCsvImporter(list, + null, + new TestSurfaceLineUpdateStrategy(), + string.Empty); + + // Assert + string parameter = Assert.Throws(call).ParamName; + Assert.AreEqual("referenceLine", parameter); + } + + [Test] + public void Constructor_ModelUpdateStrategyNull_ThrowsArgumentNullException() + { + // Setup + var list = new ObservableCollectionWithSourcePath(); + var referenceLine = new ReferenceLine(); + + // Call + TestDelegate call = () => new PipingSurfaceLinesCsvImporter(list, + referenceLine, + null, + string.Empty); + + // Assert + string parameter = Assert.Throws(call).ParamName; + Assert.AreEqual("surfaceLineUpdateStrategy", parameter); + } + + [Test] public void DefaultConstructor_ExpectedValues() { var collection = new ObservableCollectionWithSourcePath(); var referenceLine = new ReferenceLine(); // Call - var importer = new PipingSurfaceLinesCsvImporter(collection, referenceLine, ""); + var importer = new PipingSurfaceLinesCsvImporter(collection, referenceLine, new RingtoetsPipingSurfaceLineReplaceDataStrategy(), ""); // Assert Assert.IsInstanceOf>>(importer); @@ -85,7 +139,8 @@ bool progressStarted = false; bool progressCharacteristicPointsStarted = false; - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, validFilePath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, validFilePath); importer.SetProgressChanged(delegate(string currentStepName, int currentStep, int totalNumberOfSteps) { if (!progressStarted && callCount == 0) @@ -126,11 +181,9 @@ bool importResult = importer.Import(); // Assert - ObservableCollectionWithSourcePath importedSurfaceLines = failureMechanism.SurfaceLines; - AssertSuccesfulImport(importResult, expectedNumberOfSurfaceLines, validFilePath, importedSurfaceLines); + RingtoetsPipingSurfaceLine[] importTargetArray = AssertSuccesfulImport(importResult, expectedNumberOfSurfaceLines, validFilePath, surfaceLineUpdateStrategy); // Sample some of the imported data: - RingtoetsPipingSurfaceLine[] importTargetArray = importedSurfaceLines.ToArray(); RingtoetsPipingSurfaceLine firstSurfaceLine = importTargetArray[0]; Assert.AreEqual("Rotterdam1", firstSurfaceLine.Name); Assert.AreEqual(8, firstSurfaceLine.Points.Length); @@ -146,7 +199,6 @@ Assert.AreEqual(6, callCount); Assert.IsTrue(TestHelper.CanOpenFileForWrite(validFilePath)); - Assert.AreEqual(validFilePath, failureMechanism.SurfaceLines.SourcePath); } [Test] @@ -164,9 +216,9 @@ }); var failureMechanism = new PipingFailureMechanism(); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, validFilePath); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, validFilePath); - // Precondition CollectionAssert.IsEmpty(failureMechanism.SurfaceLines); Assert.IsTrue(File.Exists(validFilePath)); @@ -188,11 +240,9 @@ }; TestHelper.AssertLogMessagesAreGenerated(call, mesages, 4); - ObservableCollectionWithSourcePath importedSurfaceLines = failureMechanism.SurfaceLines; - AssertSuccesfulImport(importResult, 1, validFilePath, importedSurfaceLines); + RingtoetsPipingSurfaceLine[] importTargetArray = AssertSuccesfulImport(importResult, 1, validFilePath, surfaceLineUpdateStrategy); // Sample some of the imported data: - RingtoetsPipingSurfaceLine[] importTargetArray = importedSurfaceLines.ToArray(); RingtoetsPipingSurfaceLine firstSurfaceLine = importTargetArray[0]; Assert.AreEqual("Rotterdam1", firstSurfaceLine.Name); var geometryPoints = firstSurfaceLine.Points.ToArray(); @@ -206,7 +256,6 @@ AssertAreEqualPoint2D(new Point2D(94270.0, 427795.313769642), firstSurfaceLine.ReferenceLineIntersectionWorldPoint); Assert.IsTrue(TestHelper.CanOpenFileForWrite(validFilePath)); - Assert.AreEqual(validFilePath, failureMechanism.SurfaceLines.SourcePath); } [Test] @@ -218,7 +267,8 @@ var referenceLine = new ReferenceLine(); var failureMechanism = new PipingFailureMechanism(); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, validFilePath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, validFilePath); importer.SetProgressChanged(delegate(string description, int step, int steps) { if (description.Contains("Inlezen van het profielschematisatiesbestand.")) @@ -238,7 +288,7 @@ // Assert TestHelper.AssertLogMessageIsGenerated(call, "Profielschematisaties importeren afgebroken. Geen data ingelezen.", 3); - AssertUnsuccessfulImport(importResult, failureMechanism.SurfaceLines); + AssertUnsuccessfulImport(importResult, surfaceLineUpdateStrategy); } [Test] @@ -250,7 +300,8 @@ var referenceLine = new ReferenceLine(); var failureMechanism = new PipingFailureMechanism(); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, validFilePath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, validFilePath); importer.SetProgressChanged((description, step, steps) => { if (description.Contains("Inlezen van het karakteristieke punten-bestand.")) @@ -270,7 +321,7 @@ // Assert TestHelper.AssertLogMessageIsGenerated(call, "Profielschematisaties importeren afgebroken. Geen data ingelezen.", 4); - AssertUnsuccessfulImport(importResult, failureMechanism.SurfaceLines); + AssertUnsuccessfulImport(importResult, surfaceLineUpdateStrategy); } [Test] @@ -289,8 +340,8 @@ }); var failureMechanism = new PipingFailureMechanism(); - - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, validFilePath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, validFilePath); importer.SetProgressChanged((description, step, steps) => { if (step < steps @@ -311,7 +362,7 @@ // Assert TestHelper.AssertLogMessageIsGenerated(call, "Profielschematisaties importeren afgebroken. Geen data ingelezen.", 4); - AssertUnsuccessfulImport(importResult, failureMechanism.SurfaceLines); + AssertUnsuccessfulImport(importResult, surfaceLineUpdateStrategy); } [Test] @@ -331,8 +382,8 @@ }); var failureMechanism = new PipingFailureMechanism(); - - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, validFilePath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, validFilePath); importer.SetProgressChanged((description, step, steps) => importer.Cancel()); // Precondition @@ -349,7 +400,7 @@ importResult = importer.Import(); // Assert - AssertSuccesfulImport(importResult, expectedNumberOfSurfaceLines, validFilePath, failureMechanism.SurfaceLines); + AssertSuccesfulImport(importResult, expectedNumberOfSurfaceLines, validFilePath, surfaceLineUpdateStrategy); } [Test] @@ -360,9 +411,9 @@ string corruptPath = validFilePath.Replace('S', Path.GetInvalidPathChars().First()); var failureMechanism = new PipingFailureMechanism(); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLineUpdateStrategy, corruptPath); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), corruptPath); - bool importResult = true; // Call @@ -374,7 +425,7 @@ var expectedLogMessage = string.Format(PipingPluginResources.PipingSurfaceLinesCsvImporter_CriticalErrorMessage_0_File_Skipped, internalErrorMessage); TestHelper.AssertLogMessageIsGenerated(call, expectedLogMessage, 1); - AssertUnsuccessfulImport(importResult, failureMechanism.SurfaceLines); + AssertUnsuccessfulImport(importResult, surfaceLineUpdateStrategy); } [Test] @@ -385,7 +436,8 @@ var failureMechanism = new PipingFailureMechanism(); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), corruptPath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLineUpdateStrategy, corruptPath); var importResult = true; @@ -404,7 +456,7 @@ corruptPath) }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 3); - AssertUnsuccessfulImport(importResult, failureMechanism.SurfaceLines); + AssertUnsuccessfulImport(importResult, surfaceLineUpdateStrategy); } [Test] @@ -414,9 +466,9 @@ string corruptPath = Path.Combine(ioTestDataPath, "empty.csv"); var failureMechanism = new PipingFailureMechanism(); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLineUpdateStrategy, corruptPath); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), corruptPath); - var importResult = true; // Call @@ -436,7 +488,7 @@ internalErrorMessage) }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 3); - AssertUnsuccessfulImport(importResult, failureMechanism.SurfaceLines); + AssertUnsuccessfulImport(importResult, surfaceLineUpdateStrategy); } [Test] @@ -446,9 +498,9 @@ string corruptPath = Path.Combine(ioTestDataPath, "InvalidHeader_LacksY1.csv"); var failureMechanism = new PipingFailureMechanism(); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLineUpdateStrategy, corruptPath); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), corruptPath); - bool importResult = true; // Call @@ -468,7 +520,7 @@ corruptPath) }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 3); - AssertUnsuccessfulImport(importResult, failureMechanism.SurfaceLines); + AssertUnsuccessfulImport(importResult, surfaceLineUpdateStrategy); } [Test] @@ -482,8 +534,8 @@ try { var failureMechanism = new PipingFailureMechanism(); - - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), copyTargetPath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLineUpdateStrategy, copyTargetPath); importer.SetProgressChanged((name, step, steps) => { // Delete the file being read by the import during the import itself: @@ -507,7 +559,7 @@ internalErrorMessage) }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 3); - AssertUnsuccessfulImport(importResult, failureMechanism.SurfaceLines); + AssertUnsuccessfulImport(importResult, surfaceLineUpdateStrategy); } finally { @@ -535,9 +587,9 @@ }); var failureMechanism = new PipingFailureMechanism(); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, corruptPath); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, corruptPath); - var importResult = true; // Call @@ -558,9 +610,9 @@ TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 4); - AssertSuccesfulImport(importResult, 1, corruptPath, failureMechanism.SurfaceLines); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "Rotterdam1")); - Assert.AreEqual(3, failureMechanism.SurfaceLines.First(sl => sl.Name == "Rotterdam1").Points.Length, "First line should have been added to the model."); + RingtoetsPipingSurfaceLine[] importedSurfaceLines = AssertSuccesfulImport(importResult, 1, corruptPath, surfaceLineUpdateStrategy); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "Rotterdam1")); + Assert.AreEqual(3, importedSurfaceLines.First(sl => sl.Name == "Rotterdam1").Points.Length, "First line should have been added to the model."); } [Test] @@ -581,7 +633,8 @@ var failureMechanism = new PipingFailureMechanism(); int progressCallCount = 0; - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, corruptPath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, corruptPath); importer.SetProgressChanged((name, step, steps) => progressCallCount++); var importResult = false; @@ -608,9 +661,9 @@ }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 4); - AssertSuccesfulImport(importResult, 2, corruptPath, failureMechanism.SurfaceLines); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "Rotterdam1")); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); + RingtoetsPipingSurfaceLine[] importedSurfaceLines = AssertSuccesfulImport(importResult, 2, corruptPath, surfaceLineUpdateStrategy); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "Rotterdam1")); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); Assert.AreEqual(9, progressCallCount, new StringBuilder() @@ -634,7 +687,8 @@ var failureMechanism = new PipingFailureMechanism(); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), path); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLineUpdateStrategy, path); // Precondition CollectionAssert.IsEmpty(failureMechanism.SurfaceLines); @@ -661,7 +715,7 @@ Path.Combine(ioTestDataPath, "InvalidRow_DuplicatePointsCausingRecline.krp.csv")) }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 4); - AssertSuccesfulImport(importResult, 0, path, failureMechanism.SurfaceLines); + AssertSuccesfulImport(importResult, 0, path, surfaceLineUpdateStrategy); Assert.IsTrue(TestHelper.CanOpenFileForWrite(path)); } @@ -675,7 +729,8 @@ var failureMechanism = new PipingFailureMechanism(); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), path); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLineUpdateStrategy, path); // Precondition CollectionAssert.IsEmpty(failureMechanism.SurfaceLines); @@ -702,7 +757,7 @@ Path.Combine(ioTestDataPath, "InvalidRow_DuplicatePointsCausingZeroLength.krp.csv")) }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 4); - AssertSuccesfulImport(importResult, 0, path, failureMechanism.SurfaceLines); + AssertSuccesfulImport(importResult, 0, path, surfaceLineUpdateStrategy); Assert.IsTrue(TestHelper.CanOpenFileForWrite(path)); } @@ -726,7 +781,8 @@ var failureMechanism = new PipingFailureMechanism(); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLinesFile); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, surfaceLinesFile); var importResult = true; @@ -742,7 +798,7 @@ nonExistingCharacteristicFile); TestHelper.AssertLogMessageIsGenerated(call, expectedLogMessage, 3); - AssertSuccesfulImport(importResult, 2, surfaceLinesFile, failureMechanism.SurfaceLines); + AssertSuccesfulImport(importResult, 2, surfaceLinesFile, surfaceLineUpdateStrategy); } [Test] @@ -755,7 +811,8 @@ var failureMechanism = new PipingFailureMechanism(); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLinesFile); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLineUpdateStrategy, surfaceLinesFile); var importResult = true; @@ -781,7 +838,7 @@ internalErrorMessage) }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 5); - AssertUnsuccessfulImport(importResult, failureMechanism.SurfaceLines); + AssertUnsuccessfulImport(importResult, surfaceLineUpdateStrategy); } [Test] @@ -794,7 +851,8 @@ var failureMechanism = new PipingFailureMechanism(); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLinesFile); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLineUpdateStrategy, surfaceLinesFile); var importResult = true; @@ -821,7 +879,7 @@ }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 5); - AssertUnsuccessfulImport(importResult, failureMechanism.SurfaceLines); + AssertUnsuccessfulImport(importResult, surfaceLineUpdateStrategy); } [Test] @@ -841,8 +899,8 @@ try { var failureMechanism = new PipingFailureMechanism(); - - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), copyTargetPath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, new ReferenceLine(), surfaceLineUpdateStrategy, copyTargetPath); importer.SetProgressChanged((name, step, steps) => { // Delete the file being read by the import during the import itself: @@ -874,7 +932,7 @@ internalErrorMessage) }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 5); - AssertUnsuccessfulImport(importResult, failureMechanism.SurfaceLines); + AssertUnsuccessfulImport(importResult, surfaceLineUpdateStrategy); } finally { @@ -909,9 +967,9 @@ }); var failureMechanism = new PipingFailureMechanism(); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, surfaceLinesFile); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLinesFile); - var importResult = true; // Call @@ -934,10 +992,10 @@ }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 5); - AssertSuccesfulImport(importResult, 2, surfaceLinesFile, failureMechanism.SurfaceLines); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "Rotterdam1")); - Assert.AreEqual(-1.02, failureMechanism.SurfaceLines.First(sl => sl.Name == "Rotterdam1").DitchPolderSide.Z, "First characteristic points definition should be added to data model."); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); + RingtoetsPipingSurfaceLine[] importedSurfaceLines = AssertSuccesfulImport(importResult, 2, surfaceLinesFile, surfaceLineUpdateStrategy); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "Rotterdam1")); + Assert.AreEqual(-1.02, importedSurfaceLines.First(sl => sl.Name == "Rotterdam1").DitchPolderSide.Z, "First characteristic points definition should be added to data model."); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); } [Test] @@ -960,7 +1018,8 @@ var failureMechanism = new PipingFailureMechanism(); int progressCallCount = 0; - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLinesFile); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, surfaceLinesFile); importer.SetProgressChanged((name, step, steps) => progressCallCount++); var importResult = false; @@ -990,9 +1049,9 @@ }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 6); - AssertSuccesfulImport(importResult, 2, surfaceLinesFile, failureMechanism.SurfaceLines); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "Rotterdam1Invalid")); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); + RingtoetsPipingSurfaceLine[] importedSurfaceLines = AssertSuccesfulImport(importResult, 2, surfaceLinesFile, surfaceLineUpdateStrategy); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "Rotterdam1Invalid")); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); Assert.AreEqual(11, progressCallCount, new StringBuilder() @@ -1028,7 +1087,8 @@ var failureMechanism = new PipingFailureMechanism(); int progressCallCount = 0; - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLinesPath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, surfaceLinesPath); importer.SetProgressChanged((name, step, steps) => progressCallCount++); var importResult = false; @@ -1052,9 +1112,9 @@ }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 5); - AssertSuccesfulImport(importResult, 2, surfaceLinesPath, failureMechanism.SurfaceLines); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "Rotterdam1")); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); + RingtoetsPipingSurfaceLine[] importedSurfaceLines = AssertSuccesfulImport(importResult, 2, surfaceLinesPath, surfaceLineUpdateStrategy); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "Rotterdam1")); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); Assert.AreEqual(10, progressCallCount, new StringBuilder() @@ -1090,7 +1150,8 @@ var failureMechanism = new PipingFailureMechanism(); int progressCallCount = 0; - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLinesPath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, surfaceLinesPath); importer.SetProgressChanged((name, step, steps) => progressCallCount++); var importResult = false; @@ -1113,12 +1174,10 @@ "Extra") }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages, 5); - Assert.IsTrue(importResult); - Assert.AreEqual(2, failureMechanism.SurfaceLines.Count, - "Ensure only the two valid surfacelines have been imported."); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "Rotterdam1")); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); + RingtoetsPipingSurfaceLine[] importedSurfaceLines = AssertSuccesfulImport(importResult, 2, surfaceLinesPath, surfaceLineUpdateStrategy); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "Rotterdam1")); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); Assert.AreEqual(12, progressCallCount, new StringBuilder() @@ -1159,7 +1218,8 @@ var failureMechanism = new PipingFailureMechanism(); int progressCallCount = 0; - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLinesPath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, surfaceLinesPath); importer.SetProgressChanged((name, step, steps) => progressCallCount++); var importResult = false; @@ -1187,9 +1247,9 @@ }; TestHelper.AssertLogMessagesAreGenerated(call, expectedLogMessages); - AssertSuccesfulImport(importResult, 2, surfaceLinesPath, failureMechanism.SurfaceLines); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "Rotterdam1Invalid")); - Assert.AreEqual(1, failureMechanism.SurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); + RingtoetsPipingSurfaceLine[] importedSurfaceLines = AssertSuccesfulImport(importResult, 2, surfaceLinesPath, surfaceLineUpdateStrategy); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "Rotterdam1Invalid")); + Assert.AreEqual(1, importedSurfaceLines.Count(sl => sl.Name == "ArtifcialLocal")); Assert.AreEqual(11, progressCallCount, new StringBuilder() @@ -1234,7 +1294,8 @@ bool progressStarted = false; bool progressCharacteristicPointsStarted = false; - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, validSurfaceLinesFilePath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, validSurfaceLinesFilePath); importer.SetProgressChanged(delegate(string currentStepName, int currentStep, int totalNumberOfSteps) { if (!progressStarted && callCount == 0) @@ -1280,11 +1341,9 @@ bool importResult = importer.Import(); // Assert - ObservableCollectionWithSourcePath importedSurfaceLines = failureMechanism.SurfaceLines; - AssertSuccesfulImport(importResult, expectedNumberOfSurfaceLines, validSurfaceLinesFilePath, importedSurfaceLines); + RingtoetsPipingSurfaceLine[] importTargetArray = AssertSuccesfulImport(importResult, expectedNumberOfSurfaceLines, validSurfaceLinesFilePath, surfaceLineUpdateStrategy); // Sample some of the imported data: - RingtoetsPipingSurfaceLine[] importTargetArray = importedSurfaceLines.ToArray(); RingtoetsPipingSurfaceLine firstSurfaceLine = importTargetArray[0]; Assert.AreEqual("Rotterdam1", firstSurfaceLine.Name); Assert.AreEqual(8, firstSurfaceLine.Points.Length); @@ -1330,7 +1389,8 @@ var failureMechanism = new PipingFailureMechanism(); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, validFilePath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, validFilePath); // Precondition CollectionAssert.IsEmpty(failureMechanism.SurfaceLines); @@ -1344,11 +1404,9 @@ var message = "Profielschematisatie ArtifcialLocal doorkruist de huidige referentielijn niet of op meer dan één punt en kan niet worden geïmporteerd. Dit kan komen doordat de profielschematisatie een lokaal coördinaatsysteem heeft."; TestHelper.AssertLogMessageIsGenerated(call, message); - ObservableCollectionWithSourcePath importedSurfaceLines = failureMechanism.SurfaceLines; - AssertSuccesfulImport(importResult, expectedNumberOfSurfaceLines, validFilePath, importedSurfaceLines); + RingtoetsPipingSurfaceLine[] importTargetArray = AssertSuccesfulImport(importResult, expectedNumberOfSurfaceLines, validFilePath, surfaceLineUpdateStrategy); // Sample some of the imported data: - RingtoetsPipingSurfaceLine[] importTargetArray = importedSurfaceLines.ToArray(); RingtoetsPipingSurfaceLine firstSurfaceLine = importTargetArray[0]; Assert.AreEqual("Rotterdam1", firstSurfaceLine.Name); Assert.AreEqual(8, firstSurfaceLine.Points.Length); @@ -1378,7 +1436,8 @@ var failureMechanism = new PipingFailureMechanism(); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, validFilePath); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, validFilePath); // Precondition CollectionAssert.IsEmpty(failureMechanism.SurfaceLines); @@ -1392,11 +1451,9 @@ var mesagge = "Profielschematisatie Rotterdam1 doorkruist de huidige referentielijn niet of op meer dan één punt en kan niet worden geïmporteerd."; TestHelper.AssertLogMessageIsGenerated(call, mesagge); - ObservableCollectionWithSourcePath importedSurfaceLines = failureMechanism.SurfaceLines; - AssertSuccesfulImport(importResult, expectedNumberOfSurfaceLines, validFilePath, importedSurfaceLines); + RingtoetsPipingSurfaceLine[] importTargetArray = AssertSuccesfulImport(importResult, expectedNumberOfSurfaceLines, validFilePath, surfaceLineUpdateStrategy); // Sample some of the imported data: - RingtoetsPipingSurfaceLine[] importTargetArray = importedSurfaceLines.ToArray(); RingtoetsPipingSurfaceLine firstSurfaceLine = importTargetArray[0]; Assert.AreEqual("ArtifcialLocal", firstSurfaceLine.Name); Assert.AreEqual(3, firstSurfaceLine.Points.Length); @@ -1423,9 +1480,9 @@ }); var failureMechanism = new PipingFailureMechanism(); + var surfaceLineUpdateStrategy = new TestSurfaceLineUpdateStrategy(); + var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, surfaceLineUpdateStrategy, validFilePath); - var importer = new PipingSurfaceLinesCsvImporter(failureMechanism.SurfaceLines, referenceLine, validFilePath); - // Precondition CollectionAssert.IsEmpty(failureMechanism.SurfaceLines); Assert.IsTrue(File.Exists(validFilePath)); @@ -1439,33 +1496,35 @@ "ArtifcialLocal"); TestHelper.AssertLogMessageIsGenerated(call, message); - ObservableCollectionWithSourcePath importedSurfaceLines = failureMechanism.SurfaceLines; - AssertSuccesfulImport(importResult, 1, validFilePath, importedSurfaceLines); + RingtoetsPipingSurfaceLine[] importTargetArray = AssertSuccesfulImport(importResult, 1, validFilePath, surfaceLineUpdateStrategy); // Sample some of the imported data: - RingtoetsPipingSurfaceLine[] importTargetArray = importedSurfaceLines.ToArray(); RingtoetsPipingSurfaceLine firstSurfaceLine = importTargetArray[0]; Assert.AreEqual("Rotterdam1", firstSurfaceLine.Name); Assert.AreEqual(8, firstSurfaceLine.Points.Length); Assert.AreEqual(427776.654093, firstSurfaceLine.StartingWorldPoint.Y); } - private static void AssertSuccesfulImport(bool importResult, int expectedSurfaceLineCount, string expectedFilePath, - ObservableCollectionWithSourcePath surfaceLines) + private static RingtoetsPipingSurfaceLine[] AssertSuccesfulImport(bool importResult, + int expectedSurfaceLineCount, + string expectedFilePath, + TestSurfaceLineUpdateStrategy updateStrategy) { Assert.IsTrue(importResult); - Assert.AreEqual(expectedFilePath, surfaceLines.SourcePath); + Assert.IsTrue(updateStrategy.Updated); + Assert.AreEqual(expectedFilePath, updateStrategy.FilePath); string message = $"Ensure only {expectedSurfaceLineCount} valid surfacelines are imported."; - Assert.AreEqual(expectedSurfaceLineCount, surfaceLines.Count); + Assert.AreEqual(expectedSurfaceLineCount, updateStrategy.ReadSurfaceLines.Length, message); + + return updateStrategy.ReadSurfaceLines; } - private static void AssertUnsuccessfulImport(bool importResult, ObservableCollectionWithSourcePath surfaceLines) + private static void AssertUnsuccessfulImport(bool importResult, + TestSurfaceLineUpdateStrategy updateStrategy) { Assert.IsFalse(importResult); - CollectionAssert.IsEmpty(surfaceLines, - "No items should be added to collection when import is aborted or cancelled."); - Assert.IsNull(surfaceLines.SourcePath); + Assert.IsFalse(updateStrategy.Updated); } private static void AssertAreEqualPoint2D(Point2D expectedPoint, Point2D actualPoint) @@ -1474,5 +1533,22 @@ string.Format("Expected point: {0}" + Environment.NewLine + "Actual point: {1}", expectedPoint, actualPoint)); } + + private class TestSurfaceLineUpdateStrategy : ISurfaceLineUpdateSurfaceLineStrategy + { + public bool Updated { get; private set; } + public string FilePath { get; private set; } + public RingtoetsPipingSurfaceLine[] ReadSurfaceLines { get; private set; } + + public IEnumerable UpdateSurfaceLinesWithImportedData(ObservableCollectionWithSourcePath targetCollection, + IEnumerable readRingtoetsPipingSurfaceLines, + string sourceFilePath) + { + Updated = true; + FilePath = sourceFilePath; + ReadSurfaceLines = readRingtoetsPipingSurfaceLines.ToArray(); + return Enumerable.Empty(); + } + } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/RingtoetsPipingSurfaceLineReplaceDataStrategyTest.cs =================================================================== diff -u -ree74bbc714b9c3d6b46e7c7734640366ef197ef6 -r316e741c3eefe3aab13dd070b56654a6bc4c24f1 --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/RingtoetsPipingSurfaceLineReplaceDataStrategyTest.cs (.../RingtoetsPipingSurfaceLineReplaceDataStrategyTest.cs) (revision ee74bbc714b9c3d6b46e7c7734640366ef197ef6) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/RingtoetsPipingSurfaceLineReplaceDataStrategyTest.cs (.../RingtoetsPipingSurfaceLineReplaceDataStrategyTest.cs) (revision 316e741c3eefe3aab13dd070b56654a6bc4c24f1) @@ -40,7 +40,7 @@ var strategy = new RingtoetsPipingSurfaceLineReplaceDataStrategy(); // Assert - Assert.IsInstanceOf(strategy); + Assert.IsInstanceOf(strategy); } [Test]