Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Application.Ringtoets.Storage.csproj =================================================================== diff -u -rfe88135b797eda12b8e4d9b829036d2d7a52b10f -reec680fe322aea5d1ecf8fdf1f14a273afdf6c53 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Application.Ringtoets.Storage.csproj (.../Application.Ringtoets.Storage.csproj) (revision fe88135b797eda12b8e4d9b829036d2d7a52b10f) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Application.Ringtoets.Storage.csproj (.../Application.Ringtoets.Storage.csproj) (revision eec680fe322aea5d1ecf8fdf1f14a273afdf6c53) @@ -314,6 +314,7 @@ + Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/DikeHeightAssessmentOutputCreateExtensions.cs =================================================================== diff -u -r8cb270db5fbcb82f19d6f3a390f083e9e0516d8c -reec680fe322aea5d1ecf8fdf1f14a273afdf6c53 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/DikeHeightAssessmentOutputCreateExtensions.cs (.../DikeHeightAssessmentOutputCreateExtensions.cs) (revision 8cb270db5fbcb82f19d6f3a390f083e9e0516d8c) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/DikeHeightAssessmentOutputCreateExtensions.cs (.../DikeHeightAssessmentOutputCreateExtensions.cs) (revision eec680fe322aea5d1ecf8fdf1f14a273afdf6c53) @@ -19,23 +19,34 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using Application.Ringtoets.Storage.DbContext; using Ringtoets.GrassCoverErosionInwards.Data; namespace Application.Ringtoets.Storage.Create.GrassCoverErosionInwards { /// - /// Extension methods for related to creating a . + /// Extension methods for + /// related to creating a + /// or a . /// internal static class DikeHeightAssessmentOutputCreateExtensions { /// - /// Creates a based on the information of the . + /// Creates a + /// based on the information of the . /// /// The output to create a database entity for. /// A new . - internal static GrassCoverErosionInwardsDikeHeightOutputEntity Create(this SubCalculationAssessmentOutput output) + /// Thrown when + /// is null. + internal static GrassCoverErosionInwardsDikeHeightOutputEntity CreateDikeHeight(this SubCalculationAssessmentOutput output) { + if (output == null) + { + throw new ArgumentNullException(nameof(output)); + } + return new GrassCoverErosionInwardsDikeHeightOutputEntity { DikeHeight = double.IsNaN(output.Result) @@ -56,5 +67,41 @@ CalculationConvergence = (byte) output.CalculationConvergence }; } + + /// + /// Creates a + /// based on the information of the . + /// + /// The output to create a database entity for. + /// A new . + /// Thrown when + /// is null. + internal static GrassCoverErosionInwardsOvertoppingRateOutputEntity CreateOvertoppingRate(this SubCalculationAssessmentOutput output) + { + if (output == null) + { + throw new ArgumentNullException(nameof(output)); + } + + return new GrassCoverErosionInwardsOvertoppingRateOutputEntity + { + OvertoppingRate = double.IsNaN(output.Result) + ? (double?) null + : output.Result, + TargetProbability = double.IsNaN(output.TargetProbability) + ? (double?) null + : output.TargetProbability, + TargetReliability = double.IsNaN(output.TargetReliability) + ? (double?) null + : output.TargetReliability, + CalculatedProbability = double.IsNaN(output.CalculatedProbability) + ? (double?) null + : output.CalculatedProbability, + CalculatedReliability = double.IsNaN(output.CalculatedReliability) + ? (double?) null + : output.CalculatedReliability, + CalculationConvergence = (byte) output.CalculationConvergence + }; + } } } \ No newline at end of file Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensions.cs =================================================================== diff -u -r8cb270db5fbcb82f19d6f3a390f083e9e0516d8c -reec680fe322aea5d1ecf8fdf1f14a273afdf6c53 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensions.cs (.../GrassCoverErosionInwardsOutputCreateExtensions.cs) (revision 8cb270db5fbcb82f19d6f3a390f083e9e0516d8c) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensions.cs (.../GrassCoverErosionInwardsOutputCreateExtensions.cs) (revision eec680fe322aea5d1ecf8fdf1f14a273afdf6c53) @@ -52,17 +52,27 @@ }; AddEntityForDikeHeightAssessmentOutput(entity, output.DikeHeightAssessmentOutput); + AddEntityForOvertoppingRateAssessmentOutput(entity, output.OvertoppingRateAssessmentOutput); return entity; } - private static void AddEntityForDikeHeightAssessmentOutput(GrassCoverErosionInwardsOutputEntity entity, SubCalculationAssessmentOutput output) + private static void AddEntityForDikeHeightAssessmentOutput(GrassCoverErosionInwardsOutputEntity entity, + SubCalculationAssessmentOutput output) { - if (output == null) + if (output != null) { - return; + entity.GrassCoverErosionInwardsDikeHeightOutputEntities.Add(output.CreateDikeHeight()); } - entity.GrassCoverErosionInwardsDikeHeightOutputEntities.Add(output.Create()); } + + private static void AddEntityForOvertoppingRateAssessmentOutput(GrassCoverErosionInwardsOutputEntity entity, + SubCalculationAssessmentOutput output) + { + if (output != null) + { + entity.GrassCoverErosionInwardsOvertoppingRateOutputEntities.Add(output.CreateOvertoppingRate()); + } + } } } \ No newline at end of file Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensions.cs =================================================================== diff -u -r8cb270db5fbcb82f19d6f3a390f083e9e0516d8c -reec680fe322aea5d1ecf8fdf1f14a273afdf6c53 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensions.cs (.../GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensions.cs) (revision 8cb270db5fbcb82f19d6f3a390f083e9e0516d8c) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensions.cs (.../GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensions.cs) (revision eec680fe322aea5d1ecf8fdf1f14a273afdf6c53) @@ -19,25 +19,35 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using Application.Ringtoets.Storage.DbContext; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.GrassCoverErosionInwards.Data; namespace Application.Ringtoets.Storage.Read.GrassCoverErosionInwards { /// - /// Extension methods for related to creating - /// a . + /// Extension methods for + /// related to creating a . /// internal static class GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensions { /// - /// Reads the and use the information to construct a . + /// Reads the and use + /// the information to construct a . /// - /// The to create for. + /// The + /// to create for. /// A new . + /// Thrown when + /// is null. internal static SubCalculationAssessmentOutput Read(this GrassCoverErosionInwardsDikeHeightOutputEntity entity) { + if (entity == null) + { + throw new ArgumentNullException(nameof(entity)); + } + return new SubCalculationAssessmentOutput(entity.DikeHeight.ToNullAsNaN(), entity.TargetProbability.ToNullAsNaN(), entity.TargetReliability.ToNullAsNaN(), Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputEntityReadExtensions.cs =================================================================== diff -u -r8cb270db5fbcb82f19d6f3a390f083e9e0516d8c -reec680fe322aea5d1ecf8fdf1f14a273afdf6c53 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputEntityReadExtensions.cs (.../GrassCoverErosionInwardsOutputEntityReadExtensions.cs) (revision 8cb270db5fbcb82f19d6f3a390f083e9e0516d8c) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputEntityReadExtensions.cs (.../GrassCoverErosionInwardsOutputEntityReadExtensions.cs) (revision eec680fe322aea5d1ecf8fdf1f14a273afdf6c53) @@ -46,7 +46,7 @@ Convert.ToBoolean(entity.IsOvertoppingDominant), ReadProbabilityAssessmentOutput(entity), GetDikeHeightAssessmentOutput(entity), - null); + GetOvertoppingRateAssessmentOutput(entity)); } private static ProbabilityAssessmentOutput ReadProbabilityAssessmentOutput(GrassCoverErosionInwardsOutputEntity entity) @@ -61,7 +61,13 @@ private static SubCalculationAssessmentOutput GetDikeHeightAssessmentOutput(GrassCoverErosionInwardsOutputEntity entity) { GrassCoverErosionInwardsDikeHeightOutputEntity dikeHeightOutputEntity = entity.GrassCoverErosionInwardsDikeHeightOutputEntities.FirstOrDefault(); - return dikeHeightOutputEntity != null ? dikeHeightOutputEntity.Read() : null; + return dikeHeightOutputEntity?.Read(); } + + private static SubCalculationAssessmentOutput GetOvertoppingRateAssessmentOutput(GrassCoverErosionInwardsOutputEntity entity) + { + GrassCoverErosionInwardsOvertoppingRateOutputEntity overtoppingRateOutputEntity = entity.GrassCoverErosionInwardsOvertoppingRateOutputEntities.FirstOrDefault(); + return overtoppingRateOutputEntity?.Read(); + } } } \ No newline at end of file Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOvertoppingRateOutputEntityReadExtensions.cs =================================================================== diff -u --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOvertoppingRateOutputEntityReadExtensions.cs (revision 0) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOvertoppingRateOutputEntityReadExtensions.cs (revision eec680fe322aea5d1ecf8fdf1f14a273afdf6c53) @@ -0,0 +1,59 @@ +// 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 Application.Ringtoets.Storage.DbContext; +using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.GrassCoverErosionInwards.Data; + +namespace Application.Ringtoets.Storage.Read.GrassCoverErosionInwards +{ + /// + /// Extension methods for + /// related to creating a . + /// + internal static class GrassCoverErosionInwardsOvertoppingRateOutputEntityReadExtensions + { + /// + /// Reads the and use + /// the information to construct a . + /// + /// The + /// to create for. + /// A new . + /// Thrown when + /// is null. + internal static SubCalculationAssessmentOutput Read(this GrassCoverErosionInwardsOvertoppingRateOutputEntity entity) + { + if (entity == null) + { + throw new ArgumentNullException(nameof(entity)); + } + + return new SubCalculationAssessmentOutput(entity.OvertoppingRate.ToNullAsNaN(), + entity.TargetProbability.ToNullAsNaN(), + entity.TargetReliability.ToNullAsNaN(), + entity.CalculatedProbability.ToNullAsNaN(), + entity.CalculatedReliability.ToNullAsNaN(), + (CalculationConvergence) entity.CalculationConvergence); + } + } +} \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj =================================================================== diff -u -r5c1a60942a2effc207d546054d4832f4aabe8ba5 -reec680fe322aea5d1ecf8fdf1f14a273afdf6c53 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj (.../Application.Ringtoets.Storage.Test.csproj) (revision 5c1a60942a2effc207d546054d4832f4aabe8ba5) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Application.Ringtoets.Storage.Test.csproj (.../Application.Ringtoets.Storage.Test.csproj) (revision eec680fe322aea5d1ecf8fdf1f14a273afdf6c53) @@ -112,6 +112,7 @@ + Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/DikeHeightAssessmentOutputCreateExtensionsTest.cs =================================================================== diff -u -r8cb270db5fbcb82f19d6f3a390f083e9e0516d8c -reec680fe322aea5d1ecf8fdf1f14a273afdf6c53 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/DikeHeightAssessmentOutputCreateExtensionsTest.cs (.../DikeHeightAssessmentOutputCreateExtensionsTest.cs) (revision 8cb270db5fbcb82f19d6f3a390f083e9e0516d8c) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/DikeHeightAssessmentOutputCreateExtensionsTest.cs (.../DikeHeightAssessmentOutputCreateExtensionsTest.cs) (revision eec680fe322aea5d1ecf8fdf1f14a273afdf6c53) @@ -34,16 +34,30 @@ public class DikeHeightAssessmentOutputCreateExtensionsTest { [Test] - public void Create_WithValidParameters_ReturnsGrassCoverErosionInwardsDikeHeightOutputEntityWithOutputSet() + public void CreateDikeHeight_OutputNull_ThrowArgumentNullException() { // Setup + SubCalculationAssessmentOutput output = null; + + // Call + TestDelegate test = () => output.CreateDikeHeight(); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("output", exception.ParamName); + } + + [Test] + public void CreateDikeHeight_WithValidParameters_ReturnsGrassCoverErosionInwardsDikeHeightOutputEntityWithOutputSet() + { + // Setup var random = new Random(21); var output = new SubCalculationAssessmentOutput( random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextEnumValue()); // Call - GrassCoverErosionInwardsDikeHeightOutputEntity entity = output.Create(); + GrassCoverErosionInwardsDikeHeightOutputEntity entity = output.CreateDikeHeight(); // Assert Assert.IsNotNull(entity); @@ -56,15 +70,15 @@ } [Test] - public void Create_WithNaNParameters_ReturnsGrassCoverErosionInwardsDikeHeightOutputEntityWithOutputNull() + public void CreateDikeHeight_WithNaNParameters_ReturnsGrassCoverErosionInwardsDikeHeightOutputEntityWithOutputNull() { // Setup var random = new Random(21); var output = new SubCalculationAssessmentOutput(double.NaN, double.NaN, double.NaN, - double.NaN, double.NaN, random.NextEnumValue()); + double.NaN, double.NaN, random.NextEnumValue()); // Call - GrassCoverErosionInwardsDikeHeightOutputEntity entity = output.Create(); + GrassCoverErosionInwardsDikeHeightOutputEntity entity = output.CreateDikeHeight(); // Assert Assert.IsNotNull(entity); @@ -75,5 +89,62 @@ Assert.IsNull(entity.CalculatedReliability); Assert.AreEqual((byte) output.CalculationConvergence, entity.CalculationConvergence); } + + [Test] + public void CreateOvertoppingRate_OutputNull_ThrowArgumentNullException() + { + // Setup + SubCalculationAssessmentOutput output = null; + + // Call + TestDelegate test = () => output.CreateOvertoppingRate(); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("output", exception.ParamName); + } + + [Test] + public void CreateOvertoppingRate_WithValidParameters_ReturnsGrassCoverErosionInwardsOvertoppingRateOutputEntityWithOutputSet() + { + // Setup + var random = new Random(21); + var output = new SubCalculationAssessmentOutput( + random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), + random.NextDouble(), random.NextEnumValue()); + + // Call + GrassCoverErosionInwardsOvertoppingRateOutputEntity entity = output.CreateOvertoppingRate(); + + // Assert + Assert.IsNotNull(entity); + Assert.AreEqual(output.Result, entity.OvertoppingRate, output.Result.GetAccuracy()); + Assert.AreEqual(output.TargetProbability, entity.TargetProbability); + Assert.AreEqual(output.TargetReliability, entity.TargetReliability, output.TargetReliability.GetAccuracy()); + Assert.AreEqual(output.CalculatedProbability, entity.CalculatedProbability); + Assert.AreEqual(output.CalculatedReliability, entity.CalculatedReliability, output.CalculatedReliability.GetAccuracy()); + Assert.AreEqual((byte) output.CalculationConvergence, entity.CalculationConvergence); + } + + [Test] + public void CreateOvertoppingRate_WithNaNParameters_ReturnsGrassCoverErosionInwardsOvertoppingRateOutputEntityWithOutputNull() + { + // Setup + var random = new Random(21); + var output = new SubCalculationAssessmentOutput(double.NaN, double.NaN, double.NaN, + double.NaN, double.NaN, random.NextEnumValue()); + + // Call + GrassCoverErosionInwardsOvertoppingRateOutputEntity entity = output.CreateOvertoppingRate(); + + // Assert + Assert.IsNotNull(entity); + Assert.IsNull(entity.OvertoppingRate); + Assert.IsNull(entity.TargetProbability); + Assert.IsNull(entity.TargetReliability); + Assert.IsNull(entity.CalculatedProbability); + Assert.IsNull(entity.CalculatedReliability); + Assert.AreEqual((byte) output.CalculationConvergence, entity.CalculationConvergence); + } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensionsTest.cs =================================================================== diff -u -r8cb270db5fbcb82f19d6f3a390f083e9e0516d8c -reec680fe322aea5d1ecf8fdf1f14a273afdf6c53 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensionsTest.cs (.../GrassCoverErosionInwardsOutputCreateExtensionsTest.cs) (revision 8cb270db5fbcb82f19d6f3a390f083e9e0516d8c) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/GrassCoverErosionInwards/GrassCoverErosionInwardsOutputCreateExtensionsTest.cs (.../GrassCoverErosionInwardsOutputCreateExtensionsTest.cs) (revision eec680fe322aea5d1ecf8fdf1f14a273afdf6c53) @@ -23,6 +23,7 @@ using System.Linq; using Application.Ringtoets.Storage.Create.GrassCoverErosionInwards; using Application.Ringtoets.Storage.DbContext; +using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Data.Probability; @@ -43,11 +44,16 @@ var probabilityAssessmentOutput = new ProbabilityAssessmentOutput(random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextDouble()); - var dikeHeightConvergence = (CalculationConvergence) random.Next(1, Enum.GetValues(typeof(CalculationConvergence)).Length + 1); + var dikeHeightConvergence = random.NextEnumValue(); + var overtoppingRateConvergence = random.NextEnumValue(); var dikeHeightAssessmentOutput = new SubCalculationAssessmentOutput(random.NextDouble(), random.NextDouble(), - random.NextDouble(), random.NextDouble(), - random.NextDouble(), dikeHeightConvergence); - var output = new GrassCoverErosionInwardsOutput(random.NextDouble(), false, probabilityAssessmentOutput, dikeHeightAssessmentOutput, null); + random.NextDouble(), random.NextDouble(), + random.NextDouble(), dikeHeightConvergence); + var overtoppingRateAssessmentOutput = new SubCalculationAssessmentOutput(random.NextDouble(), random.NextDouble(), + random.NextDouble(), random.NextDouble(), + random.NextDouble(), overtoppingRateConvergence); + var output = new GrassCoverErosionInwardsOutput(random.NextDouble(), false, probabilityAssessmentOutput, + dikeHeightAssessmentOutput, overtoppingRateAssessmentOutput); // Call GrassCoverErosionInwardsOutputEntity entity = output.Create(); @@ -62,13 +68,21 @@ Assert.AreEqual(probabilityAssessmentOutput.RequiredProbability, entity.RequiredProbability); Assert.AreEqual(probabilityAssessmentOutput.RequiredReliability.Value, entity.RequiredReliability); - var dikeHeightEntity = entity.GrassCoverErosionInwardsDikeHeightOutputEntities.First(); + GrassCoverErosionInwardsDikeHeightOutputEntity dikeHeightEntity = entity.GrassCoverErosionInwardsDikeHeightOutputEntities.First(); Assert.AreEqual(dikeHeightAssessmentOutput.Result, dikeHeightEntity.DikeHeight, dikeHeightAssessmentOutput.Result.GetAccuracy()); Assert.AreEqual(dikeHeightAssessmentOutput.TargetProbability, dikeHeightEntity.TargetProbability); Assert.AreEqual(dikeHeightAssessmentOutput.TargetReliability, dikeHeightEntity.TargetReliability, dikeHeightAssessmentOutput.TargetReliability.GetAccuracy()); Assert.AreEqual(dikeHeightAssessmentOutput.CalculatedProbability, dikeHeightEntity.CalculatedProbability); Assert.AreEqual(dikeHeightAssessmentOutput.CalculatedReliability, dikeHeightEntity.CalculatedReliability, dikeHeightAssessmentOutput.CalculatedReliability.GetAccuracy()); Assert.AreEqual((byte) dikeHeightAssessmentOutput.CalculationConvergence, dikeHeightEntity.CalculationConvergence); + + GrassCoverErosionInwardsOvertoppingRateOutputEntity overtoppingRateEntity = entity.GrassCoverErosionInwardsOvertoppingRateOutputEntities.First(); + Assert.AreEqual(overtoppingRateAssessmentOutput.Result, overtoppingRateEntity.OvertoppingRate, overtoppingRateAssessmentOutput.Result.GetAccuracy()); + Assert.AreEqual(overtoppingRateAssessmentOutput.TargetProbability, overtoppingRateEntity.TargetProbability); + Assert.AreEqual(overtoppingRateAssessmentOutput.TargetReliability, overtoppingRateEntity.TargetReliability, overtoppingRateAssessmentOutput.TargetReliability.GetAccuracy()); + Assert.AreEqual(overtoppingRateAssessmentOutput.CalculatedProbability, overtoppingRateEntity.CalculatedProbability); + Assert.AreEqual(overtoppingRateAssessmentOutput.CalculatedReliability, overtoppingRateEntity.CalculatedReliability, overtoppingRateAssessmentOutput.CalculatedReliability.GetAccuracy()); + Assert.AreEqual((byte) overtoppingRateAssessmentOutput.CalculationConvergence, overtoppingRateEntity.CalculationConvergence); } [Test] @@ -92,13 +106,21 @@ Assert.IsNull(entity.RequiredProbability); Assert.IsNull(entity.RequiredReliability); - var dikeHeightEntity = entity.GrassCoverErosionInwardsDikeHeightOutputEntities.First(); + GrassCoverErosionInwardsDikeHeightOutputEntity dikeHeightEntity = entity.GrassCoverErosionInwardsDikeHeightOutputEntities.First(); Assert.IsNull(dikeHeightEntity.DikeHeight); Assert.IsNull(dikeHeightEntity.TargetProbability); Assert.IsNull(dikeHeightEntity.TargetReliability); Assert.IsNull(dikeHeightEntity.CalculatedProbability); Assert.IsNull(dikeHeightEntity.CalculatedReliability); Assert.AreEqual((byte) dikeHeightAssessmentOutput.CalculationConvergence, dikeHeightEntity.CalculationConvergence); + + GrassCoverErosionInwardsOvertoppingRateOutputEntity overtoppingRateEntity = entity.GrassCoverErosionInwardsOvertoppingRateOutputEntities.First(); + Assert.IsNull(overtoppingRateEntity.OvertoppingRate); + Assert.IsNull(overtoppingRateEntity.TargetProbability); + Assert.IsNull(overtoppingRateEntity.TargetReliability); + Assert.IsNull(overtoppingRateEntity.CalculatedProbability); + Assert.IsNull(overtoppingRateEntity.CalculatedReliability); + Assert.AreEqual((byte) overtoppingRateAssessmentOutput.CalculationConvergence, overtoppingRateEntity.CalculationConvergence); } [Test] @@ -114,5 +136,19 @@ // Assert Assert.IsFalse(entity.GrassCoverErosionInwardsDikeHeightOutputEntities.Any()); } + + [Test] + public void Create_OvertoppingRateAssessmentOutputIsNull_NoOvertoppingRateOutputEntityCreated() + { + // Setup + var probabilityAssessmentOutput = new ProbabilityAssessmentOutput(1, 1, 1, 1, 1); + var output = new GrassCoverErosionInwardsOutput(1, true, probabilityAssessmentOutput, null, null); + + // Call + GrassCoverErosionInwardsOutputEntity entity = output.Create(); + + // Assert + Assert.IsFalse(entity.GrassCoverErosionInwardsOvertoppingRateOutputEntities.Any()); + } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensionsTest.cs =================================================================== diff -u -r8cb270db5fbcb82f19d6f3a390f083e9e0516d8c -reec680fe322aea5d1ecf8fdf1f14a273afdf6c53 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensionsTest.cs (.../GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensionsTest.cs) (revision 8cb270db5fbcb82f19d6f3a390f083e9e0516d8c) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensionsTest.cs (.../GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensionsTest.cs) (revision eec680fe322aea5d1ecf8fdf1f14a273afdf6c53) @@ -34,6 +34,20 @@ public class GrassCoverErosionInwardsDikeHeightOutputEntityReadExtensionsTest { [Test] + public void Read_EntityNull_ThrowArgumentNullException() + { + // Setup + GrassCoverErosionInwardsDikeHeightOutputEntity entity = null; + + // Call + TestDelegate test = () => entity.Read(); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("entity", exception.ParamName); + } + + [Test] public void Read_ValidParameters_ReturnsDikeHeightAssessmentOutput() { // Setup @@ -43,7 +57,7 @@ double targetReliability = random.NextDouble(); double calculatedProbability = random.NextDouble(); double calculatedReliability = random.NextDouble(); - CalculationConvergence convergence = random.NextEnumValue(); + var convergence = random.NextEnumValue(); var entity = new GrassCoverErosionInwardsDikeHeightOutputEntity { DikeHeight = dikeHeight, @@ -71,7 +85,7 @@ { // Setup var random = new Random(22); - CalculationConvergence convergence = random.NextEnumValue(); + var convergence = random.NextEnumValue(); var entity = new GrassCoverErosionInwardsDikeHeightOutputEntity { CalculationConvergence = (byte) convergence Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOvertoppingRateOutputEntityReadExtensionsTest.cs =================================================================== diff -u --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOvertoppingRateOutputEntityReadExtensionsTest.cs (revision 0) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/GrassCoverErosionInwards/GrassCoverErosionInwardsOvertoppingRateOutputEntityReadExtensionsTest.cs (revision eec680fe322aea5d1ecf8fdf1f14a273afdf6c53) @@ -0,0 +1,106 @@ +// 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 Application.Ringtoets.Storage.DbContext; +using Application.Ringtoets.Storage.Read.GrassCoverErosionInwards; +using Core.Common.TestUtil; +using NUnit.Framework; +using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Common.Data.TestUtil; +using Ringtoets.GrassCoverErosionInwards.Data; + +namespace Application.Ringtoets.Storage.Test.Read.GrassCoverErosionInwards +{ + [TestFixture] + public class GrassCoverErosionInwardsOvertoppingRateOutputEntityReadExtensionsTest + { + [Test] + public void Read_EntityNull_ThrowArgumentNullException() + { + // Setup + GrassCoverErosionInwardsOvertoppingRateOutputEntity entity = null; + + // Call + TestDelegate test = () => entity.Read(); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("entity", exception.ParamName); + } + + [Test] + public void Read_ValidParameters_ReturnsOvertoppingRateAssessmentOutput() + { + // Setup + var random = new Random(22); + double overtoppingRate = random.NextDouble(); + double targetProbability = random.NextDouble(); + double targetReliability = random.NextDouble(); + double calculatedProbability = random.NextDouble(); + double calculatedReliability = random.NextDouble(); + var convergence = random.NextEnumValue(); + var entity = new GrassCoverErosionInwardsOvertoppingRateOutputEntity + { + OvertoppingRate = overtoppingRate, + TargetProbability = targetProbability, + TargetReliability = targetReliability, + CalculatedProbability = calculatedProbability, + CalculatedReliability = calculatedReliability, + CalculationConvergence = (byte) convergence + }; + + // Call + SubCalculationAssessmentOutput output = entity.Read(); + + // Assert + Assert.AreEqual(overtoppingRate, output.Result, output.Result.GetAccuracy()); + Assert.AreEqual(targetProbability, output.TargetProbability); + Assert.AreEqual(targetReliability, output.TargetReliability, output.TargetReliability.GetAccuracy()); + Assert.AreEqual(calculatedProbability, output.CalculatedProbability); + Assert.AreEqual(calculatedReliability, output.CalculatedReliability, output.CalculatedReliability.GetAccuracy()); + Assert.AreEqual(convergence, output.CalculationConvergence); + } + + [Test] + public void Read_NullParameters_ReturnsOvertoppingRateAssessmentOutputWithNaN() + { + // Setup + var random = new Random(22); + var convergence = random.NextEnumValue(); + var entity = new GrassCoverErosionInwardsOvertoppingRateOutputEntity + { + CalculationConvergence = (byte) convergence + }; + + // Call + SubCalculationAssessmentOutput output = entity.Read(); + + // Assert + Assert.IsNaN(output.Result); + Assert.IsNaN(output.TargetProbability); + Assert.IsNaN(output.TargetReliability); + Assert.IsNaN(output.CalculatedProbability); + Assert.IsNaN(output.CalculatedReliability); + Assert.AreEqual(convergence, output.CalculationConvergence); + } + } +} \ No newline at end of file