Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/DikeProfiles/DikeProfileDataReaderTest.cs =================================================================== diff -u -r3a772825514873eb774147054ceb5134c9d9f7b9 -r02b9c1938c77fec1599daf755bc1e7e70598621c --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/DikeProfiles/DikeProfileDataReaderTest.cs (.../DikeProfileDataReaderTest.cs) (revision 3a772825514873eb774147054ceb5134c9d9f7b9) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.IO.Test/DikeProfiles/DikeProfileDataReaderTest.cs (.../DikeProfileDataReaderTest.cs) (revision 02b9c1938c77fec1599daf755bc1e7e70598621c) @@ -153,7 +153,7 @@ { // Setup string validFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", "profiel004 - Ringtoets.prfl")); + Path.Combine("DikeProfiles", "profiel004 - Ringtoets.prfl")); var reader = new DikeProfileDataReader(); @@ -209,7 +209,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -223,7 +223,6 @@ Assert.AreEqual(expectedMessage, message); } - [Test] [TestCase("faulty_incorrectVersion1.prfl")] [TestCase("faulty_incorrectVersion2.prfl")] @@ -232,7 +231,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -254,7 +253,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -276,7 +275,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -298,7 +297,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -317,7 +316,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", "faulty_voorlandCountNegative.prfl")); + Path.Combine("DikeProfiles", "faulty_voorlandCountNegative.prfl")); var reader = new DikeProfileDataReader(); @@ -332,16 +331,39 @@ } [Test] + [SetCulture("nl-NL")] [TestCase("faulty_voorlandHasRoughnessTooBig.prfl", 1.234, 11)] + [TestCase("faulty_dijkHasRoughnessTooBig.prfl", 1.321, 15)] + public void ReadDikeProfileData_FaultyFileWithRoughnessOutOfRange_ThrowCriticalFileReadException_nl_NL( + string faultyFileName, double expectedFaultyRoughness, double expectedLineNumber) + { + DoReadDikeProfileData_FaultyFileWithRoughnessOutOfRange_ThrowsCriticalFileReadException( + faultyFileName, expectedFaultyRoughness, expectedLineNumber, "0,5"); + } + + [Test] + [SetCulture("en-US")] [TestCase("faulty_voorlandHasRoughnessTooSmall.prfl", -0.943, 10)] [TestCase("faulty_dijkHasRoughnessTooSmall.prfl", -0.123, 14)] - [TestCase("faulty_dijkHasRoughnessTooBig.prfl", 1.321, 15)] - public void ReadDikeProfileData_FaultyFileWithRoughnessOutOfRange_ThrowCriticalFileReadException( + public void ReadDikeProfileData_FaultyFileWithRoughnessOutOfRange_ThrowCriticalFileReadException_en_US( string faultyFileName, double expectedFaultyRoughness, double expectedLineNumber) { + DoReadDikeProfileData_FaultyFileWithRoughnessOutOfRange_ThrowsCriticalFileReadException( + faultyFileName, expectedFaultyRoughness, expectedLineNumber, "0.5"); + } + + [Test] + [TestCase("faulty_unparsableVersie.prfl", "syudrj iowydlklk")] + [TestCase("faulty_unparsableVersie_noValue1.prfl", "")] + [TestCase("faulty_unparsableVersie_noValue2.prfl", "")] + [TestCase("faulty_unparsableVersie_IncorrectCharacter.prfl", "4.q")] + [TestCase("faulty_unparsableVersie_NegativeNumber.prfl", "-4.-0")] + public void ReadDikeProfileData_FaultyFileWithUnparsableVersion_ThrowCriticalFileReadException( + string faultyFileName, string expectedReadText) + { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -350,23 +372,20 @@ // Assert string message = Assert.Throws(call).Message; - string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel {1}: De ingelezen ruwheid ({2}) moet in het bereik [0, 1] vallen.", - faultyFilePath, expectedLineNumber, expectedFaultyRoughness); + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel 1: De ingelezen versie ({1}) is geen geldige versie code.", + faultyFilePath, expectedReadText); Assert.AreEqual(expectedMessage, message); } [Test] - [TestCase("faulty_unparsableVersie.prfl", "syudrj iowydlklk")] - [TestCase("faulty_unparsableVersie_noValue1.prfl", "")] - [TestCase("faulty_unparsableVersie_noValue2.prfl", "")] - [TestCase("faulty_unparsableVersie_IncorrectCharacter.prfl", "4.q")] - [TestCase("faulty_unparsableVersie_NegativeNumber.prfl", "-4.-0")] - public void ReadDikeProfileData_FaultyFileWithUnparsableVersion_ThrowCriticalFileReadException( + [TestCase("faulty_unparsableId_noValue1.prfl", "")] + [TestCase("faulty_unparsableId_noValue2.prfl", "")] + public void ReadDikeProfileData_FaultyFileWithUnparsableId_ThrowCriticalFileReadException( string faultyFileName, string expectedReadText) { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -375,19 +394,37 @@ // Assert string message = Assert.Throws(call).Message; - string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel 1: De ingelezen versie ({1}) is geen geldige versie code.", + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel 2: De ingelezen Id ({1}) is geen geldig id.", faultyFilePath, expectedReadText); Assert.AreEqual(expectedMessage, message); } [Test] + public void ReadDikeProfileData_FaultyFileWithInvalidId_ThrowCriticalFileReadException() + { + // Setup + string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, + Path.Combine("DikeProfiles", "faulty_invalidId.prfl")); + var reader = new DikeProfileDataReader(); + + // Call + TestDelegate call = () => reader.ReadDikeProfileData(faultyFilePath); + + // Assert + string message = Assert.Throws(call).Message; + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel 2: De ingelezen Id (Id's are not allowed to have any white space!) bevat spaties, welke niet zijn toegestaan.", + faultyFilePath); + Assert.AreEqual(expectedMessage, message); + } + + [Test] [TestCase("faulty_unparsableVersie_Overflow.prfl", "44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444.0")] public void ReadDikeProfileData_FaultyFileWithOverflowVersion_ThrowCriticalFileReadException( string faultyFileName, string expectedReadText) { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -410,7 +447,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -432,7 +469,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -455,7 +492,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -477,7 +514,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -500,7 +537,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -522,7 +559,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -545,7 +582,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -567,7 +604,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -590,7 +627,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -612,7 +649,7 @@ { // Setup string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, - Path.Combine("DikeProfiles", faultyFileName)); + Path.Combine("DikeProfiles", faultyFileName)); var reader = new DikeProfileDataReader(); @@ -626,6 +663,223 @@ Assert.AreEqual(expectedMessage, message); } + [Test] + [TestCase("faulty_unparsableDijk.prfl", "069xf837 uo uyhtwuht098y hb3loiu43597")] + [TestCase("faulty_unparsableDijk_noValue1.prfl", "")] + [TestCase("faulty_unparsableDijk_noValue2.prfl", "")] + public void ReadDikeProfileData_FaultyFileWithUnparsableDikeCount_ThrowsCriticalFileReadException( + string faultyFileName, string expectedReadText) + { + // Setup + string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, + Path.Combine("DikeProfiles", faultyFileName)); + + var reader = new DikeProfileDataReader(); + + // Call + TestDelegate call = () => reader.ReadDikeProfileData(faultyFilePath); + + // Assert + string message = Assert.Throws(call).Message; + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel 16: Het ingelezen aantal dijk punten ({1}) is geen geheel getal.", + faultyFilePath, expectedReadText); + Assert.AreEqual(expectedMessage, message); + } + + [Test] + [TestCase("faulty_unparsableDijk_Overflow1.prfl", "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111")] + [TestCase("faulty_unparsableDijk_Overflow2.prfl", "-22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222")] + public void ReadDikeProfileData_FaultyFileWithOverflowDijkCount_ThrowsCriticalFileReadException( + string faultyFileName, string expectedReadText) + { + // Setup + string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, + Path.Combine("DikeProfiles", faultyFileName)); + + var reader = new DikeProfileDataReader(); + + // Call + TestDelegate call = () => reader.ReadDikeProfileData(faultyFilePath); + + // Assert + string message = Assert.Throws(call).Message; + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel 16: Het ingelezen aantal dijk punten ({1}) is te groot of te klein om ingelezen te worden.", + faultyFilePath, expectedReadText); + Assert.AreEqual(expectedMessage, message); + } + + [Test] + [TestCase("faulty_unparsableDijk_X.prfl", 18, "X coordinaat", "suhf")] + [TestCase("faulty_unparsableDijk_X_noValue1.prfl", 18, "X coordinaat", "")] + [TestCase("faulty_unparsableDijk_X_noValue2.prfl", 18, "X coordinaat", "")] + [TestCase("faulty_unparsableDijk_Y.prfl", 20, "Y coordinaat", "o;jfhe;lhtvwposiu")] + [TestCase("faulty_unparsableDijk_Y_noValue1.prfl", 20, "Y coordinaat", "")] + [TestCase("faulty_unparsableDijk_Y_noValue2.prfl", 20, "Y coordinaat", "")] + [TestCase("faulty_unparsableDijk_Roughness.prfl", 17, "ruwheid", "dr;tjn")] + [TestCase("faulty_unparsableDijk_Roughness_noValue1.prfl", 17, "ruwheid", "")] + [TestCase("faulty_unparsableDijk_Roughness_noValue2.prfl", 17, "ruwheid", "")] + [TestCase("faulty_unparsableVoorland_X.prfl", 10, "X coordinaat", "glkjdhflgkjhsk")] + [TestCase("faulty_unparsableVoorland_X_noValue1.prfl", 11, "X coordinaat", "")] + [TestCase("faulty_unparsableVoorland_X_noValue2.prfl", 12, "X coordinaat", "")] + [TestCase("faulty_unparsableVoorland_Y.prfl", 12, "Y coordinaat", "lijfhsliufghkj")] + [TestCase("faulty_unparsableVoorland_Y_noValue1.prfl", 10, "Y coordinaat", "")] + [TestCase("faulty_unparsableVoorland_Y_noValue2.prfl", 11, "Y coordinaat", "")] + [TestCase("faulty_unparsableVoorland_Roughness.prfl", 10, "ruwheid", ";lsduglk wab")] + [TestCase("faulty_unparsableVoorland_Roughness_noValue1.prfl", 11, "ruwheid", "")] + [TestCase("faulty_unparsableVoorland_Roughness_noValue2.prfl", 12, "ruwheid", "")] + public void ReadDikeProfileData_FaultyFileWithUnparsableRoughnessPoints_ThrowsCriticalFileReadException( + string faultyFileName, int expectedLineNumber, string expectedParameterName, string expectedReadText) + { + // Setup + string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, + Path.Combine("DikeProfiles", faultyFileName)); + + var reader = new DikeProfileDataReader(); + + // Call + TestDelegate call = () => reader.ReadDikeProfileData(faultyFilePath); + + // Assert + string message = Assert.Throws(call).Message; + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel {1}: De ingelezen {2} ({3}) is geen getal.", + faultyFilePath, expectedLineNumber, expectedParameterName, expectedReadText); + Assert.AreEqual(expectedMessage, message); + } + + [Test] + [TestCase("faulty_unparsableDijk_X_Overflow1.prfl", 18, "X coordinaat", "99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999")] + [TestCase("faulty_unparsableDijk_X_Overflow2.prfl", 18, "X coordinaat", "-44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444")] + [TestCase("faulty_unparsableDijk_Y_Overflow1.prfl", 19, "Y coordinaat", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888.8")] + [TestCase("faulty_unparsableDijk_Y_Overflow2.prfl", 20, "Y coordinaat", "-44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444.4")] + [TestCase("faulty_unparsableDijk_Roughness_Overflow1.prfl", 17, "ruwheid", "-44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444.4")] + [TestCase("faulty_unparsableDijk_Roughness_Overflow2.prfl", 17, "ruwheid", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888.8")] + [TestCase("faulty_unparsableVoorland_X_Overflow1.prfl", 11, "X coordinaat", "55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555")] + [TestCase("faulty_unparsableVoorland_X_Overflow2.prfl", 12, "X coordinaat", "-33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333")] + [TestCase("faulty_unparsableVoorland_Y_Overflow1.prfl", 11, "Y coordinaat", "77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777.7")] + [TestCase("faulty_unparsableVoorland_Y_Overflow2.prfl", 10, "Y coordinaat", "-44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444.4")] + [TestCase("faulty_unparsableVoorland_Roughness_Overflow1.prfl", 10, "ruwheid", "-44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444.4")] + [TestCase("faulty_unparsableVoorland_Roughness_Overflow2.prfl", 11, "ruwheid", "-33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333")] + public void ReadDikeProfileData_FaultyFileWithOverflowRoughnessPoints_ThrowsCriticalFileReadException( + string faultyFileName, int expectedLineNumber, string expectedParameterName, string expectedReadText) + { + // Setup + string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, + Path.Combine("DikeProfiles", faultyFileName)); + + var reader = new DikeProfileDataReader(); + + // Call + TestDelegate call = () => reader.ReadDikeProfileData(faultyFilePath); + + // Assert + string message = Assert.Throws(call).Message; + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel {1}: De ingelezen {2} ({3}) is te groot of te klein om ingelezen te worden.", + faultyFilePath, expectedLineNumber, expectedParameterName, expectedReadText); + Assert.AreEqual(expectedMessage, message); + } + + [Test] + public void ReadDikeProfileData_FaultyFileWithMissingDikePoints_ThrowsCriticalFileReadException() + { + // Setup + string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, + Path.Combine("DikeProfiles", "faulty_unparsableDijk_missingElements.prfl")); + + var reader = new DikeProfileDataReader(); + + // Call + TestDelegate call = () => reader.ReadDikeProfileData(faultyFilePath); + + // Assert + string message = Assert.Throws(call).Message; + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel 19: Het aantal dijk punten in het bestand (2) komt niet overeen met de aangegeven hoeveelheid dijk punten (4).", + faultyFilePath); + Assert.AreEqual(expectedMessage, message); + } + + [Test] + [TestCase("faulty_unparsableVoorland.prfl", "oidushp9t8w uyp394hp 983 94")] + [TestCase("faulty_unparsableVoorland_noValue1.prfl", "")] + [TestCase("faulty_unparsableVoorland_noValue2.prfl", "")] + public void ReadDikeProfileData_FaultyFileWithUnparsableForeshoreCount_ThrowsCriticalFileReadException( + string faultyFileName, string expectedReadText) + { + // Setup + string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, + Path.Combine("DikeProfiles", faultyFileName)); + + var reader = new DikeProfileDataReader(); + + // Call + TestDelegate call = () => reader.ReadDikeProfileData(faultyFilePath); + + // Assert + string message = Assert.Throws(call).Message; + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel 9: Het ingelezen aantal voorland punten ({1}) is geen geheel getal.", + faultyFilePath, expectedReadText); + Assert.AreEqual(expectedMessage, message); + } + + [Test] + [TestCase("faulty_unparsableVoorland_Overflow1.prfl", "33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333")] + [TestCase("faulty_unparsableVoorland_Overflow2.prfl", "-55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555")] + public void ReadDikeProfileData_FaultyFileWithOverflowForeshoreCount_ThrowsCriticalFileReadException( + string faultyFileName, string expectedReadText) + { + // Setup + string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, + Path.Combine("DikeProfiles", faultyFileName)); + + var reader = new DikeProfileDataReader(); + + // Call + TestDelegate call = () => reader.ReadDikeProfileData(faultyFilePath); + + // Assert + string message = Assert.Throws(call).Message; + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel 9: Het ingelezen aantal voorland punten ({1}) is te groot of te klein om ingelezen te worden.", + faultyFilePath, expectedReadText); + Assert.AreEqual(expectedMessage, message); + } + + [Test] + public void ReadDikeProfileData_FaultyFileWithMissingForeshorePoints_ThrowsCriticalFileReadException() + { + // Setup + string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, + Path.Combine("DikeProfiles", "faulty_unparsableVoorland_missingElements.prfl")); + + var reader = new DikeProfileDataReader(); + + // Call + TestDelegate call = () => reader.ReadDikeProfileData(faultyFilePath); + + // Assert + string message = Assert.Throws(call).Message; + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel 11: Het aantal voorland punten in het bestand (1) komt niet overeen met de aangegeven hoeveelheid voorland punten (3).", + faultyFilePath); + Assert.AreEqual(expectedMessage, message); + } + // TODO: DAMWAND en DAMWAND Type coverage (beide files hebben dezelfde waardes) + + private static void DoReadDikeProfileData_FaultyFileWithRoughnessOutOfRange_ThrowsCriticalFileReadException( + string faultyFileName, double expectedFaultyRoughness, double expectedLineNumber, string expectedLowerLimitText) + { + // Setup + string faultyFilePath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.GrassCoverErosionInwards.IO, + Path.Combine("DikeProfiles", faultyFileName)); + + var reader = new DikeProfileDataReader(); + + // Call + TestDelegate call = () => reader.ReadDikeProfileData(faultyFilePath); + + // Assert + string message = Assert.Throws(call).Message; + string expectedMessage = string.Format("Fout bij het lezen van bestand '{0}' op regel {1}: De ingelezen ruwheid ({2}) moet in het bereik [{3}, 1] vallen.", + faultyFilePath, expectedLineNumber, expectedFaultyRoughness, expectedLowerLimitText); + Assert.AreEqual(expectedMessage, message); + } } } \ No newline at end of file