Index: Core/Common/test/Core.Common.Gui.Test/Attributes/DynamicPropertyOrderEvaluationMethodAttributeTest.cs
===================================================================
diff -u
--- Core/Common/test/Core.Common.Gui.Test/Attributes/DynamicPropertyOrderEvaluationMethodAttributeTest.cs (revision 0)
+++ Core/Common/test/Core.Common.Gui.Test/Attributes/DynamicPropertyOrderEvaluationMethodAttributeTest.cs (revision ddcd294f74df8958b5c9177c4d75a91cc6df209d)
@@ -0,0 +1,128 @@
+// 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 Lesser 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 Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser 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 Core.Common.Gui.Attributes;
+using Core.Common.Gui.Test.Attributes.TestCaseClasses;
+using NUnit.Framework;
+
+namespace Core.Common.Gui.Test.Attributes
+{
+ [TestFixture]
+ public class DynamicPropertyOrderEvaluationMethodAttributeTest
+ {
+ [Test]
+ public void CreatePropertyOrderMethod_ClassLacksDynamicPropertyOrderEvaluationMethod_ThrowsMissingMethodException()
+ {
+ // Setup
+ var o = new InvalidClassWithDynamicPropertyOrderPropertyButNoEvaluationMethod();
+
+ // Call
+ TestDelegate call = () => DynamicPropertyOrderEvaluationMethodAttribute.CreatePropertyOrderMethod(o);
+
+ // Assert
+ var exceptionMessage = Assert.Throws(call).Message;
+ var expectedMessage = string.Format("DynamicPropertyOrderEvaluationMethod niet gevonden (of geen 'public' toegankelijkheid). Klasse: {0}.",
+ o.GetType());
+ Assert.AreEqual(expectedMessage, exceptionMessage);
+ }
+
+ [Test]
+ public void CreatePropertyOrderMethod_ClassHasMultipleDynamicPropertyOrderEvaluationMethods_ThrowsMissingMethodException()
+ {
+ // Setup
+ var o = new InvalidClassWithDynamicPropertyOrderPropertyAndMultipleEvaluationMethods();
+
+ // Call
+ TestDelegate call = () => DynamicPropertyOrderEvaluationMethodAttribute.CreatePropertyOrderMethod(o);
+
+ // Assert
+ var exceptionMessage = Assert.Throws(call).Message;
+ var expectedMessage = string.Format("Slechts één DynamicPropertyOrderEvaluationMethod toegestaan per klasse: {0}.",
+ o.GetType());
+ Assert.AreEqual(expectedMessage, exceptionMessage);
+ }
+
+ [Test]
+ public void CreatePropertyOrderMethod_ClassHasDynamicPropertyOrderEvaluationMethodWithNonIntReturnType_ThrowsMissingMethodException()
+ {
+ // Setup
+ var o = new InvalidClassWithDynamicPropertyOrderPropertyButEvaluationMethodReturnsIncorrectValueType();
+
+ // Call
+ TestDelegate call = () => DynamicPropertyOrderEvaluationMethodAttribute.CreatePropertyOrderMethod(o);
+
+ // Assert
+ var exceptionMessage = Assert.Throws(call).Message;
+ var expectedMessage = string.Format("DynamicPropertyOrderEvaluationMethod moet 'int' als 'return type' hebben. Klasse: {0}.",
+ o.GetType());
+ Assert.AreEqual(expectedMessage, exceptionMessage);
+ }
+
+ [Test]
+ public void CreatePropertyOrderMethod_ClassHasDynamicPropertyOrderEvaluationMethodWithIncorrectArgumentCount_ThrowsMissingMethodException()
+ {
+ // Setup
+ var o = new InvalidClassWithDynamicPropertyOrderPropertyButEvaluationMethodNotOneArgument();
+
+ // Call
+ TestDelegate call = () => DynamicPropertyOrderEvaluationMethodAttribute.CreatePropertyOrderMethod(o);
+
+ // Assert
+ var exceptionMessage = Assert.Throws(call).Message;
+ var expectedMessage = string.Format("DynamicPropertyOrderEvaluationMethod heeft een incorrect aantal argumenten. Zou er één moeten zijn. Klasse: {0}.",
+ o.GetType());
+ Assert.AreEqual(expectedMessage, exceptionMessage);
+ }
+
+ [Test]
+ public void CreatePropertyOrderMethod_ClassHasDynamicPropertyOrderEvaluationMethodWithIncorrectArgumentType_ThrowsMissingMethodException()
+ {
+ // Setup
+ var o = new InvalidClassWithDynamicPropertyOrderPropertyButEvaluationMethodArgumentNotString();
+
+ // Call
+ TestDelegate call = () => DynamicPropertyOrderEvaluationMethodAttribute.CreatePropertyOrderMethod(o);
+
+ // Assert
+ var exceptionMessage = Assert.Throws(call).Message;
+ var expectedMessage = string.Format("Argument van DynamicPropertyOrderEvaluationMethod moet van het type 'string' zijn. Klasse: {0}.",
+ o.GetType());
+ Assert.AreEqual(expectedMessage, exceptionMessage);
+ }
+
+ [Test]
+ [TestCase(1)]
+ [TestCase(2)]
+ [TestCase(10)]
+ public void CreatePropertyOrderMethod_ClassWithDynamicPropertyOrderProperty_ReturnResultFromEvaluationMethod(int propertyOrder)
+ {
+ // Setup
+ var o = new ClassWithDynamicPropertyOrderProperty(propertyOrder);
+
+ // Call
+ var result = DynamicPropertyOrderEvaluationMethodAttribute.CreatePropertyOrderMethod(o);
+
+ // Assert
+ Assert.AreEqual(propertyOrder, result("Property"));
+ }
+ }
+}
\ No newline at end of file
Index: Core/Common/test/Core.Common.Gui.Test/Core.Common.Gui.Test.csproj
===================================================================
diff -u -rd704d270e9ff14260232f42af64a262f5862f40a -rddcd294f74df8958b5c9177c4d75a91cc6df209d
--- Core/Common/test/Core.Common.Gui.Test/Core.Common.Gui.Test.csproj (.../Core.Common.Gui.Test.csproj) (revision d704d270e9ff14260232f42af64a262f5862f40a)
+++ Core/Common/test/Core.Common.Gui.Test/Core.Common.Gui.Test.csproj (.../Core.Common.Gui.Test.csproj) (revision ddcd294f74df8958b5c9177c4d75a91cc6df209d)
@@ -72,6 +72,7 @@
+