Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/OvertoppingCalculator.cs =================================================================== diff -u -r84db6d79354723db5626dbb9ff7361d2a70d66d1 -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/OvertoppingCalculator.cs (.../OvertoppingCalculator.cs) (revision 84db6d79354723db5626dbb9ff7361d2a70d66d1) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/OvertoppingCalculator.cs (.../OvertoppingCalculator.cs) (revision b253fd5ebc5d5800f5757be8b04820cb4ca05724) @@ -71,9 +71,9 @@ protected override void SetOutputs() { - if (exceedanceProbabilityCalculationParser.Output != null) + if (exceedanceProbabilityCalculationParser.Output.HasValue) { - ExceedanceProbabilityBeta = exceedanceProbabilityCalculationParser.Output.Beta; + ExceedanceProbabilityBeta = exceedanceProbabilityCalculationParser.Output.Value; } if (waveHeightParser.Output != null) { Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/StructuresClosureCalculator.cs =================================================================== diff -u -r84db6d79354723db5626dbb9ff7361d2a70d66d1 -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/StructuresClosureCalculator.cs (.../StructuresClosureCalculator.cs) (revision 84db6d79354723db5626dbb9ff7361d2a70d66d1) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/StructuresClosureCalculator.cs (.../StructuresClosureCalculator.cs) (revision b253fd5ebc5d5800f5757be8b04820cb4ca05724) @@ -61,9 +61,9 @@ protected override void SetOutputs() { - if (exceedanceProbabilityCalculationParser.Output != null) + if (exceedanceProbabilityCalculationParser.Output.HasValue) { - ExceedanceProbabilityBeta = exceedanceProbabilityCalculationParser.Output.Beta; + ExceedanceProbabilityBeta = exceedanceProbabilityCalculationParser.Output.Value; } } } Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/StructuresOvertoppingCalculator.cs =================================================================== diff -u -r84db6d79354723db5626dbb9ff7361d2a70d66d1 -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/StructuresOvertoppingCalculator.cs (.../StructuresOvertoppingCalculator.cs) (revision 84db6d79354723db5626dbb9ff7361d2a70d66d1) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/StructuresOvertoppingCalculator.cs (.../StructuresOvertoppingCalculator.cs) (revision b253fd5ebc5d5800f5757be8b04820cb4ca05724) @@ -62,9 +62,9 @@ protected override void SetOutputs() { - if (exceedanceProbabilityCalculationParser.Output != null) + if (exceedanceProbabilityCalculationParser.Output.HasValue) { - ExceedanceProbabilityBeta = exceedanceProbabilityCalculationParser.Output.Beta; + ExceedanceProbabilityBeta = exceedanceProbabilityCalculationParser.Output.Value; } } } Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/StructuresStabilityPointCalculator.cs =================================================================== diff -u -r84db6d79354723db5626dbb9ff7361d2a70d66d1 -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/StructuresStabilityPointCalculator.cs (.../StructuresStabilityPointCalculator.cs) (revision 84db6d79354723db5626dbb9ff7361d2a70d66d1) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/StructuresStabilityPointCalculator.cs (.../StructuresStabilityPointCalculator.cs) (revision b253fd5ebc5d5800f5757be8b04820cb4ca05724) @@ -56,9 +56,9 @@ protected override void SetOutputs() { - if (exceedanceProbabilityCalculationParser.Output != null) + if (exceedanceProbabilityCalculationParser.Output.HasValue) { - ExceedanceProbabilityBeta = exceedanceProbabilityCalculationParser.Output.Beta; + ExceedanceProbabilityBeta = exceedanceProbabilityCalculationParser.Output.Value; } } Fisheye: Tag b253fd5ebc5d5800f5757be8b04820cb4ca05724 refers to a dead (removed) revision in file `Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationAlphaOutput.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag b253fd5ebc5d5800f5757be8b04820cb4ca05724 refers to a dead (removed) revision in file `Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationOutput.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag b253fd5ebc5d5800f5757be8b04820cb4ca05724 refers to a dead (removed) revision in file `Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationOutputBase.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/ConvergenceParser.cs =================================================================== diff -u -rcaa069a8d2f118af9b92dc6db8c5c5bdbdc358fd -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/ConvergenceParser.cs (.../ConvergenceParser.cs) (revision caa069a8d2f118af9b92dc6db8c5c5bdbdc358fd) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/ConvergenceParser.cs (.../ConvergenceParser.cs) (revision b253fd5ebc5d5800f5757be8b04820cb4ca05724) @@ -55,7 +55,7 @@ HydraRingDatabaseParseHelper.Parse(workingDirectory, getLastResultQuery, sectionId, - Resources.ParseFile_No_convergence_found_in_output_file, + Resources.Parse_No_convergence_found_in_output_file, ReadResult); } Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/ExceedanceProbabilityCalculationParser.cs =================================================================== diff -u -rae74507edbfc4fe632ba5f964a147aff630dfe6e -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/ExceedanceProbabilityCalculationParser.cs (.../ExceedanceProbabilityCalculationParser.cs) (revision ae74507edbfc4fe632ba5f964a147aff630dfe6e) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/ExceedanceProbabilityCalculationParser.cs (.../ExceedanceProbabilityCalculationParser.cs) (revision b253fd5ebc5d5800f5757be8b04820cb4ca05724) @@ -20,13 +20,8 @@ // All rights reserved. using System; -using System.Collections.Generic; -using System.Data; -using System.Data.SQLite; -using System.IO; -using Ringtoets.HydraRing.Calculation.Data.Output; -using Ringtoets.HydraRing.Calculation.Exceptions; -using Ringtoets.HydraRing.IO; +using Ringtoets.HydraRing.Calculation.Properties; +using Ringtoets.HydraRing.Calculation.Readers; namespace Ringtoets.HydraRing.Calculation.Parsers { @@ -35,169 +30,43 @@ /// public class ExceedanceProbabilityCalculationParser : IHydraRingFileParser { - private const string betaResultQuery = "SELECT BetaId, RingCombinMethod, PresentationSectionId, MainMechanismId, MainMechanismCombinMethod, MechanismId, LayerId, AlternativeId, Beta " + - "FROM BetaResults " + - "WHERE SectionId = @SectionId " + - "ORDER BY BetaId DESC LIMIT 0,1;"; + private const string sectionIdParameterName = "@sectionId"; + private const string betaColumnName = "BetaValue"; - private const string alphaResultsQuery = "SELECT RingCombinMethod, PresentationSectionId, MainMechanismId, MainMechanismCombinMethod, MechanismId, LayerId, AlternativeId, VariableId, LoadVariableId, Alpha " + - "FROM AlphaResults " + - "WHERE BetaId = @BetaId " + - "ORDER BY BetaId, VariableId, LoadVariableId;"; + private readonly string query = $"SELECT {betaColumnName} " + + "FROM DesignBeta " + + $"WHERE SectionId = {sectionIdParameterName} AND LevelType=4 " + + "ORDER BY OuterIterationId DESC " + + "LIMIT 1;"; /// - /// Gets the output of a successful parse of the output file. + /// Gets the value of the exceedence probability calculation. /// - /// A corresponding to the section id if executed - /// successfully; or null otherwise. - public ExceedanceProbabilityCalculationOutput Output { get; private set; } + public double? Output { get; private set; } public void Parse(string workingDirectory, int sectionId) { - try + if (workingDirectory == null) { - Output = DoParse(Path.Combine(workingDirectory, HydraRingFileConstants.WorkingDatabaseFileName), sectionId); + throw new ArgumentNullException(nameof(workingDirectory)); } - catch - { - throw new HydraRingFileParserException(); - } - } - private static ExceedanceProbabilityCalculationOutput DoParse(string outputFilePath, int sectionId) - { - using (var sqLiteConnection = CreateConnection(outputFilePath)) - { - sqLiteConnection.Open(); - - int betaId; - var exceedanceProbabilityCalculationOutput = ReadExceedanceProbabilityCalculationOutput(sectionId, sqLiteConnection, out betaId); - - foreach (var alpha in ReadExceedanceProbabilityCalculationAlphaOutput(sectionId, betaId, sqLiteConnection)) - { - exceedanceProbabilityCalculationOutput.Alphas.Add(alpha); - } - - return exceedanceProbabilityCalculationOutput; - } + HydraRingDatabaseParseHelper.Parse(workingDirectory, + query, + sectionId, + Resources.ExceedanceProbabilityCalculationParser_Parse_No_beta_found_in_output_file, + ReadResult); } - private static SQLiteDataReader CreateDataReader(SQLiteConnection connection, string queryString, params SQLiteParameter[] parameters) + /// + /// Reads the result of the . + /// + /// The reader to get the result from. + /// Thrown when the the result + /// cannot be converted to the output format. + private void ReadResult(HydraRingDatabaseReader reader) { - using (var query = new SQLiteCommand(connection) - { - CommandText = queryString - }) - { - query.Parameters.AddRange(parameters); - return query.ExecuteReader(); - } + Output = Convert.ToDouble(reader.ReadColumn(betaColumnName)); } - - private static SQLiteConnection CreateConnection(string databaseFile) - { - var connectionStringBuilder = new SQLiteConnectionStringBuilder - { - FailIfMissing = true, - DataSource = databaseFile, - ReadOnly = true - }.ConnectionString; - - return new SQLiteConnection(connectionStringBuilder); - } - - #region Read AlphaResults - - private static IList ReadExceedanceProbabilityCalculationAlphaOutput(int sectionId, int betaId, SQLiteConnection sqLiteConnection) - { - var sectionIdParameter = new SQLiteParameter - { - DbType = DbType.String, - ParameterName = "@sectionId", - Value = sectionId - }; - var betaIdParameter = new SQLiteParameter - { - DbType = DbType.String, - ParameterName = "@BetaId", - Value = betaId - }; - using (var sqLiteDataReader = CreateDataReader(sqLiteConnection, alphaResultsQuery, sectionIdParameter, betaIdParameter)) - { - return ReadAlphaResults(sectionId, sqLiteDataReader); - } - } - - private static IList ReadAlphaResults(int sectionId, SQLiteDataReader sqLiteDataReader) - { - var alphaResults = new List(); - while (sqLiteDataReader.Read()) - { - alphaResults.Add(ReadExceedanceProbabilityCalculationAlphaOutput(sectionId, sqLiteDataReader)); - } - return alphaResults; - } - - private static ExceedanceProbabilityCalculationAlphaOutput ReadExceedanceProbabilityCalculationAlphaOutput(int sectionId, SQLiteDataReader sqLiteDataReader) - { - var ringCombinMethod = Convert.ToInt32(sqLiteDataReader["RingCombinMethod"]); - var presentationSectionId = Convert.ToInt32(sqLiteDataReader["PresentationSectionId"]); - var mainMechanismId = Convert.ToInt32(sqLiteDataReader["MainMechanismId"]); - var mainMechanismCombinMethod = Convert.ToInt32(sqLiteDataReader["MainMechanismCombinMethod"]); - var mechanismId = Convert.ToInt32(sqLiteDataReader["MechanismId"]); - var layerId = Convert.ToInt32(sqLiteDataReader["LayerId"]); - var alternativeId = Convert.ToInt32(sqLiteDataReader["AlternativeId"]); - var variableId = Convert.ToInt32(sqLiteDataReader["VariableId"]); - var loadVariableId = Convert.ToInt32(sqLiteDataReader["LoadVariableId"]); - var alpha = Convert.ToDouble(sqLiteDataReader["Alpha"]); - return new ExceedanceProbabilityCalculationAlphaOutput( - ringCombinMethod, presentationSectionId, mainMechanismId, mainMechanismCombinMethod, - mechanismId, sectionId, layerId, alternativeId, variableId, loadVariableId, alpha); - } - - #endregion - - #region Read BetaResults - - private static ExceedanceProbabilityCalculationOutput ReadExceedanceProbabilityCalculationOutput(int sectionId, SQLiteConnection sqLiteConnection, out int betaId) - { - var sectionIdParameter = new SQLiteParameter - { - DbType = DbType.String, - ParameterName = "@sectionId", - Value = sectionId - }; - using (var sqLiteDataReader = CreateDataReader(sqLiteConnection, betaResultQuery, sectionIdParameter)) - { - if (!sqLiteDataReader.Read()) - { - throw new HydraRingFileParserException(); - } - betaId = ReadBetaId(sqLiteDataReader); - return ReadExceedanceProbabilityCalculationOutput(sectionId, sqLiteDataReader); - } - } - - private static int ReadBetaId(SQLiteDataReader sqLiteDataReader) - { - return Convert.ToInt32(sqLiteDataReader["BetaId"]); - } - - private static ExceedanceProbabilityCalculationOutput ReadExceedanceProbabilityCalculationOutput(int sectionId, SQLiteDataReader sqLiteDataReader) - { - var ringCombinMethod = Convert.ToInt32(sqLiteDataReader["RingCombinMethod"]); - var presentationSectionId = Convert.ToInt32(sqLiteDataReader["PresentationSectionId"]); - var mainMechanismId = Convert.ToInt32(sqLiteDataReader["MainMechanismId"]); - var mainMechanismCombinMethod = Convert.ToInt32(sqLiteDataReader["MainMechanismCombinMethod"]); - var mechanismId = Convert.ToInt32(sqLiteDataReader["MechanismId"]); - var layerId = Convert.ToInt32(sqLiteDataReader["LayerId"]); - var alternativeId = Convert.ToInt32(sqLiteDataReader["AlternativeId"]); - var beta = Convert.ToDouble(sqLiteDataReader["Beta"]); - return new ExceedanceProbabilityCalculationOutput( - ringCombinMethod, presentationSectionId, mainMechanismId, mainMechanismCombinMethod, - mechanismId, sectionId, layerId, alternativeId, beta); - } - - #endregion } } \ No newline at end of file Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.Designer.cs =================================================================== diff -u -r4bf03fe0c441a3f3d439bc7ffe09350227435178 -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 4bf03fe0c441a3f3d439bc7ffe09350227435178) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision b253fd5ebc5d5800f5757be8b04820cb4ca05724) @@ -92,6 +92,15 @@ } /// + /// Looks up a localized string similar to Er is geen resultaat voor de betrouwbaarheidsindex van de faalkans gevonden in de Hydra-Ring uitvoerdatabase.. + /// + internal static string ExceedanceProbabilityCalculationParser_Parse_No_beta_found_in_output_file { + get { + return ResourceManager.GetString("ExceedanceProbabilityCalculationParser_Parse_No_beta_found_in_output_file", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Stap {0} van {1} | {2}. /// internal static string HydraRingActivityBase_UpdateProgressText_Step_0_of_TotalSteps_1_CurrentStepName_2 { @@ -129,20 +138,20 @@ } /// - /// Looks up a localized string similar to Er kon geen resultaat gelezen worden uit de Hydra-Ring uitvoerdatabase.. + /// Looks up a localized string similar to Er is geen resultaat voor convergentie gevonden in de Hydra-Ring uitvoerdatabase.. /// - internal static string ParseFile_Cannot_read_result_in_output_file { + internal static string Parse_No_convergence_found_in_output_file { get { - return ResourceManager.GetString("ParseFile_Cannot_read_result_in_output_file", resourceCulture); + return ResourceManager.GetString("Parse_No_convergence_found_in_output_file", resourceCulture); } } /// - /// Looks up a localized string similar to Er is geen resultaat voor convergentie gevonden in de Hydra-Ring uitvoerdatabase.. + /// Looks up a localized string similar to Er kon geen resultaat gelezen worden uit de Hydra-Ring uitvoerdatabase.. /// - internal static string ParseFile_No_convergence_found_in_output_file { + internal static string ParseFile_Cannot_read_result_in_output_file { get { - return ResourceManager.GetString("ParseFile_No_convergence_found_in_output_file", resourceCulture); + return ResourceManager.GetString("ParseFile_Cannot_read_result_in_output_file", resourceCulture); } } } Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.resx =================================================================== diff -u -r4bf03fe0c441a3f3d439bc7ffe09350227435178 -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.resx (.../Resources.resx) (revision 4bf03fe0c441a3f3d439bc7ffe09350227435178) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.resx (.../Resources.resx) (revision b253fd5ebc5d5800f5757be8b04820cb4ca05724) @@ -129,7 +129,7 @@ Er kon geen resultaat gelezen worden uit de Hydra-Ring uitvoerdatabase. - + Er is geen resultaat voor convergentie gevonden in de Hydra-Ring uitvoerdatabase. @@ -138,4 +138,7 @@ Er zijn geen berekende hydraulische randvoorwaarden voor duinen gevonden in de Hydra-Ring uitvoerdatabase. + + Er is geen resultaat voor de betrouwbaarheidsindex van de faalkans gevonden in de Hydra-Ring uitvoerdatabase. + \ No newline at end of file Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Ringtoets.HydraRing.Calculation.csproj =================================================================== diff -u -rc235d644419c9f398fd806f7dce2592f0974ac97 -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Ringtoets.HydraRing.Calculation.csproj (.../Ringtoets.HydraRing.Calculation.csproj) (revision c235d644419c9f398fd806f7dce2592f0974ac97) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Ringtoets.HydraRing.Calculation.csproj (.../Ringtoets.HydraRing.Calculation.csproj) (revision b253fd5ebc5d5800f5757be8b04820cb4ca05724) @@ -93,9 +93,6 @@ - - - Fisheye: Tag b253fd5ebc5d5800f5757be8b04820cb4ca05724 refers to a dead (removed) revision in file `Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationAlphaOutputTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag b253fd5ebc5d5800f5757be8b04820cb4ca05724 refers to a dead (removed) revision in file `Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationOutputBaseTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag b253fd5ebc5d5800f5757be8b04820cb4ca05724 refers to a dead (removed) revision in file `Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationOutputTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/ExceedanceProbabilityCalculationParserTest.cs =================================================================== diff -u -rae74507edbfc4fe632ba5f964a147aff630dfe6e -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/ExceedanceProbabilityCalculationParserTest.cs (.../ExceedanceProbabilityCalculationParserTest.cs) (revision ae74507edbfc4fe632ba5f964a147aff630dfe6e) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/ExceedanceProbabilityCalculationParserTest.cs (.../ExceedanceProbabilityCalculationParserTest.cs) (revision b253fd5ebc5d5800f5757be8b04820cb4ca05724) @@ -19,22 +19,28 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using System.Collections.Generic; +using System; +using System.Data.SQLite; using System.IO; using Core.Common.TestUtil; using NUnit.Framework; -using Ringtoets.HydraRing.Calculation.Data.Output; using Ringtoets.HydraRing.Calculation.Exceptions; using Ringtoets.HydraRing.Calculation.Parsers; -using Ringtoets.HydraRing.IO; namespace Ringtoets.HydraRing.Calculation.Test.Parsers { [TestFixture] public class ExceedanceProbabilityCalculationParserTest { - private readonly string testDataPath = Path.Combine(TestHelper.GetTestDataPath(TestDataPath.Ringtoets.HydraRing.Calculation, "Parsers"), "ExceedanceProbabilityCalculationParser"); + private const string emptyWorkingDirectory = "EmptyWorkingDirectory"; + private const string invalidFileInDirectory = "InvalidFile"; + private const string emptyFileInDirectory = "EmptyDatabase"; + private const string validFile = "ValidFile"; + private const string betaNull = "BetaNull"; + private readonly string testDirectory = Path.Combine(TestHelper.GetTestDataPath(TestDataPath.Ringtoets.HydraRing.Calculation, "Parsers"), + nameof(ExceedanceProbabilityCalculationParser)); + [Test] public void DefaultConstructor_SetDefaultValues() { @@ -47,129 +53,110 @@ } [Test] - public void Parse_NotExistingOutputFile_ThrowsHydraRingFileParserException() + public void Parse_WorkingDirectoryNull_ThrowsArgumentNullException() { // Setup - var exceedanceProbabilityCalculationExceptionParser = new ExceedanceProbabilityCalculationParser(); + var parser = new ExceedanceProbabilityCalculationParser(); // Call - TestDelegate test = () => exceedanceProbabilityCalculationExceptionParser.Parse(testDataPath, 1); + TestDelegate test = () => parser.Parse(null, 1); // Assert - Assert.Throws(test); - Assert.IsNull(exceedanceProbabilityCalculationExceptionParser.Output); + var exception = Assert.Throws(test); + Assert.AreEqual("workingDirectory", exception.ParamName); } [Test] - public void Parse_EmptyOutputFile_ThrowsHydraRingFileParserException() + public void Parse_WithWorkingDirectoryWithoutExpectedFile_ThrowsHydraRingFileParserException() { // Setup - var exceedanceProbabilityCalculationExceptionParser = new ExceedanceProbabilityCalculationParser(); - var workingDirectory = Path.Combine(testDataPath, "empty"); + string path = Path.Combine(testDirectory, emptyWorkingDirectory); + var parser = new ExceedanceProbabilityCalculationParser(); // Call - TestDelegate test = () => exceedanceProbabilityCalculationExceptionParser.Parse(workingDirectory, 1); + TestDelegate test = () => parser.Parse(path, 1); // Assert - Assert.Throws(test); - Assert.IsNull(exceedanceProbabilityCalculationExceptionParser.Output); - Assert.IsTrue(TestHelper.CanOpenFileForWrite(Path.Combine(workingDirectory, HydraRingFileConstants.WorkingDatabaseFileName))); + var exception = Assert.Throws(test); + Assert.IsInstanceOf(exception.InnerException); } [Test] - public void Parse_FileWithoutTableAlphaResults_ThrowsHydraRingFileParserException() + public void Parse_WithWorkingDirectoryWithInvalidOutputFile_ThrowsHydraRingFileParserException() { // Setup - var exceedanceProbabilityCalculationExceptionParser = new ExceedanceProbabilityCalculationParser(); - var workingDirectory = Path.Combine(testDataPath, "withoutAlphaResults"); + string path = Path.Combine(testDirectory, invalidFileInDirectory); + var parser = new ExceedanceProbabilityCalculationParser(); // Call - TestDelegate test = () => exceedanceProbabilityCalculationExceptionParser.Parse(workingDirectory, 1); + TestDelegate test = () => parser.Parse(path, 1); // Assert - Assert.Throws(test); - Assert.IsNull(exceedanceProbabilityCalculationExceptionParser.Output); - Assert.IsTrue(TestHelper.CanOpenFileForWrite(Path.Combine(workingDirectory, HydraRingFileConstants.WorkingDatabaseFileName))); + var exception = Assert.Throws(test); + Assert.IsInstanceOf(exception.InnerException); + Assert.AreEqual("Er kon geen resultaat gelezen worden uit de Hydra-Ring uitvoerdatabase.", exception.Message); } [Test] - public void Parse_ExampleHydraRingOutputFileNotContainingSectionId_ThrowsHydraRingFileParserException() + public void Parse_WithWorkingDirectoryWithEmptyFile_ThrowsHydraRingFileParserException() { // Setup - var sectionId = 1; - var exceedanceProbabilityCalculationExceptionParser = new ExceedanceProbabilityCalculationParser(); - var workingDirectory = Path.Combine(testDataPath, "complete"); + string path = Path.Combine(testDirectory, emptyFileInDirectory); + var parser = new ExceedanceProbabilityCalculationParser(); // Call - TestDelegate test = () => exceedanceProbabilityCalculationExceptionParser.Parse(workingDirectory, sectionId); + TestDelegate test = () => parser.Parse(path, 1); // Assert - Assert.Throws(test); - Assert.IsNull(exceedanceProbabilityCalculationExceptionParser.Output); - Assert.IsTrue(TestHelper.CanOpenFileForWrite(Path.Combine(workingDirectory, HydraRingFileConstants.WorkingDatabaseFileName))); + var exception = Assert.Throws(test); + Assert.AreEqual("Er is geen resultaat voor de betrouwbaarheidsindex van de faalkans gevonden in de Hydra-Ring uitvoerdatabase.", exception.Message); + Assert.IsInstanceOf(exception.InnerException); } [Test] - public void Parse_ExampleCompleteOutputFile_ExpectedExceedanceProbabilityCalculationOutputSet() + public void Parse_WithBetaResultOnOtherSection_ThrowsHydraRingFileParserException() { // Setup - var ringCombinMethod = 0; - var presentationSectionId = 1; - var mainMechanismId = 101; - var mainMechanismCombinMethod = 0; - var mechanismId = 101; - var sectionId = 35; - var layerId = 1; - var alternativeId = 1; - var beta = 2.74030893482198; - var alphaValues = new List - { - new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, 0, 1, -0.414848705277957), - new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, 0, 23, -0.499651535355214), - new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, 0, 51, -0.580660162401853), - new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, 1, 0, 0.463049288940854), - new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, 10, 0, 0.0434055709671213), - new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, 11, 0, 0.150241106274945), - new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, 17, 0, 0.0470275786268176) - }; + string path = Path.Combine(testDirectory, validFile); + var parser = new ExceedanceProbabilityCalculationParser(); - var exceedanceProbabilityCalculationExceptionParser = new ExceedanceProbabilityCalculationParser(); - var workingDirectory = Path.Combine(testDataPath, "complete"); + // Call + TestDelegate test = () => parser.Parse(path, 0); + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("Er is geen resultaat voor de betrouwbaarheidsindex van de faalkans gevonden in de Hydra-Ring uitvoerdatabase.", exception.Message); + Assert.IsInstanceOf(exception.InnerException); + } + + [Test] + public void Parse_ValidFileWithBetaResult_OutputSet() + { + // Setup + string path = Path.Combine(testDirectory, validFile); + var parser = new ExceedanceProbabilityCalculationParser(); + // Call - exceedanceProbabilityCalculationExceptionParser.Parse(workingDirectory, sectionId); + parser.Parse(path, 1); // Assert - ExceedanceProbabilityCalculationOutput exceedanceProbabilityCalculationOutput = exceedanceProbabilityCalculationExceptionParser.Output; - Assert.IsNotNull(exceedanceProbabilityCalculationOutput); - Assert.AreEqual(ringCombinMethod, exceedanceProbabilityCalculationOutput.RingCombinMethod); - Assert.AreEqual(presentationSectionId, exceedanceProbabilityCalculationOutput.PresentationSectionId); - Assert.AreEqual(mainMechanismId, exceedanceProbabilityCalculationOutput.MainMechanismId); - Assert.AreEqual(mainMechanismCombinMethod, exceedanceProbabilityCalculationOutput.MainMechanismCombinMethod); - Assert.AreEqual(mechanismId, exceedanceProbabilityCalculationOutput.MechanismId); - Assert.AreEqual(layerId, exceedanceProbabilityCalculationOutput.LayerId); - Assert.AreEqual(alternativeId, exceedanceProbabilityCalculationOutput.AlternativeId); - Assert.AreEqual(beta, exceedanceProbabilityCalculationOutput.Beta); + Assert.AreEqual(3.42848, parser.Output.Value); + } - Assert.AreEqual(alphaValues.Count, exceedanceProbabilityCalculationOutput.Alphas.Count); - for (var i = 0; i < alphaValues.Count; i++) - { - var expectedAlpha = alphaValues[i]; - var actualAlpha = exceedanceProbabilityCalculationOutput.Alphas[i]; + [Test] + public void Parse_BetaNull_ThrowHydraRingFileParserException() + { + // Setup + string path = Path.Combine(testDirectory, betaNull); + var parser = new ExceedanceProbabilityCalculationParser(); - Assert.AreEqual(expectedAlpha.RingCombinMethod, actualAlpha.RingCombinMethod); - Assert.AreEqual(expectedAlpha.PresentationSectionId, actualAlpha.PresentationSectionId); - Assert.AreEqual(expectedAlpha.MainMechanismId, actualAlpha.MainMechanismId); - Assert.AreEqual(expectedAlpha.MainMechanismCombinMethod, actualAlpha.MainMechanismCombinMethod); - Assert.AreEqual(expectedAlpha.MechanismId, actualAlpha.MechanismId); - Assert.AreEqual(expectedAlpha.LayerId, actualAlpha.LayerId); - Assert.AreEqual(expectedAlpha.AlternativeId, actualAlpha.AlternativeId); - Assert.AreEqual(expectedAlpha.VariableId, actualAlpha.VariableId); - Assert.AreEqual(expectedAlpha.LoadVariableId, actualAlpha.LoadVariableId); - Assert.AreEqual(expectedAlpha.Alpha, actualAlpha.Alpha); - } + // Call + TestDelegate test = () => parser.Parse(path, 1); - Assert.IsTrue(TestHelper.CanOpenFileForWrite(Path.Combine(workingDirectory, HydraRingFileConstants.WorkingDatabaseFileName))); + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("Er is geen resultaat voor de betrouwbaarheidsindex van de faalkans gevonden in de Hydra-Ring uitvoerdatabase.", exception.Message); + Assert.IsInstanceOf(exception.InnerException); } } } \ No newline at end of file Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Ringtoets.HydraRing.Calculation.Test.csproj =================================================================== diff -u -rc235d644419c9f398fd806f7dce2592f0974ac97 -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Ringtoets.HydraRing.Calculation.Test.csproj (.../Ringtoets.HydraRing.Calculation.Test.csproj) (revision c235d644419c9f398fd806f7dce2592f0974ac97) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Ringtoets.HydraRing.Calculation.Test.csproj (.../Ringtoets.HydraRing.Calculation.Test.csproj) (revision b253fd5ebc5d5800f5757be8b04820cb4ca05724) @@ -93,9 +93,6 @@ - - - Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/BetaNull/output.sqlite =================================================================== diff -u Binary files differ Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/EmptyDatabase/output.sqlite =================================================================== diff -u Binary files differ Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/InvalidFile/output.sqlite =================================================================== diff -u Binary files differ Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/ValidFile/output.sqlite =================================================================== diff -u Binary files differ Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/complete/temp.sqlite =================================================================== diff -u -r16d6d5ad38a45e4e0e8b3a9b41b3383d31595a36 -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 Binary files differ Fisheye: Tag b253fd5ebc5d5800f5757be8b04820cb4ca05724 refers to a dead (removed) revision in file `Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/empty/temp.sqlite'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/withoutAlphaResults/temp.sqlite =================================================================== diff -u -r16d6d5ad38a45e4e0e8b3a9b41b3383d31595a36 -rb253fd5ebc5d5800f5757be8b04820cb4ca05724 Binary files differ