Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/OvertoppingCalculationWaveHeightParser.cs =================================================================== diff -u -r64d60335b1deab4bafd37f78f3514660cc4afb27 -re6c4824a5386338fb104c7e2c7caa1ca3f1688d7 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/OvertoppingCalculationWaveHeightParser.cs (.../OvertoppingCalculationWaveHeightParser.cs) (revision 64d60335b1deab4bafd37f78f3514660cc4afb27) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/OvertoppingCalculationWaveHeightParser.cs (.../OvertoppingCalculationWaveHeightParser.cs) (revision e6c4824a5386338fb104c7e2c7caa1ca3f1688d7) @@ -36,24 +36,26 @@ private const string isOvertoppingDominantColumn = "IsOvertoppingDominant"; private readonly string query = - $"SELECT Value as {waveHeightColumn}," + - $"(case when SubMechanismId is 102 then 1 else 0 end) as {isOvertoppingDominantColumn} FROM " + - "(SELECT d.OuterIterationId, d.PeriodId, BetaValue, ClosingSituationId, d.WindDirectionId, LevelTypeId, SubMechanismId " + - "FROM GoverningWind g " + - "JOIN DesignBeta d ON d.WindDirectionId = g.WindDirectionId AND d.OuterIterationId = g.OuterIterationId AND d.PeriodId = g.PeriodId " + - $"WHERE LevelTypeId = 7 AND d.SubMechanismId = 102 AND SectionId = {HydraRingDatabaseConstants.SectionIdParameterName} " + - "ORDER BY d.OuterIterationId DESC, d.PeriodId, BetaValue " + - "LIMIT 1) as g " + - "JOIN " + + "SELECT " + "(SELECT Value FROM GoverningWind g " + "JOIN DesignPointResults d ON d.WindDirectionId = g.WindDirectionId AND d.OuterIterationId = g.OuterIterationId AND d.PeriodId = g.PeriodId " + "JOIN DesignBeta db ON db.WindDirectionId = d.WindDirectionId AND db.ClosingSituationId = d.ClosingSituationId AND db.OuterIterationId = d.OuterIterationId " + "AND db.PeriodId = d.PeriodId " + $"WHERE OutputVariableId = 3 AND db.LevelTypeId = 7 AND db.SectionId = {HydraRingDatabaseConstants.SectionIdParameterName} " + - "ORDER BY d.OuterIterationId DESC, d.PeriodId, db.BetaValue " + - "LIMIT 1) " + - "Order By g.BetaValue " + - "LIMIT 1;"; + $"ORDER BY g.OuterIterationId DESC, d.PeriodId, db.BetaValue LIMIT 1) AS {waveHeightColumn}, " + + "(SELECT SubMechanismId = 102 " + + "FROM DesignBeta db " + + "JOIN " + + "(SELECT ClosingSituationId, d.PeriodId, d.OuterIterationId, d.WindDirectionId, d.LevelTypeId " + + "FROM GoverningWind g " + + "JOIN DesignBeta d ON d.WindDirectionId = g.WindDirectionId AND d.OuterIterationId = g.OuterIterationId And d.PeriodId = g.PeriodId " + + $"WHERE LevelTypeId = 7 AND SectionId = { HydraRingDatabaseConstants.SectionIdParameterName} " + + "AND SubmechanismId = 102 " + + "ORDER BY d.OuterIterationId DESC, d.PeriodId, BetaValue " + + "LIMIT 1) as s on s.WindDirectionId = db.WindDirectionId AND s.OuterIterationId = db.OuterIterationId AND s.PeriodId = db.PeriodId " + + "AND s.ClosingSituationId = db.ClosingSituationId AND s.LevelTypeId = db.LevelTypeId " + + "ORDER BY BetaValue " + + $"LIMIT 1) AS {isOvertoppingDominantColumn};"; /// /// Gets the output that was parsed from the output file. Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/OvertoppingCalculationWaveHeightParserTest.cs =================================================================== diff -u -r64d60335b1deab4bafd37f78f3514660cc4afb27 -re6c4824a5386338fb104c7e2c7caa1ca3f1688d7 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/OvertoppingCalculationWaveHeightParserTest.cs (.../OvertoppingCalculationWaveHeightParserTest.cs) (revision 64d60335b1deab4bafd37f78f3514660cc4afb27) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/OvertoppingCalculationWaveHeightParserTest.cs (.../OvertoppingCalculationWaveHeightParserTest.cs) (revision e6c4824a5386338fb104c7e2c7caa1ca3f1688d7) @@ -33,7 +33,7 @@ [TestFixture] public class OvertoppingCalculationWaveHeightParserTest { - private const string validFile = "ValidFile"; + private const string validFileOvertoppingDominant = "ValidFileOvertoppingDominant"; private static readonly string testDirectory = Path.Combine(TestHelper.GetTestDataPath(TestDataPath.Ringtoets.HydraRing.Calculation, "Parsers"), nameof(OvertoppingCalculationWaveHeightParser)); @@ -115,7 +115,7 @@ // Assert var exception = Assert.Throws(test); Assert.AreEqual("Er is geen resultaat voor overslag en overloop gevonden in de Hydra-Ring uitvoerdatabase.", exception.Message); - Assert.IsInstanceOf(exception.InnerException); + Assert.IsInstanceOf(exception.InnerException); } [Test] @@ -131,15 +131,15 @@ // Assert var exception = Assert.Throws(test); Assert.AreEqual("Er is geen resultaat voor overslag en overloop gevonden in de Hydra-Ring uitvoerdatabase.", exception.Message); - Assert.IsInstanceOf(exception.InnerException); + Assert.IsInstanceOf(exception.InnerException); } [Test] public void Parse_ErrorWhileReadingFile_ThrowsHydraRingFileParserException() { // Setup var parser = new OvertoppingCalculationWaveHeightParser(); - string workingDirectory = Path.Combine(testDirectory, validFile); + string workingDirectory = Path.Combine(testDirectory, validFileOvertoppingDominant); using (new DirectoryPermissionsRevoker(testDirectory, FileSystemRights.ReadData)) { @@ -171,18 +171,20 @@ } [Test] - public void Parse_ValidData_OutputSet() + [TestCase(validFileOvertoppingDominant, 0.26586599999999999, true)] + [TestCase("ValidFileOvertoppingNotDominant", 0.00035540600000000001, false)] + public void Parse_ValidData_OutputSet(string file, double expectedWaveHeight, bool expectedOvertoppingDominant) { // Setup - string path = Path.Combine(testDirectory, validFile); + string path = Path.Combine(testDirectory, file); var parser = new OvertoppingCalculationWaveHeightParser(); // Call parser.Parse(path, 1); // Assert - Assert.AreEqual(1.56783, parser.Output.WaveHeight); - Assert.IsTrue(parser.Output.IsOvertoppingDominant); + Assert.AreEqual(expectedWaveHeight, parser.Output.WaveHeight); + Assert.AreEqual(expectedOvertoppingDominant, parser.Output.IsOvertoppingDominant); } } } \ No newline at end of file Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/OvertoppingCalculationWaveHeightParser/ValidFile/1-output.sqlite =================================================================== diff -u -r1d8c35ad08fddf6471c168876fc01552af29fd6a -re6c4824a5386338fb104c7e2c7caa1ca3f1688d7 Binary files differ Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/OvertoppingCalculationWaveHeightParser/ValidFileOvertoppingDominant/1-output.sqlite =================================================================== diff -u Binary files differ Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/OvertoppingCalculationWaveHeightParser/ValidFileOvertoppingNotDominant/1-output.sqlite =================================================================== diff -u Binary files differ