Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Readers/PipingCalculationGroupReaderTest.cs =================================================================== diff -u -r4ef4e426c0a77d547b58ec56581f292ddb3ed381 -ra6c81de65875f5d507f49d393f237181cfe9a4a2 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Readers/PipingCalculationGroupReaderTest.cs (.../PipingCalculationGroupReaderTest.cs) (revision 4ef4e426c0a77d547b58ec56581f292ddb3ed381) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Readers/PipingCalculationGroupReaderTest.cs (.../PipingCalculationGroupReaderTest.cs) (revision a6c81de65875f5d507f49d393f237181cfe9a4a2) @@ -19,7 +19,10 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using System.Collections.Generic; +using System; +using System.IO; +using Core.Common.IO.Exceptions; +using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Piping.IO.Readers; @@ -29,26 +32,66 @@ public class PipingCalculationGroupReaderTest { [Test] - public void Constructor_Always_ReturnsNewInstance() + [TestCase("")] + [TestCase(" ")] + [TestCase(null)] + public void Constructor_NoFilePath_ThrowArgumentException(string invalidFilePath) { // Call - var pipingCalculationGroupReader = new PipingCalculationGroupReader(); + TestDelegate call = () => new PipingCalculationGroupReader(invalidFilePath); // Assert - Assert.NotNull(pipingCalculationGroupReader); + var expectedMessage = $"Fout bij het lezen van bestand '{invalidFilePath}': bestandspad mag niet leeg of ongedefinieerd zijn."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); } [Test] - public void Read_ReturnsExpectedCollectionOfReadPipingCalculationItems() + public void Constructor_FilePathHasInvalidPathCharacter_ThrowArgumentException() { // Setup - var reader = new PipingCalculationGroupReader(); + char[] invalidFileNameChars = Path.GetInvalidFileNameChars(); + string validFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Piping.IO, + "Valid piping configuration.shp"); + string invalidFilePath = validFilePath.Replace("piping", invalidFileNameChars[3].ToString()); + // Call - IEnumerable result = reader.Read(); + TestDelegate call = () => new PipingCalculationGroupReader(invalidFilePath); // Assert - Assert.IsEmpty(result); + var expectedMessage = $"Fout bij het lezen van bestand '{invalidFilePath}': bestandspad mag niet de volgende tekens bevatten: {string.Join(", ", invalidFileNameChars)}"; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); } + + [Test] + public void Constructor_FilePathIsActuallyDirectoryPath_ThrowArgumentException() + { + // Setup + string invalidFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Piping.IO, + Path.DirectorySeparatorChar.ToString()); + + // Call + TestDelegate call = () => new PipingCalculationGroupReader(invalidFilePath); + + // Assert + var expectedMessage = $"Fout bij het lezen van bestand '{invalidFilePath}': bestandspad mag niet verwijzen naar een lege bestandsnaam."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); + } + + [Test] + public void Constructor_FileDoesNotExist_ThrowCriticalFileReadException() + { + // Setup + string invalidFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Piping.IO, + "I_do_not_exist.shp"); + + // Call + TestDelegate call = () => new PipingCalculationGroupReader(invalidFilePath); + + // Assert + var expectedMessage = $"Fout bij het lezen van bestand '{invalidFilePath}': het bestand bestaat niet."; + var message = Assert.Throws(call).Message; + Assert.AreEqual(expectedMessage, message); + } } -} +} \ No newline at end of file