Index: Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/HydraulicBoundaryLocationCalculationProperties.cs =================================================================== diff -u --- Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/HydraulicBoundaryLocationCalculationProperties.cs (revision 0) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/HydraulicBoundaryLocationCalculationProperties.cs (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -0,0 +1,259 @@ +// 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 Core.Common.Base.Data; +using Core.Common.Base.Geometry; +using Core.Common.Gui.Attributes; +using Core.Common.Gui.Converters; +using Core.Common.Gui.PropertyBag; +using Core.Common.Util.Attributes; +using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Common.Data.IllustrationPoints; +using Ringtoets.Common.Forms.TypeConverters; +using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; + +namespace Ringtoets.Common.Forms.PropertyClasses +{ + /// + /// ViewModel of for properties panel. + /// + [TypeConverter(typeof(ExpandableObjectConverter))] + public abstract class HydraulicBoundaryLocationCalculationProperties : ObjectProperties + { + /// + /// Creates a new instance of . + /// + /// The hydraulic boundary location calculation. + /// Thrown when is null. + protected HydraulicBoundaryLocationCalculationProperties(HydraulicBoundaryLocationCalculation hydraulicBoundaryLocationCalculation) + { + if (hydraulicBoundaryLocationCalculation == null) + { + throw new ArgumentNullException(nameof(hydraulicBoundaryLocationCalculation)); + } + + Data = hydraulicBoundaryLocationCalculation; + } + + [PropertyOrder(1)] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_General))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.HydraulicBoundaryDatabase_Location_Id_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.HydraulicBoundaryDatabase_Location_Id_Description))] + public long Id + { + get + { + return data.HydraulicBoundaryLocation.Id; + } + } + + [PropertyOrder(2)] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_General))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.HydraulicBoundaryDatabase_Location_Name_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.HydraulicBoundaryDatabase_Location_Name_Description))] + public string Name + { + get + { + return data.HydraulicBoundaryLocation.Name; + } + } + + [PropertyOrder(3)] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_General))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.HydraulicBoundaryDatabase_Location_Coordinates_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.HydraulicBoundaryDatabase_Location_Coordinates_Description))] + public Point2D Location + { + get + { + return data.HydraulicBoundaryLocation.Location; + } + } + + [PropertyOrder(5)] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Result))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.CalculationOutput_TargetProbability_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.CalculationOutput_TargetProbability_Description))] + [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] + public double TargetProbability + { + get + { + return data.Output?.TargetProbability ?? double.NaN; + } + } + + [PropertyOrder(6)] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Result))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.CalculationOutput_TargetReliability_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.CalculationOutput_TargetReliability_Description))] + [TypeConverter(typeof(NoValueRoundedDoubleConverter))] + public RoundedDouble TargetReliability + { + get + { + return data.Output?.TargetReliability ?? RoundedDouble.NaN; + } + } + + [PropertyOrder(7)] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Result))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.CalculationOutput_CalculatedProbability_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.CalculationOutput_CalculatedProbability_Description))] + [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] + public double CalculatedProbability + { + get + { + return data.Output?.CalculatedProbability ?? double.NaN; + } + } + + [PropertyOrder(8)] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_Result))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.CalculationOutput_CalculatedReliability_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.CalculationOutput_CalculatedReliability_Description))] + [TypeConverter(typeof(NoValueRoundedDoubleConverter))] + public RoundedDouble CalculatedReliability + { + get + { + return data.Output?.CalculatedReliability ?? RoundedDouble.NaN; + } + } + + [PropertyOrder(10)] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_IllustrationPoints))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.ShouldIllustrationPointsBeCalculated_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.ShouldIllustrationPointsBeCalculated_Description))] + public bool ShouldIllustrationPointsBeCalculated + { + get + { + return data.InputParameters.ShouldIllustrationPointsBeCalculated; + } + set + { + data.InputParameters.ShouldIllustrationPointsBeCalculated = value; + data.HydraulicBoundaryLocation.NotifyObservers(); + data.NotifyObservers(); + } + } + + [PropertyOrder(11)] + [DynamicVisible] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_IllustrationPoints))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.IllustrationPoint_GoverningWindDirection_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.IllustrationPoint_GoverningWindDirection_Description))] + public string GoverningWindDirection + { + get + { + return GetGeneralResult().GoverningWindDirection.Name; + } + } + + [PropertyOrder(12)] + [DynamicVisible] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_IllustrationPoints))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.IllustrationPoint_AlphaValues_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.IllustrationPoint_AlphaValues_Description))] + [TypeConverter(typeof(KeyValueExpandableArrayConverter))] + [KeyValueElement(nameof(Stochast.Name), nameof(Stochast.Alpha))] + public Stochast[] AlphaValues + { + get + { + return GetGeneralResult().Stochasts.ToArray(); + } + } + + [PropertyOrder(13)] + [DynamicVisible] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_IllustrationPoints))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.IllustrationPoint_Durations_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.IllustrationPoint_Durations_Description))] + [TypeConverter(typeof(KeyValueExpandableArrayConverter))] + [KeyValueElement(nameof(Stochast.Name), nameof(Stochast.Duration))] + public Stochast[] Durations + { + get + { + return GetGeneralResult().Stochasts.ToArray(); + } + } + + [PropertyOrder(14)] + [DynamicVisible] + [ResourcesCategory(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.Categories_IllustrationPoints))] + [ResourcesDisplayName(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.IllustrationPointProperty_IllustrationPoints_DisplayName))] + [ResourcesDescription(typeof(RingtoetsCommonFormsResources), nameof(RingtoetsCommonFormsResources.IllustrationPointProperty_IllustrationPoints_Description))] + [TypeConverter(typeof(ExpandableArrayConverter))] + public IEnumerable IllustrationPoints + { + get + { + IEnumerable topLevelIllustrationPoints = + GetGeneralResult().TopLevelIllustrationPoints.ToArray(); + + IEnumerable closingSituations = topLevelIllustrationPoints.Select(s => s.ClosingSituation); + + return topLevelIllustrationPoints.Select(p => new TopLevelSubMechanismIllustrationPointProperties(p, closingSituations)) + .ToArray(); + } + } + + [DynamicVisibleValidationMethod] + public bool DynamicVisibleValidationMethod(string propertyName) + { + bool hasGeneralIllustrationPointsResult = GetGeneralResult() != null; + if (propertyName == nameof(GoverningWindDirection) + || propertyName == nameof(AlphaValues) + || propertyName == nameof(Durations) + || propertyName == nameof(IllustrationPoints)) + { + return hasGeneralIllustrationPointsResult; + } + + return true; + } + + public override string ToString() + { + return $"{Name} {Location}"; + } + + private GeneralResult GetGeneralResult() + { + if (data.HasOutput && data.Output.HasGeneralResult) + { + return data.Output.GeneralResult; + } + + return null; + } + } +} \ No newline at end of file Fisheye: Tag 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f refers to a dead (removed) revision in file `Ringtoets/Common/src/Ringtoets.Common.Forms/PropertyClasses/HydraulicBoundaryLocationProperties.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Ringtoets.Common.Forms.csproj =================================================================== diff -u -r0cea6a39ff67fb3eabb0d9281251908d3b70647b -r3fe0426d07701bbdc8c2e45d376bae2d12a56f2f --- Ringtoets/Common/src/Ringtoets.Common.Forms/Ringtoets.Common.Forms.csproj (.../Ringtoets.Common.Forms.csproj) (revision 0cea6a39ff67fb3eabb0d9281251908d3b70647b) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Ringtoets.Common.Forms.csproj (.../Ringtoets.Common.Forms.csproj) (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -64,7 +64,7 @@ - + Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/HydraulicBoundaryLocationCalculationPropertiesTest.cs =================================================================== diff -u --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/HydraulicBoundaryLocationCalculationPropertiesTest.cs (revision 0) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/HydraulicBoundaryLocationCalculationPropertiesTest.cs (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -0,0 +1,380 @@ +// 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 Core.Common.Base; +using Core.Common.Base.Geometry; +using Core.Common.Gui.Converters; +using Core.Common.TestUtil; +using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Common.Data.IllustrationPoints; +using Ringtoets.Common.Data.TestUtil; +using Ringtoets.Common.Data.TestUtil.IllustrationPoints; +using Ringtoets.Common.Forms.PropertyClasses; + +namespace Ringtoets.Common.Forms.Test.PropertyClasses +{ + [TestFixture] + public class HydraulicBoundaryLocationCalculationPropertiesTest + { + private const int idPropertyIndex = 0; + private const int namePropertyIndex = 1; + private const int coordinatesPropertyIndex = 2; + private const int targetProbabilityPropertyIndex = 3; + private const int targetReliabilityPropertyIndex = 4; + private const int calculatedProbabilityPropertyIndex = 5; + private const int calculatedReliabilityPropertyIndex = 6; + private const int shouldCalculateIllustrationPointsIndex = 7; + private const int governingWindDirectionIndex = 8; + private const int alphaValuesIndex = 9; + private const int durationsIndex = 10; + private const int illustrationPointsIndex = 11; + + [Test] + public void Constructor_HydraulicBoundaryLocationCalculationNull_ThrowsArgumentNullException() + { + // Call + TestDelegate test = () => new TestHydraulicBoundaryLocationCalculationProperties(null); + + // Assert + string paramName = Assert.Throws(test).ParamName; + Assert.AreEqual("hydraulicBoundaryLocationCalculation", paramName); + } + + [Test] + public void Constructor_WithoutGeneralIllustrationPointsResult_PropertiesHaveExpectedAttributesValues() + { + // Setup + var hydraulicBoundaryLocationCalculation = new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation()); + + // Call + var properties = new TestHydraulicBoundaryLocationCalculationProperties(hydraulicBoundaryLocationCalculation); + + // Assert + TypeConverter classTypeConverter = TypeDescriptor.GetConverter(properties, true); + Assert.IsInstanceOf(classTypeConverter); + + PropertyDescriptorCollection dynamicProperties = PropertiesTestHelper.GetAllVisiblePropertyDescriptors(properties); + Assert.AreEqual(8, dynamicProperties.Count); + + const string generalCategory = "Algemeen"; + const string resultCategory = "Resultaat"; + const string illustrationPointsCategory = "Illustratiepunten"; + + PropertyDescriptor idProperty = dynamicProperties[idPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(idProperty, + generalCategory, + "ID", + "ID van de hydraulische randvoorwaardenlocatie in de database.", + true); + + PropertyDescriptor nameProperty = dynamicProperties[namePropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(nameProperty, + generalCategory, + "Naam", + "Naam van de hydraulische randvoorwaardenlocatie.", + true); + + PropertyDescriptor coordinatesProperty = dynamicProperties[coordinatesPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(coordinatesProperty, + generalCategory, + "Coördinaten [m]", + "Coördinaten van de hydraulische randvoorwaardenlocatie.", + true); + + PropertyDescriptor targetProbabilityProperty = dynamicProperties[targetProbabilityPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(targetProbabilityProperty, + resultCategory, + "Doelkans [1/jaar]", + "De ingevoerde kans waarvoor het resultaat moet worden berekend.", + true); + + PropertyDescriptor targetReliabilityProperty = dynamicProperties[targetReliabilityPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(targetReliabilityProperty, + resultCategory, + "Betrouwbaarheidsindex doelkans [-]", + "Betrouwbaarheidsindex van de ingevoerde kans waarvoor het resultaat moet worden berekend.", + true); + + PropertyDescriptor calculatedProbabilityProperty = dynamicProperties[calculatedProbabilityPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(calculatedProbabilityProperty, + resultCategory, + "Berekende kans [1/jaar]", + "De berekende kans van voorkomen van het berekende resultaat.", + true); + + PropertyDescriptor calculatedReliabilityProperty = dynamicProperties[calculatedReliabilityPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(calculatedReliabilityProperty, + resultCategory, + "Betrouwbaarheidsindex berekende kans [-]", + "Betrouwbaarheidsindex van de berekende kans van voorkomen van het berekende resultaat.", + true); + + PropertyDescriptor calculateIllustrationPointsProperty = dynamicProperties[shouldCalculateIllustrationPointsIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(calculateIllustrationPointsProperty, + illustrationPointsCategory, + "Illustratiepunten inlezen", + "Neem de informatie over de illustratiepunten op in het berekeningsresultaat."); + } + + [Test] + public void Constructor_WithGeneralIllustrationPointsResult_PropertiesHaveExpectedAttributesValues() + { + // Setup + var hydraulicBoundaryLocationCalculation = new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation()) + { + Output = new TestHydraulicBoundaryLocationOutput(new TestGeneralResultSubMechanismIllustrationPoint()) + }; + + // Call + var properties = new TestHydraulicBoundaryLocationCalculationProperties(hydraulicBoundaryLocationCalculation); + + // Assert + TypeConverter classTypeConverter = TypeDescriptor.GetConverter(properties, true); + Assert.IsInstanceOf(classTypeConverter); + + PropertyDescriptorCollection dynamicProperties = PropertiesTestHelper.GetAllVisiblePropertyDescriptors(properties); + Assert.AreEqual(12, dynamicProperties.Count); + + const string generalCategory = "Algemeen"; + const string resultCategory = "Resultaat"; + const string illustrationPointsCategory = "Illustratiepunten"; + + PropertyDescriptor idProperty = dynamicProperties[idPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(idProperty, + generalCategory, + "ID", + "ID van de hydraulische randvoorwaardenlocatie in de database.", + true); + + PropertyDescriptor nameProperty = dynamicProperties[namePropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(nameProperty, + generalCategory, + "Naam", + "Naam van de hydraulische randvoorwaardenlocatie.", + true); + + PropertyDescriptor coordinatesProperty = dynamicProperties[coordinatesPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(coordinatesProperty, + generalCategory, + "Coördinaten [m]", + "Coördinaten van de hydraulische randvoorwaardenlocatie.", + true); + + PropertyDescriptor targetProbabilityProperty = dynamicProperties[targetProbabilityPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(targetProbabilityProperty, + resultCategory, + "Doelkans [1/jaar]", + "De ingevoerde kans waarvoor het resultaat moet worden berekend.", + true); + + PropertyDescriptor targetReliabilityProperty = dynamicProperties[targetReliabilityPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(targetReliabilityProperty, + resultCategory, + "Betrouwbaarheidsindex doelkans [-]", + "Betrouwbaarheidsindex van de ingevoerde kans waarvoor het resultaat moet worden berekend.", + true); + + PropertyDescriptor calculatedProbabilityProperty = dynamicProperties[calculatedProbabilityPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(calculatedProbabilityProperty, + resultCategory, + "Berekende kans [1/jaar]", + "De berekende kans van voorkomen van het berekende resultaat.", + true); + + PropertyDescriptor calculatedReliabilityProperty = dynamicProperties[calculatedReliabilityPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(calculatedReliabilityProperty, + resultCategory, + "Betrouwbaarheidsindex berekende kans [-]", + "Betrouwbaarheidsindex van de berekende kans van voorkomen van het berekende resultaat.", + true); + + PropertyDescriptor calculateIllustrationPointsProperty = dynamicProperties[shouldCalculateIllustrationPointsIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(calculateIllustrationPointsProperty, + illustrationPointsCategory, + "Illustratiepunten inlezen", + "Neem de informatie over de illustratiepunten op in het berekeningsresultaat."); + + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(dynamicProperties[governingWindDirectionIndex], + illustrationPointsCategory, + "Maatgevende windrichting", + "De windrichting waarvoor de berekende betrouwbaarheidsindex het laagst is.", + true); + + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.AlphaValues)); + PropertyDescriptor alphaValuesProperty = dynamicProperties[alphaValuesIndex]; + Assert.NotNull(alphaValuesProperty.Attributes[typeof(KeyValueElementAttribute)]); + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(alphaValuesProperty, + illustrationPointsCategory, + "Invloedscoëfficiënten [-]", + "Berekende invloedscoëfficiënten voor alle beschouwde stochasten.", + true); + + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.Durations)); + PropertyDescriptor durationsProperty = dynamicProperties[durationsIndex]; + Assert.NotNull(durationsProperty.Attributes[typeof(KeyValueElementAttribute)]); + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(durationsProperty, + illustrationPointsCategory, + "Tijdsduren [uur]", + "Tijdsduren waarop de stochasten betrekking hebben.", + true); + + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.IllustrationPoints)); + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(dynamicProperties[illustrationPointsIndex], + illustrationPointsCategory, + "Illustratiepunten", + "De lijst van illustratiepunten voor de berekening.", + true); + } + + [Test] + [TestCase(true)] + [TestCase(false)] + public void GetProperties_ValidData_ReturnsExpectedValues(bool withIllustrationPoints) + { + // Setup + var random = new Random(); + const long id = 1234L; + const double x = 567.0; + const double y = 890.0; + const string name = ""; + + double targetProbability = random.NextDouble(); + double targetReliability = random.NextDouble(); + double calculatedProbability = random.NextDouble(); + double calculatedReliability = random.NextDouble(); + double result = random.NextDouble(); + var convergence = random.NextEnumValue(); + + var illustrationPoints = new[] + { + new TopLevelSubMechanismIllustrationPoint(new WindDirection("WEST", 4), "sluit", new TestSubMechanismIllustrationPoint()) + }; + var stochasts = new[] + { + new Stochast("a", 2, 3) + }; + const string governingWindDirection = "EAST"; + GeneralResult generalResult = + withIllustrationPoints + ? new GeneralResult(new WindDirection(governingWindDirection, 2), + stochasts, + illustrationPoints) + : null; + + var hydraulicBoundaryLocationOutput = new HydraulicBoundaryLocationOutput(result, + targetProbability, + targetReliability, + calculatedProbability, + calculatedReliability, + convergence, + generalResult); + + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(id, name, x, y); + var hydraulicBoundaryLocationCalculation = new HydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation) + { + Output = hydraulicBoundaryLocationOutput + }; + + // Call + var properties = new TestHydraulicBoundaryLocationCalculationProperties(hydraulicBoundaryLocationCalculation); + + // Assert + Assert.AreEqual(id, properties.Id); + Assert.AreEqual(name, properties.Name); + var coordinates = new Point2D(x, y); + Assert.AreEqual(coordinates, properties.Location); + + Assert.AreEqual(targetProbability, properties.TargetProbability); + Assert.AreEqual(targetReliability, properties.TargetReliability, properties.TargetReliability.GetAccuracy()); + Assert.AreEqual(calculatedProbability, properties.CalculatedProbability); + Assert.AreEqual(calculatedReliability, properties.CalculatedReliability, properties.CalculatedReliability.GetAccuracy()); + + if (withIllustrationPoints) + { + GeneralResult expectedGeneralResult = hydraulicBoundaryLocationOutput.GeneralResult; + CollectionAssert.AreEqual(expectedGeneralResult.Stochasts, properties.AlphaValues); + CollectionAssert.AreEqual(expectedGeneralResult.Stochasts, properties.Durations); + CollectionAssert.AreEqual(expectedGeneralResult.TopLevelIllustrationPoints, properties.IllustrationPoints.Select(ip => ip.Data)); + Assert.AreEqual(expectedGeneralResult.GoverningWindDirection.Name, properties.GoverningWindDirection); + } + } + + [Test] + [TestCase("")] + [TestCase("some name")] + public void ToString_WithName_ReturnsName(string name) + { + // Setup + const long id = 1234L; + const double x = 567.0; + const double y = 890.0; + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(id, name, x, y); + var hydraulicBoundaryLocationCalculation = new HydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation); + + // Call + HydraulicBoundaryLocationCalculationProperties properties = new TestHydraulicBoundaryLocationCalculationProperties(hydraulicBoundaryLocationCalculation); + + // Assert + string expectedString = $"{name} {new Point2D(x, y)}"; + Assert.AreEqual(expectedString, properties.ToString()); + } + + [Test] + public void ShouldIllustrationPointsBeCalculated_SetNewValue_NotifyObservers() + { + // Setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + observer.Expect(o => o.UpdateObserver()); + mocks.ReplayAll(); + + var hydraulicBoundaryLocationCalculation = new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation()) + { + InputParameters = + { + ShouldIllustrationPointsBeCalculated = false + } + }; + + hydraulicBoundaryLocationCalculation.Attach(observer); + + var properties = new TestHydraulicBoundaryLocationCalculationProperties(hydraulicBoundaryLocationCalculation); + + // Call + properties.ShouldIllustrationPointsBeCalculated = true; + + // Assert + Assert.IsTrue(hydraulicBoundaryLocationCalculation.InputParameters.ShouldIllustrationPointsBeCalculated); + mocks.VerifyAll(); + } + + private class TestHydraulicBoundaryLocationCalculationProperties : HydraulicBoundaryLocationCalculationProperties + { + public TestHydraulicBoundaryLocationCalculationProperties(HydraulicBoundaryLocationCalculation hydraulicBoundaryLocationCalculation) + : base(hydraulicBoundaryLocationCalculation) {} + } + } +} \ No newline at end of file Fisheye: Tag 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f refers to a dead (removed) revision in file `Ringtoets/Common/test/Ringtoets.Common.Forms.Test/PropertyClasses/HydraulicBoundaryLocationPropertiesTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Ringtoets.Common.Forms.Test.csproj =================================================================== diff -u -r0cea6a39ff67fb3eabb0d9281251908d3b70647b -r3fe0426d07701bbdc8c2e45d376bae2d12a56f2f --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Ringtoets.Common.Forms.Test.csproj (.../Ringtoets.Common.Forms.Test.csproj) (revision 0cea6a39ff67fb3eabb0d9281251908d3b70647b) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/Ringtoets.Common.Forms.Test.csproj (.../Ringtoets.Common.Forms.Test.csproj) (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -81,7 +81,7 @@ - + Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PropertyClasses/GrassCoverErosionOutwardsDesignWaterLevelLocationProperties.cs =================================================================== diff -u -r004bbd352a22299358396d752e97971453095361 -r3fe0426d07701bbdc8c2e45d376bae2d12a56f2f --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PropertyClasses/GrassCoverErosionOutwardsDesignWaterLevelLocationProperties.cs (.../GrassCoverErosionOutwardsDesignWaterLevelLocationProperties.cs) (revision 004bbd352a22299358396d752e97971453095361) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PropertyClasses/GrassCoverErosionOutwardsDesignWaterLevelLocationProperties.cs (.../GrassCoverErosionOutwardsDesignWaterLevelLocationProperties.cs) (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -38,7 +38,7 @@ /// ViewModel of with a design water level calculation result /// for properties panel of the . /// - public class GrassCoverErosionOutwardsDesignWaterLevelLocationProperties : HydraulicBoundaryLocationProperties + public class GrassCoverErosionOutwardsDesignWaterLevelLocationProperties : HydraulicBoundaryLocationCalculationProperties { /// /// Creates a new instance of . Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PropertyClasses/GrassCoverErosionOutwardsWaveHeightLocationProperties.cs =================================================================== diff -u -r004bbd352a22299358396d752e97971453095361 -r3fe0426d07701bbdc8c2e45d376bae2d12a56f2f --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PropertyClasses/GrassCoverErosionOutwardsWaveHeightLocationProperties.cs (.../GrassCoverErosionOutwardsWaveHeightLocationProperties.cs) (revision 004bbd352a22299358396d752e97971453095361) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PropertyClasses/GrassCoverErosionOutwardsWaveHeightLocationProperties.cs (.../GrassCoverErosionOutwardsWaveHeightLocationProperties.cs) (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -38,7 +38,7 @@ /// ViewModel of with a wave height calculation result /// for properties panel of the . /// - public class GrassCoverErosionOutwardsWaveHeightLocationProperties : HydraulicBoundaryLocationProperties + public class GrassCoverErosionOutwardsWaveHeightLocationProperties : HydraulicBoundaryLocationCalculationProperties { /// /// Creates a new instance of . Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PropertyClasses/GrassCoverErosionOutwardsDesignWaterLevelLocationPropertiesTest.cs =================================================================== diff -u -r498fff67100402a9a9c5af9d075c35563d284905 -r3fe0426d07701bbdc8c2e45d376bae2d12a56f2f --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PropertyClasses/GrassCoverErosionOutwardsDesignWaterLevelLocationPropertiesTest.cs (.../GrassCoverErosionOutwardsDesignWaterLevelLocationPropertiesTest.cs) (revision 498fff67100402a9a9c5af9d075c35563d284905) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PropertyClasses/GrassCoverErosionOutwardsDesignWaterLevelLocationPropertiesTest.cs (.../GrassCoverErosionOutwardsDesignWaterLevelLocationPropertiesTest.cs) (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -61,7 +61,7 @@ var properties = new GrassCoverErosionOutwardsDesignWaterLevelLocationProperties(hydraulicBoundaryLocationCalculation); // Assert - Assert.IsInstanceOf(properties); + Assert.IsInstanceOf(properties); Assert.AreSame(hydraulicBoundaryLocationCalculation, properties.Data); } @@ -253,7 +253,7 @@ "De windrichting waarvoor de berekende betrouwbaarheidsindex het laagst is.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.AlphaValues)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.AlphaValues)); PropertyDescriptor alphaValuesProperty = dynamicProperties[alphaValuesIndex]; Assert.NotNull(alphaValuesProperty.Attributes[typeof(KeyValueElementAttribute)]); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(alphaValuesProperty, @@ -262,7 +262,7 @@ "Berekende invloedscoëfficiënten voor alle beschouwde stochasten.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.Durations)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.Durations)); PropertyDescriptor durationsProperty = dynamicProperties[durationsIndex]; Assert.NotNull(durationsProperty.Attributes[typeof(KeyValueElementAttribute)]); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(durationsProperty, @@ -271,7 +271,7 @@ "Tijdsduren waarop de stochasten betrekking hebben.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.IllustrationPoints)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.IllustrationPoints)); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(dynamicProperties[illustrationPointsIndex], illustrationPointsCategory, "Illustratiepunten", Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PropertyClasses/GrassCoverErosionOutwardsWaveHeightLocationPropertiesTest.cs =================================================================== diff -u -r498fff67100402a9a9c5af9d075c35563d284905 -r3fe0426d07701bbdc8c2e45d376bae2d12a56f2f --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PropertyClasses/GrassCoverErosionOutwardsWaveHeightLocationPropertiesTest.cs (.../GrassCoverErosionOutwardsWaveHeightLocationPropertiesTest.cs) (revision 498fff67100402a9a9c5af9d075c35563d284905) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PropertyClasses/GrassCoverErosionOutwardsWaveHeightLocationPropertiesTest.cs (.../GrassCoverErosionOutwardsWaveHeightLocationPropertiesTest.cs) (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -61,7 +61,7 @@ var properties = new GrassCoverErosionOutwardsWaveHeightLocationProperties(hydraulicBoundaryLocationCalculation); // Assert - Assert.IsInstanceOf(properties); + Assert.IsInstanceOf(properties); Assert.AreSame(hydraulicBoundaryLocationCalculation, properties.Data); } @@ -253,7 +253,7 @@ "De windrichting waarvoor de berekende betrouwbaarheidsindex het laagst is.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.AlphaValues)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.AlphaValues)); PropertyDescriptor alphaValuesProperty = dynamicProperties[alphaValuesIndex]; Assert.NotNull(alphaValuesProperty.Attributes[typeof(KeyValueElementAttribute)]); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(alphaValuesProperty, @@ -262,7 +262,7 @@ "Berekende invloedscoëfficiënten voor alle beschouwde stochasten.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.Durations)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.Durations)); PropertyDescriptor durationsProperty = dynamicProperties[durationsIndex]; Assert.NotNull(durationsProperty.Attributes[typeof(KeyValueElementAttribute)]); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(durationsProperty, @@ -271,7 +271,7 @@ "Tijdsduren waarop de stochasten betrekking hebben.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.IllustrationPoints)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.IllustrationPoints)); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(dynamicProperties[illustrationPointsIndex], illustrationPointsCategory, "Illustratiepunten", Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/DesignWaterLevelLocationProperties.cs =================================================================== diff -u -r0cea6a39ff67fb3eabb0d9281251908d3b70647b -r3fe0426d07701bbdc8c2e45d376bae2d12a56f2f --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/DesignWaterLevelLocationProperties.cs (.../DesignWaterLevelLocationProperties.cs) (revision 0cea6a39ff67fb3eabb0d9281251908d3b70647b) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/DesignWaterLevelLocationProperties.cs (.../DesignWaterLevelLocationProperties.cs) (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -36,7 +36,7 @@ /// /// ViewModel of with for properties panel. /// - public class DesignWaterLevelLocationProperties : HydraulicBoundaryLocationProperties + public class DesignWaterLevelLocationProperties : HydraulicBoundaryLocationCalculationProperties { /// /// Creates a new instance of . Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/WaveHeightLocationProperties.cs =================================================================== diff -u -r0cea6a39ff67fb3eabb0d9281251908d3b70647b -r3fe0426d07701bbdc8c2e45d376bae2d12a56f2f --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/WaveHeightLocationProperties.cs (.../WaveHeightLocationProperties.cs) (revision 0cea6a39ff67fb3eabb0d9281251908d3b70647b) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/WaveHeightLocationProperties.cs (.../WaveHeightLocationProperties.cs) (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -36,7 +36,7 @@ /// /// ViewModel of with for properties panel. /// - public class WaveHeightLocationProperties : HydraulicBoundaryLocationProperties + public class WaveHeightLocationProperties : HydraulicBoundaryLocationCalculationProperties { /// /// Creates a new instance of . Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/DesignWaterLevelLocationPropertiesTest.cs =================================================================== diff -u -r0cea6a39ff67fb3eabb0d9281251908d3b70647b -r3fe0426d07701bbdc8c2e45d376bae2d12a56f2f --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/DesignWaterLevelLocationPropertiesTest.cs (.../DesignWaterLevelLocationPropertiesTest.cs) (revision 0cea6a39ff67fb3eabb0d9281251908d3b70647b) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/DesignWaterLevelLocationPropertiesTest.cs (.../DesignWaterLevelLocationPropertiesTest.cs) (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -61,7 +61,7 @@ var properties = new DesignWaterLevelLocationProperties(hydraulicBoundaryLocationCalculation); // Assert - Assert.IsInstanceOf(properties); + Assert.IsInstanceOf(properties); Assert.AreSame(hydraulicBoundaryLocationCalculation, properties.Data); } @@ -253,7 +253,7 @@ "De windrichting waarvoor de berekende betrouwbaarheidsindex het laagst is.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.AlphaValues)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.AlphaValues)); PropertyDescriptor alphaValuesProperty = dynamicProperties[alphaValuesIndex]; Assert.NotNull(alphaValuesProperty.Attributes[typeof(KeyValueElementAttribute)]); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(alphaValuesProperty, @@ -262,7 +262,7 @@ "Berekende invloedscoëfficiënten voor alle beschouwde stochasten.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.Durations)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.Durations)); PropertyDescriptor durationsProperty = dynamicProperties[durationsIndex]; Assert.NotNull(durationsProperty.Attributes[typeof(KeyValueElementAttribute)]); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(durationsProperty, @@ -271,7 +271,7 @@ "Tijdsduren waarop de stochasten betrekking hebben.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.IllustrationPoints)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.IllustrationPoints)); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(dynamicProperties[illustrationPointsIndex], illustrationPointsCategory, "Illustratiepunten", Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/WaveHeightLocationPropertiesTest.cs =================================================================== diff -u -r0cea6a39ff67fb3eabb0d9281251908d3b70647b -r3fe0426d07701bbdc8c2e45d376bae2d12a56f2f --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/WaveHeightLocationPropertiesTest.cs (.../WaveHeightLocationPropertiesTest.cs) (revision 0cea6a39ff67fb3eabb0d9281251908d3b70647b) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/WaveHeightLocationPropertiesTest.cs (.../WaveHeightLocationPropertiesTest.cs) (revision 3fe0426d07701bbdc8c2e45d376bae2d12a56f2f) @@ -61,7 +61,7 @@ var properties = new WaveHeightLocationProperties(hydraulicBoundaryLocationCalculation); // Assert - Assert.IsInstanceOf(properties); + Assert.IsInstanceOf(properties); Assert.AreSame(hydraulicBoundaryLocationCalculation, properties.Data); } @@ -253,7 +253,7 @@ "De windrichting waarvoor de berekende betrouwbaarheidsindex het laagst is.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.AlphaValues)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.AlphaValues)); PropertyDescriptor alphaValuesProperty = dynamicProperties[alphaValuesIndex]; Assert.NotNull(alphaValuesProperty.Attributes[typeof(KeyValueElementAttribute)]); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(alphaValuesProperty, @@ -262,7 +262,7 @@ "Berekende invloedscoëfficiënten voor alle beschouwde stochasten.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.Durations)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.Durations)); PropertyDescriptor durationsProperty = dynamicProperties[durationsIndex]; Assert.NotNull(durationsProperty.Attributes[typeof(KeyValueElementAttribute)]); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(durationsProperty, @@ -271,7 +271,7 @@ "Tijdsduren waarop de stochasten betrekking hebben.", true); - TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationProperties.IllustrationPoints)); + TestHelper.AssertTypeConverter(nameof(HydraulicBoundaryLocationCalculationProperties.IllustrationPoints)); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(dynamicProperties[illustrationPointsIndex], illustrationPointsCategory, "Illustratiepunten",