Index: DamClients/DamUI/trunk/src/Dam/Tests/Deltares.Dam.Tests.csproj =================================================================== diff -u -r2647 -r2778 --- DamClients/DamUI/trunk/src/Dam/Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 2647) +++ DamClients/DamUI/trunk/src/Dam/Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 2778) @@ -141,6 +141,7 @@ + Index: DamClients/DamUI/trunk/src/Dam/Forms/DamContext.cs =================================================================== diff -u -r2774 -r2778 --- DamClients/DamUI/trunk/src/Dam/Forms/DamContext.cs (.../DamContext.cs) (revision 2774) +++ DamClients/DamUI/trunk/src/Dam/Forms/DamContext.cs (.../DamContext.cs) (revision 2778) @@ -104,7 +104,7 @@ /// Returns the possible named filters for a given type. /// /// A type for which named filters will be returned. - /// A IEnumberable of the named filters or null if no named filters exists. + /// A of the named filters or null if no named filters exists. public IEnumerable GetColumnNamedFilters(Type type) { if (filters.ContainsKey(type)) Index: DamClients/DamUI/trunk/src/Dam/Tests/Forms/DamContextTest.cs =================================================================== diff -u --- DamClients/DamUI/trunk/src/Dam/Tests/Forms/DamContextTest.cs (revision 0) +++ DamClients/DamUI/trunk/src/Dam/Tests/Forms/DamContextTest.cs (revision 2778) @@ -0,0 +1,146 @@ +// Copyright (C) Stichting Deltares 2020. All rights reserved. +// +// This file is part of the application DAM - UI. +// +// DAM - UI 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 Deltares.Dam.Data; +using Deltares.Dam.Forms; +using Deltares.Standard.Reflection; +using NUnit.Framework; + +namespace Deltares.Dam.Tests.Forms +{ + [TestFixture] + public class DamContextTest + { + [Test] + public void GetColumnNamedFilters_WithArgumentNotScenarioType_ReturnsNull() + { + // Setup + var context = new DamContext(); + + // Call + var filter = context.GetColumnNamedFilters(typeof(object)); + + // Assert + Assert.IsNull(filter); + } + + [Test] + public void GetColumnNamedFilter_WithScenarioArgument_ReturnsExpectedKeys() + { + // Setup + var context = new DamContext(); + + // Call + var columnNamedFilters = context.GetColumnNamedFilters(typeof(Scenario)); + + // Assert + CollectionAssert.AreEqual(new[] + { + "InsideStabilityScenarioCategory", + "PipingScenarioCategory", + "PlLineSchematizationScenarioCategory" + }, columnNamedFilters); + } + + [Test] + [TestCaseSource(nameof(GetFilterOptions))] + public void GetFilteredColumns_WithValidArgument_GetsFilteredColumnNames(string filterValue, + IEnumerable expectedColumnNames) + { + // Setup + var context = new DamContext(); + + // Call + var filteredColumnNames = context.GetFilteredColumns(typeof(Scenario), filterValue); + + // Assert + CollectionAssert.AreEquivalent(expectedColumnNames, filteredColumnNames); + } + + [Test] + [TestCaseSource(nameof(GetUnsupportedFilterArguments))] + public void GetFilteredColumns_WithUnsupportedArguments_ReturnsNull(Type argumentType, string filterValue) + { + // Setup + var context = new DamContext(); + + // Call + var filteredColumnNames = context.GetFilteredColumns(argumentType, filterValue); + + // Assert + Assert.IsNull(filteredColumnNames); + } + + private static IEnumerable GetFilterOptions() + { + yield return new TestCaseData("InsideStabilityScenarioCategory", new[] + { + StaticReflection.GetMemberName(x => x.LocationScenarioID), + StaticReflection.GetMemberName(x => x.RiverLevel), + StaticReflection.GetMemberName(x => x.DikeTableHeight), + StaticReflection.GetMemberName(x => x.RequiredSafetyFactorStabilityInnerSlope), + StaticReflection.GetMemberName(x => x.HeadPl3), + StaticReflection.GetMemberName(x => x.HeadPl4), + StaticReflection.GetMemberName(x => x.PolderLevel) + }) + .SetName("InsideStabilityScenarioCategory"); + + yield return new TestCaseData("PipingScenarioCategory", new[] + { + StaticReflection.GetMemberName(x => x.LocationScenarioID), + StaticReflection.GetMemberName(x => x.RiverLevel), + StaticReflection.GetMemberName(x => x.DikeTableHeight), + StaticReflection.GetMemberName(x => x.RequiredSafetyFactorPiping), + StaticReflection.GetMemberName(x => x.HeadPl3), + StaticReflection.GetMemberName(x => x.HeadPl4), + StaticReflection.GetMemberName(x => x.PolderLevel) + }) + .SetName("PipingScenarioCategory"); + + yield return new TestCaseData("PlLineSchematizationScenarioCategory", new[] + { + StaticReflection.GetMemberName(x => x.LocationScenarioID), + StaticReflection.GetMemberName(x => x.RiverLevel), + StaticReflection.GetMemberName(x => x.PlLineOffsetBelowDikeTopAtRiver), + StaticReflection.GetMemberName(x => x.PlLineOffsetBelowDikeTopAtPolder), + StaticReflection.GetMemberName(x => x.PlLineOffsetBelowShoulderBaseInside), + StaticReflection.GetMemberName(x => x.PlLineOffsetBelowDikeToeAtPolder), + StaticReflection.GetMemberName(x => x.PlLineOffsetBelowDikeCrestMiddle), + StaticReflection.GetMemberName(x => x.PlLineOffsetFactorBelowShoulderCrest), + StaticReflection.GetMemberName(x => x.UsePlLineOffsetBelowDikeCrestMiddle), + StaticReflection.GetMemberName(x => x.UsePlLineOffsetFactorBelowShoulderCrest), + StaticReflection.GetMemberName(x => x.PolderLevel) + }) + .SetName("PlLineSchematizationScenarioCategory"); + } + + private static IEnumerable GetUnsupportedFilterArguments() + { + yield return new TestCaseData(typeof(object), "PlLineSchematizationScenarioCategory") + .SetName("Unsupported type"); + + yield return new TestCaseData(typeof(Scenario), string.Empty) + .SetName("Unsupported value"); + } + } +} \ No newline at end of file