Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/DikeProfileDikeGeometryProperties.cs
===================================================================
diff -u
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/DikeProfileDikeGeometryProperties.cs (revision 0)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/DikeProfileDikeGeometryProperties.cs (revision 94f0e9153131295bf39021c7f0e3f948c64441f3)
@@ -0,0 +1,82 @@
+// 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.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.Utils.Attributes;
+using Ringtoets.GrassCoverErosionInwards.Data;
+using Ringtoets.GrassCoverErosionInwards.Forms.Properties;
+
+namespace Ringtoets.GrassCoverErosionInwards.Forms.PropertyClasses
+{
+ ///
+ /// ViewModel of dike geometry of for properties panel.
+ ///
+ [TypeConverter(typeof(ExpandableObjectConverter))]
+ public class DikeProfileDikeGeometryProperties : ObjectProperties
+ {
+ [PropertyOrder(1)]
+ [TypeConverter(typeof(ExpandableReadOnlyArrayConverter))]
+ [ResourcesDisplayName(typeof(Resources), "Geometry_Coordinates_DisplayName")]
+ [ResourcesDescription(typeof(Resources), "Geometry_Coordinates_Description")]
+ public Point2D[] Coordinates
+ {
+ get
+ {
+ var startingPoint = data.DikeGeometry.FirstOrDefault();
+ if (startingPoint == null)
+ {
+ return new Point2D[0];
+ }
+ var coordinates = new List
+ {
+ startingPoint.StartingPoint
+ };
+ coordinates.AddRange(data.DikeGeometry.Select(d => d.EndingPoint));
+ return coordinates.ToArray();
+ }
+ }
+
+ [PropertyOrder(2)]
+ [TypeConverter(typeof(ExpandableReadOnlyArrayConverter))]
+ [ResourcesDisplayName(typeof(Resources), "DikeGeometry_Roughness_DisplayName")]
+ [ResourcesDescription(typeof(Resources), "DikeGeometry_Roughness_Description")]
+ public RoundedDouble[] Roughness
+ {
+ get
+ {
+ var roughnesses = data.DikeGeometry.Select(d => d.Roughness);
+ return roughnesses.Select(roughness => new RoundedDouble(2, roughness)).ToArray();
+ }
+ }
+
+ public override string ToString()
+ {
+ return string.Empty;
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Ringtoets.GrassCoverErosionInwards.Forms.csproj
===================================================================
diff -u -re5cf2b83dc6e3e2626552bd0b402e7740c548565 -r94f0e9153131295bf39021c7f0e3f948c64441f3
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Ringtoets.GrassCoverErosionInwards.Forms.csproj (.../Ringtoets.GrassCoverErosionInwards.Forms.csproj) (revision e5cf2b83dc6e3e2626552bd0b402e7740c548565)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/Ringtoets.GrassCoverErosionInwards.Forms.csproj (.../Ringtoets.GrassCoverErosionInwards.Forms.csproj) (revision 94f0e9153131295bf39021c7f0e3f948c64441f3)
@@ -53,6 +53,7 @@
True
Resources.resx
+
Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/DikeProfileDikeGeometryPropertiesTest.cs
===================================================================
diff -u
--- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/DikeProfileDikeGeometryPropertiesTest.cs (revision 0)
+++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/DikeProfileDikeGeometryPropertiesTest.cs (revision 94f0e9153131295bf39021c7f0e3f948c64441f3)
@@ -0,0 +1,125 @@
+// 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.ComponentModel;
+using Core.Common.Base.Data;
+using Core.Common.Base.Geometry;
+using Core.Common.Gui.PropertyBag;
+using NUnit.Framework;
+using Ringtoets.GrassCoverErosionInwards.Data;
+using Ringtoets.GrassCoverErosionInwards.Forms.PropertyClasses;
+
+namespace Ringtoets.GrassCoverErosionInwards.Forms.Test.PropertyClasses
+{
+ [TestFixture]
+ public class DikeProfileDikeGeometryPropertiesTest
+ {
+ [Test]
+ public void Constructor_ExpectedValues()
+ {
+ // Call
+ var properties = new DikeProfileDikeGeometryProperties();
+
+ // Assert
+ Assert.IsInstanceOf>(properties);
+ Assert.IsNull(properties.Data);
+ Assert.AreEqual(string.Empty, properties.ToString());
+ }
+
+ [Test]
+ public void Data_SetNewDikeProfileInstance_ReturnCorrectPropertyValues()
+ {
+ // Setup
+ var dikeProfile = new DikeProfile(new Point2D(0, 0));
+ var properties = new DikeProfileDikeGeometryProperties();
+
+ // Call
+ properties.Data = dikeProfile;
+
+ // Assert
+ CollectionAssert.IsEmpty(properties.Coordinates);
+ CollectionAssert.IsEmpty(properties.Roughness);
+ }
+
+ [Test]
+ public void Data_SetDikeProfileInstanceWithData_ReturnCorrectPropertyValues()
+ {
+ // Setup
+ var dikeProfile = new DikeProfile(new Point2D(0, 0));
+ dikeProfile.AddDikeGeometrySection(new RoughnessProfileSection(new Point2D(0, 0), new Point2D(1, 1), 2));
+
+ var properties = new DikeProfileDikeGeometryProperties();
+
+ // Call
+ properties.Data = dikeProfile;
+
+ // Assert
+ var expectedCoordinates = new[]
+ {
+ new Point2D(0, 0),
+ new Point2D(1, 1)
+ };
+ CollectionAssert.AreEqual(expectedCoordinates, properties.Coordinates);
+
+ var expectedRoughness = new[]
+ {
+ new RoundedDouble(2, 2)
+ };
+ CollectionAssert.AreEqual(expectedRoughness, properties.Roughness);
+ }
+
+ [Test]
+ public void PropertyAttributes_ReturnExpectedValues()
+ {
+ // Setup
+ var dikeProfile = new DikeProfile(new Point2D(0, 0));
+
+ // Call
+ var properties = new DikeProfileDikeGeometryProperties
+ {
+ Data = dikeProfile
+ };
+
+ // Assert
+ TypeConverter classTypeConverter = TypeDescriptor.GetConverter(properties, true);
+ Assert.IsInstanceOf(classTypeConverter);
+
+ var dynamicPropertyBag = new DynamicPropertyBag(properties);
+ PropertyDescriptorCollection dynamicProperties = dynamicPropertyBag.GetProperties();
+ Assert.AreEqual(3, dynamicProperties.Count);
+
+ PropertyDescriptor coordinatesProperty = dynamicProperties[coordinatesPropertyIndex];
+ Assert.IsNotNull(coordinatesProperty);
+ Assert.IsTrue(coordinatesProperty.IsReadOnly);
+ Assert.AreEqual("Coördinaten [m]", coordinatesProperty.DisplayName);
+ Assert.AreEqual("Lijst met punten in coördinaten.", coordinatesProperty.Description);
+
+ PropertyDescriptor roughnessesProperty = dynamicProperties[roughnessesPropertyIndex];
+ Assert.IsNotNull(roughnessesProperty);
+ Assert.IsTrue(roughnessesProperty.IsReadOnly);
+ Assert.AreEqual("Ruwheden [-]", roughnessesProperty.DisplayName);
+ Assert.AreEqual("Lijst met de ruwheid van elk onderdeel.", roughnessesProperty.Description);
+ }
+
+ private const int coordinatesPropertyIndex = 0;
+ private const int roughnessesPropertyIndex = 1;
+ }
+}
\ No newline at end of file
Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Ringtoets.GrassCoverErosionInwards.Forms.Test.csproj
===================================================================
diff -u -re5cf2b83dc6e3e2626552bd0b402e7740c548565 -r94f0e9153131295bf39021c7f0e3f948c64441f3
--- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Ringtoets.GrassCoverErosionInwards.Forms.Test.csproj (.../Ringtoets.GrassCoverErosionInwards.Forms.Test.csproj) (revision e5cf2b83dc6e3e2626552bd0b402e7740c548565)
+++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/Ringtoets.GrassCoverErosionInwards.Forms.Test.csproj (.../Ringtoets.GrassCoverErosionInwards.Forms.Test.csproj) (revision 94f0e9153131295bf39021c7f0e3f948c64441f3)
@@ -64,6 +64,7 @@
True
Resources.resx
+