Fisheye: Tag d55ef762fda182aedb3d0c86ed17d2405abb55db refers to a dead (removed) revision in file `Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/AssemblyErrorMessageCreator.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Creators/AssemblyErrorMessageCreator.cs =================================================================== diff -u --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Creators/AssemblyErrorMessageCreator.cs (revision 0) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Creators/AssemblyErrorMessageCreator.cs (revision d55ef762fda182aedb3d0c86ed17d2405abb55db) @@ -0,0 +1,136 @@ +// 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.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using Assembly.Kernel.Exceptions; +using Ringtoets.AssemblyTool.KernelWrapper.Properties; + +namespace Ringtoets.AssemblyTool.KernelWrapper.Creators +{ + /// + /// Class that creates to localized error messages for the assembly tool. + /// + public static class AssemblyErrorMessageCreator + { + /// + /// Creates a localized string based on the contents of . + /// + /// The collection of to localize. + /// A localized string containing the error messages. + /// Thrown when is null. + /// Thrown when contains an + /// invalid value of . + public static string CreateErrorMessage(IEnumerable errorMessages) + { + if (errorMessages == null) + { + throw new ArgumentNullException(nameof(errorMessages)); + } + + return errorMessages.Count() == 1 + ? GetErrorMessage(errorMessages.Single().ErrorCode) + : errorMessages.Aggregate(string.Empty, (current, message) => current + "- " + GetErrorMessage(message.ErrorCode) + "\n"); + } + + /// + /// Creates a generic error message. + /// + /// A generic error message. + public static string CreateGenericErrorMessage() + { + return Resources.AssemblyErrorMessageCreator_GenericErrorMessage; + } + + /// + /// Gets the localized error message that belongs to the given . + /// + /// The to localize. + /// A localized string. + /// Thrown when + /// is an invalid value of . + /// Thrown when is a valid value, + /// but unsupported. + private static string GetErrorMessage(EAssemblyErrors assemblyError) + { + if (!Enum.IsDefined(typeof(EAssemblyErrors), assemblyError)) + { + throw new InvalidEnumArgumentException(nameof(assemblyError), (int) assemblyError, typeof(EAssemblyErrors)); + } + + switch (assemblyError) + { + case EAssemblyErrors.SignallingLimitOutOfRange: + return Resources.AssemblyErrorMessageCreator_SignallingLimitOutOfRange; + case EAssemblyErrors.LowerLimitOutOfRange: + return Resources.AssemblyErrorMessageCreator_LowerLimitOutOfRange; + case EAssemblyErrors.FailurePropbabilityMarginOutOfRange: + return Resources.AssemblyErrorMessageCreator_FailurePropbabilityMarginOutOfRange; + case EAssemblyErrors.LengthEffectFactorOutOfRange: + return Resources.AssemblyErrorMessageCreator_LengthEffectFactorOutOfRange; + case EAssemblyErrors.SectionLengthOutOfRange: + return Resources.AssemblyErrorMessageCreator_SectionLengthOutOfRange; + case EAssemblyErrors.SignallingLimitAboveLowerLimit: + return Resources.AssemblyErrorMessageCreator_SignallingLimitAboveLowerLimit; + case EAssemblyErrors.PsigDsnAbovePsig: + return Resources.AssemblyErrorMessageCreator_PsigDsnAbovePsig; + case EAssemblyErrors.PlowDsnAbovePlow: + return Resources.AssemblyErrorMessageCreator_PlowDsnAbovePlow; + case EAssemblyErrors.LowerLimitIsAboveUpperLimit: + return Resources.AssemblyErrorMessageCreator_LowerLimitIsAboveUpperLimit; + case EAssemblyErrors.CategoryLowerLimitOutOfRange: + return Resources.AssemblyErrorMessageCreator_CategoryLowerLimitOutOfRange; + case EAssemblyErrors.CategoryUpperLimitOutOfRange: + return Resources.AssemblyErrorMessageCreator_CategoryUpperLimitOutOfRange; + case EAssemblyErrors.TranslateAssessmentInvalidInput: + return Resources.AssemblyErrorMessageCreator_TranslateAssessmentInvalidInput; + case EAssemblyErrors.ValueMayNotBeNull: + return Resources.AssemblyErrorMessageCreator_ValueMayNotBeNull; + case EAssemblyErrors.CategoryNotAllowed: + return Resources.AssemblyErrorMessageCreator_CategoryNotAllowed; + case EAssemblyErrors.DoesNotComplyAfterComply: + return Resources.AssemblyErrorMessageCreator_DoesNotComplyAfterComply; + case EAssemblyErrors.FmSectionLengthInvalid: + return Resources.AssemblyErrorMessageCreator_FmSectionLengthInvalid; + case EAssemblyErrors.FmSectionSectionStartEndInvalid: + return Resources.AssemblyErrorMessageCreator_FmSectionSectionStartEndInvalid; + case EAssemblyErrors.FailureProbabilityOutOfRange: + return Resources.AssemblyErrorMessageCreator_FailureProbabilityOutOfRange; + case EAssemblyErrors.InputNotTheSameType: + return Resources.AssemblyErrorMessageCreator_InputNotTheSameType; + case EAssemblyErrors.FailureMechanismAssemblerInputInvalid: + return Resources.AssemblyErrorMessageCreator_NoSectionsImported; + case EAssemblyErrors.CommonFailureMechanismSectionsInvalid: + return Resources.AssemblyErrorMessageCreator_NoSectionsImported; + case EAssemblyErrors.CommonFailureMechanismSectionsNotConsecutive: + return Resources.AssemblyErrorMessageCreator_CommonFailureMechanismSectionsNotConsecutive; + case EAssemblyErrors.RequestedPointOutOfRange: + return Resources.AssemblyErrorMessageCreator_RequestedPointOutOfRange; + case EAssemblyErrors.FailureMechanismDuplicateSection: + return Resources.AssemblyErrorMessageCreator_FailureMechanismDuplicateSection; + default: + throw new NotSupportedException(); + } + } + } +} \ No newline at end of file Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Ringtoets.AssemblyTool.KernelWrapper.csproj =================================================================== diff -u -r61e0b1bf1351eabb70eccd3fafeb61ade378f44c -rd55ef762fda182aedb3d0c86ed17d2405abb55db --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Ringtoets.AssemblyTool.KernelWrapper.csproj (.../Ringtoets.AssemblyTool.KernelWrapper.csproj) (revision 61e0b1bf1351eabb70eccd3fafeb61ade378f44c) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Ringtoets.AssemblyTool.KernelWrapper.csproj (.../Ringtoets.AssemblyTool.KernelWrapper.csproj) (revision d55ef762fda182aedb3d0c86ed17d2405abb55db) @@ -14,7 +14,7 @@ - + Fisheye: Tag d55ef762fda182aedb3d0c86ed17d2405abb55db refers to a dead (removed) revision in file `Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/AssemblyErrorMessageCreatorTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Categories/AssemblyCategoriesCalculatorTest.cs =================================================================== diff -u -rd75cba7f33dd4264452ed4dcceddd5ec79b210ea -rd55ef762fda182aedb3d0c86ed17d2405abb55db --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Categories/AssemblyCategoriesCalculatorTest.cs (.../AssemblyCategoriesCalculatorTest.cs) (revision d75cba7f33dd4264452ed4dcceddd5ec79b210ea) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Categories/AssemblyCategoriesCalculatorTest.cs (.../AssemblyCategoriesCalculatorTest.cs) (revision d55ef762fda182aedb3d0c86ed17d2405abb55db) @@ -29,8 +29,8 @@ using NUnit.Framework; using Rhino.Mocks; using Ringtoets.AssemblyTool.Data; -using Ringtoets.AssemblyTool.KernelWrapper.Calculators; using Ringtoets.AssemblyTool.KernelWrapper.Calculators.Categories; +using Ringtoets.AssemblyTool.KernelWrapper.Creators; using Ringtoets.AssemblyTool.KernelWrapper.Kernels; using Ringtoets.AssemblyTool.KernelWrapper.TestUtil; using Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Kernels; Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Creators/AssemblyErrorMessageCreatorTest.cs =================================================================== diff -u --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Creators/AssemblyErrorMessageCreatorTest.cs (revision 0) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Creators/AssemblyErrorMessageCreatorTest.cs (revision d55ef762fda182aedb3d0c86ed17d2405abb55db) @@ -0,0 +1,132 @@ +// 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 assemblageresultaat 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 geimporteerd.")] + [TestCase(EAssemblyErrors.CommonFailureMechanismSectionsInvalid, "Er moet een vakindeling zijn geimporteerd.")] + [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.FailureMechanismDuplicateSection, "De gespecificeerde vakindeling voor een of meerdere toetssporen bevat een of meer overlappende vakken.")] + 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 assemblageresultaat 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); + } + } +} \ No newline at end of file Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Ringtoets.AssemblyTool.KernelWrapper.Test.csproj =================================================================== diff -u -r61e0b1bf1351eabb70eccd3fafeb61ade378f44c -rd55ef762fda182aedb3d0c86ed17d2405abb55db --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Ringtoets.AssemblyTool.KernelWrapper.Test.csproj (.../Ringtoets.AssemblyTool.KernelWrapper.Test.csproj) (revision 61e0b1bf1351eabb70eccd3fafeb61ade378f44c) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Ringtoets.AssemblyTool.KernelWrapper.Test.csproj (.../Ringtoets.AssemblyTool.KernelWrapper.Test.csproj) (revision d55ef762fda182aedb3d0c86ed17d2405abb55db) @@ -20,7 +20,7 @@ - +