Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.IO/HydraulicBoundaryDatabase/HydraulicBoundaryDatabaseReader.cs
===================================================================
diff -u -r7a8e8a9491aab62076490e6635a8926552bc0404 -rdc381b4bef2de717bfa3ad01b38f5fed7ae98891
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.IO/HydraulicBoundaryDatabase/HydraulicBoundaryDatabaseReader.cs (.../HydraulicBoundaryDatabaseReader.cs) (revision 7a8e8a9491aab62076490e6635a8926552bc0404)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.IO/HydraulicBoundaryDatabase/HydraulicBoundaryDatabaseReader.cs (.../HydraulicBoundaryDatabaseReader.cs) (revision dc381b4bef2de717bfa3ad01b38f5fed7ae98891)
@@ -105,23 +105,32 @@
///
/// The version found in the database, or if the version cannot be found.
/// Thrown when a query could not be executed on the database schema.
- private string ReadVersion()
+ public string ReadVersion()
{
- using (IDataReader reader = CreateDataReader(HydraulicBoundaryDatabaseQueryBuilder.GetVersionQuery(), null))
+ try
{
- if (reader.Read())
+ using (IDataReader reader = CreateDataReader(HydraulicBoundaryDatabaseQueryBuilder.GetVersionQuery(), null))
{
- string version = Convert.ToString(reader[GeneralTableDefinitions.GeneratedVersion]);
- if (!string.IsNullOrEmpty(version))
+ if (reader.Read())
{
- return version;
+ string version = Convert.ToString(reader[GeneralTableDefinitions.GeneratedVersion]);
+
+ if (!string.IsNullOrEmpty(version))
+ {
+ return version;
+ }
}
- }
- string message = new FileReaderErrorMessageBuilder(Path).Build(Resources.HydraulicBoundaryDatabaseReader_Critical_Unexpected_value_on_column);
- throw new CriticalFileReadException(message);
+ string message = new FileReaderErrorMessageBuilder(Path).Build(Resources.HydraulicBoundaryDatabaseReader_Critical_Unexpected_value_on_column);
+ throw new CriticalFileReadException(message);
+ }
}
+ catch (SQLiteException e)
+ {
+ string message = new FileReaderErrorMessageBuilder(Path).Build(Resources.Error_HydraulicBoundaryLocation_read_from_database);
+ throw new CriticalFileReadException(message, e);
+ }
}
///
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.IO.Test/HydraulicBoundaryDatabase/HydraulicBoundaryDatabaseReaderTest.cs
===================================================================
diff -u -r9486f67a2641718e4d63a6637753b6457a6a53b5 -rdc381b4bef2de717bfa3ad01b38f5fed7ae98891
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.IO.Test/HydraulicBoundaryDatabase/HydraulicBoundaryDatabaseReaderTest.cs (.../HydraulicBoundaryDatabaseReaderTest.cs) (revision 9486f67a2641718e4d63a6637753b6457a6a53b5)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.IO.Test/HydraulicBoundaryDatabase/HydraulicBoundaryDatabaseReaderTest.cs (.../HydraulicBoundaryDatabaseReaderTest.cs) (revision dc381b4bef2de717bfa3ad01b38f5fed7ae98891)
@@ -184,5 +184,58 @@
Assert.AreEqual(427567.0, location.CoordinateY);
}
}
+
+ [Test]
+ public void ReadVersion_EmptyDatabase_ThrowsCriticalFileReadException()
+ {
+ // Setup
+ string hydraulicBoundaryDatabaseFile = Path.Combine(testDataPath, "emptySchemaGeneral.sqlite");
+
+ using (var reader = new HydraulicBoundaryDatabaseReader(hydraulicBoundaryDatabaseFile))
+ {
+ // Call
+ TestDelegate test = () => reader.ReadVersion();
+
+ // 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 ReadVersion_InvalidTrackIdColumn_ThrowsCriticalFileReadException()
+ {
+ // Setup
+ string hydraulicBoundaryDatabaseFile = Path.Combine(testDataPath, "empty.sqlite");
+
+ using (var reader = new HydraulicBoundaryDatabaseReader(hydraulicBoundaryDatabaseFile))
+ {
+ // Call
+ TestDelegate test = () => reader.ReadVersion();
+
+ // Assert
+ var exception = Assert.Throws(test);
+ string expectedMessage = $"Fout bij het lezen van bestand '{hydraulicBoundaryDatabaseFile}': kon geen locaties verkrijgen van de database.";
+ Assert.AreEqual(expectedMessage, exception.Message);
+ Assert.IsInstanceOf(exception.InnerException);
+ }
+ }
+
+ [Test]
+ public void ReadVersion_ValidFile_ReturnsReadVersion()
+ {
+ // Setup
+ string hydraulicBoundaryDatabaseFile = Path.Combine(testDataPath, "complete.sqlite");
+
+ using (var reader = new HydraulicBoundaryDatabaseReader(hydraulicBoundaryDatabaseFile))
+ {
+ // Call
+ string version= reader.ReadVersion();
+
+ // Assert
+ Assert.AreEqual("Dutch coast South19-11-2015 12:0013", version);
+ }
+ }
}
}
\ No newline at end of file