Index: Riskeer/Piping/test/Riskeer.Piping.IO.Test/Configurations/PipingCalculationConfigurationReaderTest.cs =================================================================== diff -u -raaebeb45369f63c6eab19941e385faf409c23088 -r03cd6ce69fe32fa074e7baef0c17532ae029b2f4 --- Riskeer/Piping/test/Riskeer.Piping.IO.Test/Configurations/PipingCalculationConfigurationReaderTest.cs (.../PipingCalculationConfigurationReaderTest.cs) (revision aaebeb45369f63c6eab19941e385faf409c23088) +++ Riskeer/Piping/test/Riskeer.Piping.IO.Test/Configurations/PipingCalculationConfigurationReaderTest.cs (.../PipingCalculationConfigurationReaderTest.cs) (revision 03cd6ce69fe32fa074e7baef0c17532ae029b2f4) @@ -207,7 +207,6 @@ // Assert var configuration = (PipingCalculationConfiguration) readConfigurationItems.Single(); - Assert.IsNaN(configuration.AssessmentLevel); Assert.IsNaN(configuration.EntryPointL); Assert.IsNaN(configuration.ExitPointL); Assert.IsNaN(configuration.PhreaticLevelExit.Mean); @@ -239,7 +238,6 @@ // Assert var configuration = (PipingCalculationConfiguration) readConfigurationItems.Single(); - Assert.IsNotNull(configuration.AssessmentLevel); Assert.IsNotNull(configuration.EntryPointL); Assert.IsNotNull(configuration.ExitPointL); Assert.IsNotNull(configuration.PhreaticLevelExit.Mean); @@ -248,7 +246,6 @@ Assert.IsNotNull(configuration.DampingFactorExit.StandardDeviation); Assert.IsNotNull(configuration.Scenario.Contribution); - Assert.IsTrue(double.IsNegativeInfinity(configuration.AssessmentLevel.Value)); Assert.IsTrue(double.IsNegativeInfinity(configuration.EntryPointL.Value)); Assert.IsTrue(double.IsPositiveInfinity(configuration.ExitPointL.Value)); Assert.IsTrue(double.IsNegativeInfinity(configuration.PhreaticLevelExit.Mean.Value)); @@ -552,7 +549,7 @@ private void SetCalculationType(string readFilePath, string writeFilePath) { string text = File.ReadAllText(readFilePath); - text = text.Replace("", $"{CalculationType}"); + text = text.Replace("", $"<{CalculationType}/>"); File.WriteAllText(writeFilePath, text); } } @@ -608,6 +605,40 @@ AssertConfiguration(configuration, hydraulicBoundaryLocation); } + [Test] + public void Read_ValidConfigurationWithSemiProbabilisticCalculationContainingInfinities_ReturnExpectedReadPipingCalculation() + { + // Setup + string filePath = Path.Combine(testDirectoryPath, "validConfigurationSemiProbabilisticCalculationContainingInfinities.xml"); + + var reader = new PipingCalculationConfigurationReader(filePath); + + // Call + IEnumerable readConfigurationItems = reader.Read().ToArray(); + + // Assert + var configuration = (PipingCalculationConfiguration) readConfigurationItems.Single(); + + Assert.IsNotNull(configuration.AssessmentLevel); + Assert.IsTrue(double.IsNegativeInfinity(configuration.AssessmentLevel.Value)); + } + + [Test] + public void Read_ValidConfigurationWithSemiProbabilisticCalculationContainingNaNs_ReturnExpectedReadPipingCalculation() + { + // Setup + string filePath = Path.Combine(testDirectoryPath, "validConfigurationSemiProbabilisticCalculationContainingNaNs.xml"); + var reader = new PipingCalculationConfigurationReader(filePath); + + // Call + IEnumerable readConfigurationItems = reader.Read().ToArray(); + + // Assert + var configuration = (PipingCalculationConfiguration) readConfigurationItems.Single(); + + Assert.IsNaN(configuration.AssessmentLevel); + } + protected override void AssertConfiguration(PipingCalculationConfiguration configuration, bool hydraulicBoundaryLocation = true) { AssertConfigurationGeneralProperties(configuration); @@ -661,6 +692,21 @@ Assert.IsNull(configuration.AssessmentLevel); Assert.AreEqual("Locatie", configuration.HydraulicBoundaryLocationName); } + + [Test] + public void Constructor_FileInvalidBasedOnSchemaDefinition_ThrowCriticalFileReadException() + { + // Setup + string filePath = Path.Combine(testDirectoryPath, "invalidProbabilisticContainingWaterLevel.xml"); + + // Call + void Call() => new PipingCalculationConfigurationReader(filePath); + + // Assert + var exception = Assert.Throws(Call); + Assert.IsInstanceOf(exception.InnerException); + StringAssert.Contains("Element 'waterstand' cannot appear more than once if content model type is \"all\".", exception.InnerException?.Message); + } } } } \ No newline at end of file Index: Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationCalculationContainingInfinities.xml =================================================================== diff -u -raaebeb45369f63c6eab19941e385faf409c23088 -r03cd6ce69fe32fa074e7baef0c17532ae029b2f4 --- Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationCalculationContainingInfinities.xml (.../validConfigurationCalculationContainingInfinities.xml) (revision aaebeb45369f63c6eab19941e385faf409c23088) +++ Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationCalculationContainingInfinities.xml (.../validConfigurationCalculationContainingInfinities.xml) (revision 03cd6ce69fe32fa074e7baef0c17532ae029b2f4) @@ -2,7 +2,6 @@ - -INF -INF INF Index: Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationCalculationContainingNaNs.xml =================================================================== diff -u -raaebeb45369f63c6eab19941e385faf409c23088 -r03cd6ce69fe32fa074e7baef0c17532ae029b2f4 --- Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationCalculationContainingNaNs.xml (.../validConfigurationCalculationContainingNaNs.xml) (revision aaebeb45369f63c6eab19941e385faf409c23088) +++ Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationCalculationContainingNaNs.xml (.../validConfigurationCalculationContainingNaNs.xml) (revision 03cd6ce69fe32fa074e7baef0c17532ae029b2f4) @@ -2,7 +2,6 @@ - NaN NaN NaN Index: Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationSemiProbabilisticCalculationContainingInfinities.xml =================================================================== diff -u --- Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationSemiProbabilisticCalculationContainingInfinities.xml (revision 0) +++ Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationSemiProbabilisticCalculationContainingInfinities.xml (revision 03cd6ce69fe32fa074e7baef0c17532ae029b2f4) @@ -0,0 +1,8 @@ + + + + + -INF + + + \ No newline at end of file Index: Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationSemiProbabilisticCalculationContainingNaNs.xml =================================================================== diff -u --- Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationSemiProbabilisticCalculationContainingNaNs.xml (revision 0) +++ Riskeer/Piping/test/Riskeer.Piping.IO.Test/test-data/PipingCalculationConfigurationReader/validConfigurationSemiProbabilisticCalculationContainingNaNs.xml (revision 03cd6ce69fe32fa074e7baef0c17532ae029b2f4) @@ -0,0 +1,8 @@ + + + + + NaN + + + \ No newline at end of file