// Copyright (C) Stichting Deltares 2017. 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.ComponentModel; using System.Linq; using Assembly.Kernel.Exceptions; using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.AssemblyTool.KernelWrapper.Creators; namespace Ringtoets.AssemblyTool.KernelWrapper.Test.Creators { [TestFixture] public class AssemblyErrorMessageCreatorTest { [Test] public void CreateErrorMessage_ErrorMessagesNull_ThrowsArgumentNullException() { // Call TestDelegate test = () => AssemblyErrorMessageCreator.CreateErrorMessage(null); // Assert var exception = Assert.Throws(test); Assert.AreEqual("errorMessages", exception.ParamName); } [Test] public void CreateErrorMessage_InvalidAssemblyError_ThrowsInvalidEnumArgumentException() { // Call TestDelegate test = () => AssemblyErrorMessageCreator.CreateErrorMessage(new[] { new AssemblyErrorMessage(string.Empty, (EAssemblyErrors) 9999) }); // Assert string expectedMessage = $"The value of argument 'assemblyError' (9999) is invalid for Enum type '{nameof(EAssemblyErrors)}'."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); } [Test] [TestCase(EAssemblyErrors.SignallingLimitOutOfRange, "Signaleringskans moet in het bereik [0,1] liggen.")] [TestCase(EAssemblyErrors.LowerLimitOutOfRange, "Ondergrens moet in het bereik [0,1] liggen.")] [TestCase(EAssemblyErrors.FailurePropbabilityMarginOutOfRange, "Faalkansruimte moet in het bereik [0,1] liggen.")] [TestCase(EAssemblyErrors.LengthEffectFactorOutOfRange, "Lengte-effect factor moet minimaal 1 zijn.")] [TestCase(EAssemblyErrors.SectionLengthOutOfRange, "De trajectlengte moet groter zijn dan 0 [m].")] [TestCase(EAssemblyErrors.SignallingLimitAboveLowerLimit, "De signaleringskans moet kleiner zijn dan de ondergrens.")] [TestCase(EAssemblyErrors.PsigDsnAbovePsig, "Berekende signaleringskans per doorsnede is groter dan de signaleringskans van het traject.")] [TestCase(EAssemblyErrors.PlowDsnAbovePlow, "Berekende ondergrens per doorsnede is groter dan de ondergrens van het traject.")] [TestCase(EAssemblyErrors.LowerLimitIsAboveUpperLimit, "De categoriebovengrens moet boven de categorieondergrens liggen.")] [TestCase(EAssemblyErrors.CategoryLowerLimitOutOfRange, "Categoriebovengrens moet in het bereik [0,1] liggen.")] [TestCase(EAssemblyErrors.CategoryUpperLimitOutOfRange, "Categorieondergrens moet in het bereik [0,1] liggen.")] [TestCase(EAssemblyErrors.TranslateAssessmentInvalidInput, "Er is een ongeldig resultaat gespecificeerd voor de gebruikte methode.")] [TestCase(EAssemblyErrors.ValueMayNotBeNull, "Er is ongeldige invoer gedefinieerd voor de gebruikte methode.")] [TestCase(EAssemblyErrors.CategoryNotAllowed, "Het specificeren van een toetsoordeel voor deze categorie is niet mogelijk.")] [TestCase(EAssemblyErrors.DoesNotComplyAfterComply, "Een lagere categorie moet als voldoende worden aangemerkt indien het vak voor een hogere categorie voldoet.")] [TestCase(EAssemblyErrors.FmSectionLengthInvalid, "Gezamenlijke lengte van alle deelvakken moet gelijk zijn aan de trajectlengte.")] [TestCase(EAssemblyErrors.FmSectionSectionStartEndInvalid, "De lengte van een berekende deelvak kon niet goed worden bepaald.")] [TestCase(EAssemblyErrors.FailureProbabilityOutOfRange, "De gespecificeerde kans moet in het bereik [0,1] liggen.")] [TestCase(EAssemblyErrors.InputNotTheSameType, "De resultaten voor alle vakken moeten allen wel of geen kansspecificatie bevatten.")] [TestCase(EAssemblyErrors.FailureMechanismAssemblerInputInvalid, "Er moet een vakindeling zijn geïmporteerd.")] [TestCase(EAssemblyErrors.CommonFailureMechanismSectionsInvalid, "Ieder relevant toetsspoor moet een vakindeling geïmporteerd hebben.")] [TestCase(EAssemblyErrors.CommonFailureMechanismSectionsNotConsecutive, "Alle (deel)vakken moeten minimaal een lengte hebben van 0.01 [m].")] [TestCase(EAssemblyErrors.RequestedPointOutOfRange, "De gespecificeerde resultaten voor een of meerdere toetssporen dekken niet de volledige lengte van het traject.")] [TestCase(EAssemblyErrors.SectionsWithoutCategory, "Er zijn een of meerdere vakindelingen gevonden die geen categorie hebben.")] [TestCase(EAssemblyErrors.InvalidCategoryLimits, "De categoriegrenzen zijn niet aaneengesloten en spannen niet de volldige faalskansruimte.")] public void CreateErrorMessage_SingleAssemblyError_ReturnsExpectedErrorMessage(EAssemblyErrors assemblyError, string expectedErrorMessage) { // Call string errorMessage = AssemblyErrorMessageCreator.CreateErrorMessage(new[] { new AssemblyErrorMessage(string.Empty, assemblyError) }); // Assert Assert.AreEqual(expectedErrorMessage, errorMessage); } [Test] public void CreateErrorMessage_MultipleAssemblyErrors_ReturnsExpectedErrorMessage() { // Call string errorMessage = AssemblyErrorMessageCreator.CreateErrorMessage(new[] { new AssemblyErrorMessage(string.Empty, EAssemblyErrors.CategoryNotAllowed), new AssemblyErrorMessage(string.Empty, EAssemblyErrors.FailureProbabilityOutOfRange) }); // Assert Assert.AreEqual("- Het specificeren van een toetsoordeel voor deze categorie is niet mogelijk.\n" + "- De gespecificeerde kans moet in het bereik [0,1] liggen.\n", errorMessage); } [Test] public void CreateErrorMessage_NoAssemblyErrors_ReturnsEmptyErrorMessage() { // Call string errorMessage = AssemblyErrorMessageCreator.CreateErrorMessage(Enumerable.Empty()); // Assert Assert.IsEmpty(errorMessage); } [Test] public void CreateGenericErrorMessage_Always_ReturnsExpectedErrorMessage() { // Call string errorMessage = AssemblyErrorMessageCreator.CreateGenericErrorMessage(); // Assert Assert.AreEqual("Er is een onverwachte fout opgetreden tijdens het assembleren.", errorMessage); } } }