Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.IO.Test/HydraulicBoundaryDatabase/HydraulicBoundaryDatabaseReaderTest.cs =================================================================== diff -u -r71a73dccde6d14e69e1951a103e01a2d61e2e318 -r71cdbb68c0ab380b288d5caf67357275fe01b782 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.IO.Test/HydraulicBoundaryDatabase/HydraulicBoundaryDatabaseReaderTest.cs (.../HydraulicBoundaryDatabaseReaderTest.cs) (revision 71a73dccde6d14e69e1951a103e01a2d61e2e318) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.IO.Test/HydraulicBoundaryDatabase/HydraulicBoundaryDatabaseReaderTest.cs (.../HydraulicBoundaryDatabaseReaderTest.cs) (revision 71cdbb68c0ab380b288d5caf67357275fe01b782) @@ -19,11 +19,13 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; +using System.Data.SQLite; using System.IO; using Core.Common.Base.IO; +using Core.Common.IO.Exceptions; using Core.Common.IO.Readers; using Core.Common.TestUtil; -using Core.Common.Util.Builders; using NUnit.Framework; using Ringtoets.HydraRing.IO.HydraulicBoundaryDatabase; @@ -62,8 +64,8 @@ }; // Assert + string expectedMessage = $"Fout bij het lezen van bestand '{hydraulicBoundaryDatabaseFile}': het bestand bestaat niet."; var exception = Assert.Throws(test); - string expectedMessage = new FileReaderErrorMessageBuilder(hydraulicBoundaryDatabaseFile).Build("Het bestand bestaat niet."); Assert.AreEqual(expectedMessage, exception.Message); } @@ -79,9 +81,65 @@ }; // Assert - var exception = Assert.Throws(test); string expectedMessage = $"Fout bij het lezen van bestand '{hydraulicBoundaryDatabaseFile}': bestandspad mag niet leeg of ongedefinieerd zijn."; + var exception = Assert.Throws(test); Assert.AreEqual(expectedMessage, exception.Message); } + + [Test] + public void Read_EmptyDatabase_ThrowsCriticalFileReadException() + { + // Setup + string hydraulicBoundaryDatabaseFile = Path.Combine(testDataPath, "empty.sqlite"); + + using (var hydraulicBoundaryDatabaseReader = new HydraulicBoundaryDatabaseReader(hydraulicBoundaryDatabaseFile)) + { + // Call + TestDelegate test = () => hydraulicBoundaryDatabaseReader.Read(); + + // Assert + string expectedMessage = $"Fout bij het lezen van bestand '{hydraulicBoundaryDatabaseFile}': kon geen locaties verkrijgen van de database."; + var exception = Assert.Throws(test); + Assert.AreEqual(expectedMessage, exception.Message); + Assert.IsInstanceOf(exception.InnerException); + } + } + + [Test] + public void Read_DatabaseWithoutTrackId_ThrowsCriticalFileReadException() + { + // Setup + string hydraulicBoundaryDatabaseFile = Path.Combine(testDataPath, "emptySchemaGeneral.sqlite"); + + using (var hydraulicBoundaryDatabaseReader = new HydraulicBoundaryDatabaseReader(hydraulicBoundaryDatabaseFile)) + { + // Call + TestDelegate test = () => hydraulicBoundaryDatabaseReader.Read(); + + // Assert + string expectedMessage = $"Fout bij het lezen van bestand '{hydraulicBoundaryDatabaseFile}': kritieke fout opgetreden bij het uitlezen van waardes uit kolommen in de database."; + var exception = Assert.Throws(test); + Assert.AreEqual(expectedMessage, exception.Message); + } + } + + [Test] + public void Read_InvalidTrackIdColumn_ThrowsLineParseException() + { + // Setup + string hydraulicBoundaryDatabaseFile = Path.Combine(testDataPath, "corruptschema.sqlite"); + + using (var hydraulicBoundaryDatabaseReader = new HydraulicBoundaryDatabaseReader(hydraulicBoundaryDatabaseFile)) + { + // Call + TestDelegate test = () => hydraulicBoundaryDatabaseReader.Read(); + + // Assert + var exception = Assert.Throws(test); + string expectedMessage = $"Fout bij het lezen van bestand '{hydraulicBoundaryDatabaseFile}': kritieke fout opgetreden bij het uitlezen van waardes uit kolommen in de database."; + Assert.AreEqual(expectedMessage, exception.Message); + Assert.IsInstanceOf(exception.InnerException); + } + } } } \ No newline at end of file Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.IO.Test/test-data/HydraulicBoundaryDatabaseReader/emptySchemaGeneral.sqlite =================================================================== diff -u Binary files differ