Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationAlphaOutput.cs
===================================================================
diff -u
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationAlphaOutput.cs (revision 0)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationAlphaOutput.cs (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -0,0 +1,102 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+namespace Ringtoets.HydraRing.Calculation.Data.Output
+{
+ ///
+ /// Container of all relevant output generated by a type I calculation via Hydra-Ring:
+ /// Given a set of random variables, compute the probability of failure.
+ ///
+ public class ExceedanceProbabilityCalculationAlphaOutput
+ {
+ ///
+ /// Creates a new instance of .
+ ///
+ /// The ring combine method used.
+ /// The presentation section id used.
+ /// The main mechanism id.
+ /// The main mechanism combine method used.
+ /// The mechanism id used.
+ /// The section id used.
+ /// The layer id used.
+ /// The alternative id used.
+ /// The alpha value.
+ public ExceedanceProbabilityCalculationAlphaOutput(int ringCombinMethod, int presentationSectionId,
+ int mainMechanismId, int mainMechanismCombinMethod, int mechanismId,
+ int sectionId, int layerId, int alternativeId, double alpha)
+ {
+ RingCombinMethod = ringCombinMethod;
+ PresentationSectionId = presentationSectionId;
+ MainMechanismId = mainMechanismId;
+ MainMechanismCombinMethod = mainMechanismCombinMethod;
+ MechanismId = mechanismId;
+ SectionId = sectionId;
+ LayerId = layerId;
+ AlternativeId = alternativeId;
+ Alpha = alpha;
+ }
+
+ ///
+ /// Gets the Ring Combine Method.
+ ///
+ public int RingCombinMethod { get; private set; }
+
+ ///
+ /// Gets the Presentation Section Id.
+ ///
+ public int PresentationSectionId { get; private set; }
+
+ ///
+ /// Gets the Main Mechanism Id.
+ ///
+ public int MainMechanismId { get; private set; }
+
+ ///
+ /// Gets the Main Mechanism Combine Method.
+ ///
+ public int MainMechanismCombinMethod { get; private set; }
+
+ ///
+ /// Gets the Mechanism Id.
+ ///
+ public int MechanismId { get; private set; }
+
+ ///
+ /// Gets the Section Id.
+ ///
+ public int SectionId { get; private set; }
+
+ ///
+ /// Gets the Layer Id.
+ ///
+ public int LayerId { get; private set; }
+
+ ///
+ /// Gets the Alternative Id.
+ ///
+ public int AlternativeId { get; private set; }
+
+ ///
+ /// Gets the Alpha result.
+ ///
+ public double Alpha { get; private set; }
+ }
+}
\ No newline at end of file
Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationOutput.cs
===================================================================
diff -u -r93fc2b3de813b7161532592a531b7f0bb5e39249 -r9d378b8fa49ea011d8f4d229b5970f11c76f8305
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationOutput.cs (.../ExceedanceProbabilityCalculationOutput.cs) (revision 93fc2b3de813b7161532592a531b7f0bb5e39249)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/ExceedanceProbabilityCalculationOutput.cs (.../ExceedanceProbabilityCalculationOutput.cs) (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -32,15 +32,15 @@
///
/// Creates a new instance of .
///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
+ /// The ring combine method used.
+ /// The presentation section id used.
+ /// The main mechanism id.
+ /// The main mechanism combine method used.
+ /// The mechanism id used.
+ /// The section id used.
+ /// The layer id used.
+ /// The alternative id used.
+ /// The beta value.
public ExceedanceProbabilityCalculationOutput(int ringCombinMethod, int presentationSectionId,
int mainMechanismId, int mainMechanismCombinMethod, int mechanismId,
int sectionId, int layerId, int alternativeId, double beta)
@@ -54,7 +54,7 @@
LayerId = layerId;
AlternativeId = alternativeId;
Beta = beta;
- AplhaValues = new List();
+ Alphas = new List();
}
///
@@ -105,6 +105,6 @@
///
/// Gets the Alpha result values.
///
- public IList AplhaValues { get; private set; }
+ public IList Alphas { get; private set; }
}
}
\ No newline at end of file
Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/ExceedanceProbabilityCalculationParser.cs
===================================================================
diff -u
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/ExceedanceProbabilityCalculationParser.cs (revision 0)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/ExceedanceProbabilityCalculationParser.cs (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -0,0 +1,200 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SQLite;
+using Ringtoets.HydraRing.Calculation.Data.Output;
+
+namespace Ringtoets.HydraRing.Calculation.Parsers
+{
+ ///
+ /// Parser for the output of a Hydra-Ring type I calculation via Hydra-Ring:
+ /// Given a set of random variables, compute the probability of failure.
+ ///
+ internal static class ExceedanceProbabilityCalculationParser
+ {
+ 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 alphaResultsQuery = "SELECT RingCombinMethod, PresentationSectionId, MainMechanismId, MainMechanismCombinMethod, MechanismId, LayerId, AlternativeId, Alpha " +
+ "FROM AlphaResults " +
+ "WHERE BetaId = @BetaId " +
+ "ORDER BY BetaId, VariableId, LoadVariableId;";
+
+ ///
+ /// Tries to parse an object from the provided and .
+ ///
+ /// The path to the file which contains the output of the Hydra-Ring type I calculation.
+ /// The section id to get the object for.
+ /// A corresponding to the section id or null otherwise.
+ public static ExceedanceProbabilityCalculationOutput Parse(string outputFilePath, int sectionId)
+ {
+ try
+ {
+ return DoParse(outputFilePath, sectionId);
+ }
+ catch
+ {
+ return null;
+ }
+ }
+
+ private static ExceedanceProbabilityCalculationOutput DoParse(string outputFilePath, int sectionId)
+ {
+ using (var sqLiteConnection = OpenConnection(outputFilePath))
+ {
+ sqLiteConnection.Open();
+
+ int betaId;
+ var exceedanceProbabilityCalculationOutput = ReadExceedanceProbabilityCalculationOutput(sectionId, sqLiteConnection, out betaId);
+
+ foreach (var alpha in ReadExceedanceProbabilityCalculationAlphaOutput(sectionId, betaId, sqLiteConnection))
+ {
+ exceedanceProbabilityCalculationOutput.Alphas.Add(alpha);
+ }
+
+ sqLiteConnection.Close();
+ return exceedanceProbabilityCalculationOutput;
+ }
+ }
+
+ private static SQLiteDataReader CreateDataReader(SQLiteConnection connection, string queryString, params SQLiteParameter[] parameters)
+ {
+ using (var query = new SQLiteCommand(connection)
+ {
+ CommandText = queryString
+ })
+ {
+ query.Parameters.AddRange(parameters);
+ return query.ExecuteReader();
+ }
+ }
+
+ private static SQLiteConnection OpenConnection(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 alpha = Convert.ToDouble(sqLiteDataReader["Alpha"]);
+ return new ExceedanceProbabilityCalculationAlphaOutput(
+ ringCombinMethod, presentationSectionId, mainMechanismId, mainMechanismCombinMethod,
+ mechanismId, sectionId, layerId, alternativeId, 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())
+ {
+ betaId = 0;
+ return null;
+ }
+ 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/Parsers/TargetProbabilityCalculationParser.cs
===================================================================
diff -u -rf876f859ab663d6970e7051d6f079de99f3ff7fb -r9d378b8fa49ea011d8f4d229b5970f11c76f8305
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/TargetProbabilityCalculationParser.cs (.../TargetProbabilityCalculationParser.cs) (revision f876f859ab663d6970e7051d6f079de99f3ff7fb)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/TargetProbabilityCalculationParser.cs (.../TargetProbabilityCalculationParser.cs) (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -33,7 +33,7 @@
internal static class TargetProbabilityCalculationParser
{
///
- /// Tries to parse a object from the provided output file path for the provided section id.
+ /// Tries to parse a object from the provided for the provided .
///
/// The path to the file which contains the output of the Hydra-Ring type 2 calculation.
/// The section id to get the object for.
Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Ringtoets.HydraRing.Calculation.csproj
===================================================================
diff -u -r93fc2b3de813b7161532592a531b7f0bb5e39249 -r9d378b8fa49ea011d8f4d229b5970f11c76f8305
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Ringtoets.HydraRing.Calculation.csproj (.../Ringtoets.HydraRing.Calculation.csproj) (revision 93fc2b3de813b7161532592a531b7f0bb5e39249)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Ringtoets.HydraRing.Calculation.csproj (.../Ringtoets.HydraRing.Calculation.csproj) (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -37,6 +37,11 @@
+
+
+ ..\..\..\..\packages\System.Data.SQLite.Core.1.0.99.0\lib\net40\System.Data.SQLite.dll
+ True
+
@@ -49,9 +54,11 @@
+
+
@@ -470,6 +477,13 @@
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
\ No newline at end of file
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationAlphaOutputTest.cs
===================================================================
diff -u
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationAlphaOutputTest.cs (revision 0)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationAlphaOutputTest.cs (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -0,0 +1,63 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using NUnit.Framework;
+using Ringtoets.HydraRing.Calculation.Data.Output;
+
+namespace Ringtoets.HydraRing.Calculation.Test.Data.Output
+{
+ [TestFixture]
+ public class ExceedanceProbabilityCalculationAlphaOutputTest
+ {
+ [Test]
+ public void Constructor_Always_ExpectedValues()
+ {
+ // Setup
+ int ringCombinMethod = 1;
+ int presentationSectionId = 2;
+ int mainMechanismId = 3;
+ int mainMechanismCombinMethod = 4;
+ int mechanismId = 5;
+ int sectionId = 6;
+ int layerId = 7;
+ int alternativeId = 8;
+ double alpha = 9.9;
+
+ // Call
+ ExceedanceProbabilityCalculationAlphaOutput exceedanceProbabilityCalculationOutput =
+ new ExceedanceProbabilityCalculationAlphaOutput(ringCombinMethod, presentationSectionId,
+ mainMechanismId, mainMechanismCombinMethod, mechanismId,
+ sectionId, layerId, alternativeId, alpha);
+
+ // Assert
+ 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(sectionId, exceedanceProbabilityCalculationOutput.SectionId);
+ Assert.AreEqual(layerId, exceedanceProbabilityCalculationOutput.LayerId);
+ Assert.AreEqual(alternativeId, exceedanceProbabilityCalculationOutput.AlternativeId);
+ Assert.AreEqual(alpha, exceedanceProbabilityCalculationOutput.Alpha);
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationOutputTest.cs
===================================================================
diff -u -r93fc2b3de813b7161532592a531b7f0bb5e39249 -r9d378b8fa49ea011d8f4d229b5970f11c76f8305
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationOutputTest.cs (.../ExceedanceProbabilityCalculationOutputTest.cs) (revision 93fc2b3de813b7161532592a531b7f0bb5e39249)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/ExceedanceProbabilityCalculationOutputTest.cs (.../ExceedanceProbabilityCalculationOutputTest.cs) (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -19,7 +19,6 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
-using System.Collections.Generic;
using NUnit.Framework;
using Ringtoets.HydraRing.Calculation.Data.Output;
@@ -59,29 +58,24 @@
Assert.AreEqual(layerId, exceedanceProbabilityCalculationOutput.LayerId);
Assert.AreEqual(alternativeId, exceedanceProbabilityCalculationOutput.AlternativeId);
Assert.AreEqual(beta, exceedanceProbabilityCalculationOutput.Beta);
- CollectionAssert.IsEmpty(exceedanceProbabilityCalculationOutput.AplhaValues);
+ CollectionAssert.IsEmpty(exceedanceProbabilityCalculationOutput.Alphas);
}
[Test]
- public void AlphaValues_VariousValues_ReturnsExpectedValues()
+ public void Alphas_VariousValues_ReturnsExpectedValues()
{
// Setup
- var alphaValues = new List
- {
- 1.1, 2.2
- };
+ var exceedanceProbabilityCalculationAlphaOutput = new ExceedanceProbabilityCalculationAlphaOutput(11, 22, 33, 44, 55, 66, 77, 88, 99.99);
+
ExceedanceProbabilityCalculationOutput exceedanceProbabilityCalculationOutput =
- new ExceedanceProbabilityCalculationOutput(1, 2, 3, 4, 5, 6, 7, 8, 9);
+ new ExceedanceProbabilityCalculationOutput(1, 2, 3, 4, 5, 6, 7, 8, 9.9);
// Call
- foreach (var alphaValue in alphaValues)
- {
- exceedanceProbabilityCalculationOutput.AplhaValues.Add(alphaValue);
- }
+ exceedanceProbabilityCalculationOutput.Alphas.Add(exceedanceProbabilityCalculationAlphaOutput);
// Assert
- CollectionAssert.IsNotEmpty(exceedanceProbabilityCalculationOutput.AplhaValues);
- CollectionAssert.AreEqual(alphaValues, exceedanceProbabilityCalculationOutput.AplhaValues);
+ CollectionAssert.IsNotEmpty(exceedanceProbabilityCalculationOutput.Alphas);
+ Assert.AreEqual(exceedanceProbabilityCalculationAlphaOutput, exceedanceProbabilityCalculationOutput.Alphas[0]);
}
}
}
\ No newline at end of file
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/ExceedanceProbabilityCalculationParserTest.cs
===================================================================
diff -u
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/ExceedanceProbabilityCalculationParserTest.cs (revision 0)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/ExceedanceProbabilityCalculationParserTest.cs (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -0,0 +1,159 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System.Collections.Generic;
+using System.IO;
+using Core.Common.TestUtil;
+using NUnit.Framework;
+using Ringtoets.HydraRing.Calculation.Data.Output;
+using Ringtoets.HydraRing.Calculation.Parsers;
+
+namespace Ringtoets.HydraRing.Calculation.Test.Parsers
+{
+ [TestFixture]
+ public class ExceedanceProbabilityCalculationParserTest
+ {
+ private readonly string testDataPath = Path.Combine(TestHelper.GetTestDataPath(TestDataPath.Ringtoets.HydraRing.Calculation, "Parsers"), "ExceedanceProbabilityCalculationParser");
+
+ [Test]
+ public void Parse_NotExistingOutputFile_ReturnsNull()
+ {
+ // Setup
+ ExceedanceProbabilityCalculationOutput exceedanceProbabilityCalculationOutput = null;
+ var filePath = Path.Combine(testDataPath, "notExisting.sqlite");
+
+ // Call
+ TestDelegate test = () => exceedanceProbabilityCalculationOutput = ExceedanceProbabilityCalculationParser.Parse(filePath, 1);
+
+ // Assert
+ Assert.DoesNotThrow(test);
+ Assert.IsNull(exceedanceProbabilityCalculationOutput);
+ Assert.IsTrue(TestHelper.CanOpenFileForWrite(filePath));
+ }
+
+ [Test]
+ public void Parse_EmptyOutputFile_ReturnsNull()
+ {
+ // Setup
+ ExceedanceProbabilityCalculationOutput exceedanceProbabilityCalculationOutput = null;
+ var filePath = Path.Combine(testDataPath, "empty.sqlite");
+
+ // Call
+ TestDelegate test = () => exceedanceProbabilityCalculationOutput = ExceedanceProbabilityCalculationParser.Parse(filePath, 1);
+
+ // Assert
+ Assert.DoesNotThrow(test);
+ Assert.IsNull(exceedanceProbabilityCalculationOutput);
+ Assert.IsTrue(TestHelper.CanOpenFileForWrite(filePath));
+ }
+
+ [Test]
+ public void Parse_ExampleCompleteOutputFile_ReturnsExpecteExceedanceProbabilityCalculationOutput()
+ {
+ // Setup
+ var filePath = Path.Combine(testDataPath, "complete.sqlite");
+ 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.414848705277957),
+ new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, -0.499651535355214),
+ new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, -0.580660162401853),
+ new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, 0.463049288940854),
+ new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, 0.0434055709671213),
+ new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, 0.150241106274945),
+ new ExceedanceProbabilityCalculationAlphaOutput(0, 1, 101, 0, 101, 35, 1, 1, 0.0470275786268176)
+ };
+
+ // Call
+ ExceedanceProbabilityCalculationOutput exceedanceProbabilityCalculationOutput = ExceedanceProbabilityCalculationParser.Parse(filePath, sectionId);
+
+ // Assert
+ 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(alphaValues.Count, exceedanceProbabilityCalculationOutput.Alphas.Count);
+ for (var i = 0; i < alphaValues.Count; i++)
+ {
+ var expectedAlpha = alphaValues[i];
+ var actualAlpha = exceedanceProbabilityCalculationOutput.Alphas[i];
+
+ 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.Alpha, actualAlpha.Alpha);
+ }
+
+ Assert.IsTrue(TestHelper.CanOpenFileForWrite(filePath));
+ }
+
+ [Test]
+ public void Parse_FileWithoutTableAlphaResults_ReturnsNull()
+ {
+ // Setup
+ ExceedanceProbabilityCalculationOutput exceedanceProbabilityCalculationOutput = null;
+ var filePath = Path.Combine(testDataPath, "withoutAlphaResults.sqlite");
+
+ // Call
+ TestDelegate test = () => exceedanceProbabilityCalculationOutput = ExceedanceProbabilityCalculationParser.Parse(filePath, 1);
+
+ // Assert
+ Assert.DoesNotThrow(test);
+ Assert.IsNull(exceedanceProbabilityCalculationOutput);
+ Assert.IsTrue(TestHelper.CanOpenFileForWrite(filePath));
+ }
+
+ [Test]
+ public void Parse_ExampleHydraRingOutputFileNotContainingSectionId_ReturnsNull()
+ {
+ // Setup
+ var sectionId = 1;
+ var filePath = Path.Combine(testDataPath, "complete.sqlite");
+ ExceedanceProbabilityCalculationOutput exceedanceProbabilityCalculationOutput = null;
+
+ // Call
+ TestDelegate test = () => exceedanceProbabilityCalculationOutput = ExceedanceProbabilityCalculationParser.Parse(filePath, sectionId);
+
+ // Assert
+ Assert.DoesNotThrow(test);
+ Assert.IsNull(exceedanceProbabilityCalculationOutput);
+ Assert.IsTrue(TestHelper.CanOpenFileForWrite(filePath));
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/TargetProbabilityCalculationParserTest.cs
===================================================================
diff -u -rf876f859ab663d6970e7051d6f079de99f3ff7fb -r9d378b8fa49ea011d8f4d229b5970f11c76f8305
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/TargetProbabilityCalculationParserTest.cs (.../TargetProbabilityCalculationParserTest.cs) (revision f876f859ab663d6970e7051d6f079de99f3ff7fb)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/TargetProbabilityCalculationParserTest.cs (.../TargetProbabilityCalculationParserTest.cs) (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -29,45 +29,52 @@
[TestFixture]
public class TargetProbabilityCalculationParserTest
{
- private readonly string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.HydraRing.Calculation, "Parsers");
+ private readonly string testDataPath = Path.Combine(TestHelper.GetTestDataPath(TestDataPath.Ringtoets.HydraRing.Calculation, "Parsers"), "TargetProbabilityCalculationParser");
[Test]
public void Parse_NotExistingOutputFile_ReturnsNull()
{
+ // Call
var targetProbabilityCalculationOutput = TargetProbabilityCalculationParser.Parse(Path.Combine(testDataPath, "notExisting.txt"), 1);
+ // Assert
Assert.IsNull(targetProbabilityCalculationOutput);
}
[Test]
public void Parse_EmptyOutputFile_ReturnsNull()
{
+ // Call
var targetProbabilityCalculationOutput = TargetProbabilityCalculationParser.Parse(Path.Combine(testDataPath, "empty.txt"), 1);
+ // Assert
Assert.IsNull(targetProbabilityCalculationOutput);
}
[Test]
- public void Parse_ExampleHydraRingOutputFileContainingSectionIds_ReturnsExpectedTargetProbabilityCalculationResult()
+ [TestCase(1, 1.1, 11.11)]
+ [TestCase(3, 3.3, 33.33)]
+ public void Parse_ExampleHydraRingOutputFileContainingSectionIds_ReturnsExpectedTargetProbabilityCalculationResult(int sectionId, double result, double actual)
{
+ // Setup
var outputFilePath = Path.Combine(testDataPath, "exampleOutputTable.txt");
- var targetProbabilityCalculationOutput = TargetProbabilityCalculationParser.Parse(outputFilePath, 1);
- Assert.IsNotNull(targetProbabilityCalculationOutput);
- Assert.AreEqual(1.1, targetProbabilityCalculationOutput.Result);
- Assert.AreEqual(11.11, targetProbabilityCalculationOutput.ActualTargetProbability);
+ // Call
+ var targetProbabilityCalculationOutput = TargetProbabilityCalculationParser.Parse(outputFilePath, sectionId);
- targetProbabilityCalculationOutput = TargetProbabilityCalculationParser.Parse(outputFilePath, 3);
+ // Assert
Assert.IsNotNull(targetProbabilityCalculationOutput);
- Assert.AreEqual(3.3, targetProbabilityCalculationOutput.Result);
- Assert.AreEqual(33.33, targetProbabilityCalculationOutput.ActualTargetProbability);
+ Assert.AreEqual(result, targetProbabilityCalculationOutput.Result);
+ Assert.AreEqual(actual, targetProbabilityCalculationOutput.ActualTargetProbability);
}
[Test]
public void Parse_ExampleHydraRingOutputFileNotContainingSectionId_ReturnsNull()
{
+ // Call
var targetProbabilityCalculationOutput = TargetProbabilityCalculationParser.Parse(Path.Combine(testDataPath, "exampleOutputTable.txt"), 2);
+ // Assert
Assert.IsNull(targetProbabilityCalculationOutput);
}
}
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Ringtoets.HydraRing.Calculation.Test.csproj
===================================================================
diff -u -r93fc2b3de813b7161532592a531b7f0bb5e39249 -r9d378b8fa49ea011d8f4d229b5970f11c76f8305
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Ringtoets.HydraRing.Calculation.Test.csproj (.../Ringtoets.HydraRing.Calculation.Test.csproj) (revision 93fc2b3de813b7161532592a531b7f0bb5e39249)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Ringtoets.HydraRing.Calculation.Test.csproj (.../Ringtoets.HydraRing.Calculation.Test.csproj) (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -62,8 +62,10 @@
+
+
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/complete.sqlite
===================================================================
diff -u
Binary files differ
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/empty.sqlite
===================================================================
diff -u
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/empty.sqlite (revision 0)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/empty.sqlite (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -0,0 +1 @@
\ No newline at end of file
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/notExisting.sqlite
===================================================================
diff -u
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/notExisting.sqlite (revision 0)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/notExisting.sqlite (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -0,0 +1 @@
\ No newline at end of file
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/ExceedanceProbabilityCalculationParser/withoutAlphaResults.sqlite
===================================================================
diff -u
Binary files differ
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/TargetProbabilityCalculationParser/empty.txt
===================================================================
diff -u
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/TargetProbabilityCalculationParser/empty.txt (revision 0)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/TargetProbabilityCalculationParser/empty.txt (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -0,0 +1 @@
\ No newline at end of file
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/TargetProbabilityCalculationParser/exampleOutputTable.txt
===================================================================
diff -u
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/TargetProbabilityCalculationParser/exampleOutputTable.txt (revision 0)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/TargetProbabilityCalculationParser/exampleOutputTable.txt (revision 9d378b8fa49ea011d8f4d229b5970f11c76f8305)
@@ -0,0 +1,5 @@
+Testing region:
+------------------------------------------------------------------------------------------------------------------------
+ SectionID Mechanism Layer Alternative XCoordinate YCoordinate Result Reliability
+ 1 1 1 1 0 0 1.1 11.11
+ 3 1 1 1 0 0 3.3 33.33
\ No newline at end of file
Fisheye: Tag 9d378b8fa49ea011d8f4d229b5970f11c76f8305 refers to a dead (removed) revision in file `Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/empty.txt'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 9d378b8fa49ea011d8f4d229b5970f11c76f8305 refers to a dead (removed) revision in file `Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/exampleOutputTable.txt'.
Fisheye: No comparison available. Pass `N' to diff?