Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsInputContextBreakWaterProperties.cs =================================================================== diff -u -r780026d643daa908175ea55cf553a33ae1d8f634 -rc2613a5d4c948a900a0d84ce1a4e57def8daade5 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsInputContextBreakWaterProperties.cs (.../GrassCoverErosionInwardsInputContextBreakWaterProperties.cs) (revision 780026d643daa908175ea55cf553a33ae1d8f634) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsInputContextBreakWaterProperties.cs (.../GrassCoverErosionInwardsInputContextBreakWaterProperties.cs) (revision c2613a5d4c948a900a0d84ce1a4e57def8daade5) @@ -36,13 +36,15 @@ /// public class GrassCoverErosionInwardsInputContextBreakWaterProperties : ObjectProperties { + [DynamicReadOnly] [PropertyOrder(1)] [ResourcesDisplayName(typeof(Resources), "BreakWater_UseBreakWater_DisplayName")] [ResourcesDescription(typeof(Resources), "BreakWater_UseBreakWater_Description")] public bool UseBreakWater { get { + return data.WrappedData.UseBreakWater; } set @@ -52,6 +54,7 @@ } } + [DynamicReadOnly] [PropertyOrder(2)] [ResourcesDisplayName(typeof(Resources), "BreakWaterType_DisplayName")] [ResourcesDescription(typeof(Resources), "BreakWaterType_Description")] @@ -69,6 +72,7 @@ } } + [DynamicReadOnly] [PropertyOrder(3)] [ResourcesDisplayName(typeof(Resources), "BreakWaterHeight_DisplayName")] [ResourcesDescription(typeof(Resources), "BreakWaterHeight_Description")] @@ -85,6 +89,12 @@ } } + [DynamicReadOnlyValidationMethod] + public bool DynamicReadOnlyValidationMethod(string propertyName) + { + return data.WrappedData.DikeProfile == null; + } + public override string ToString() { return string.Empty; Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsInputContextForeshoreProperties.cs =================================================================== diff -u -r780026d643daa908175ea55cf553a33ae1d8f634 -rc2613a5d4c948a900a0d84ce1a4e57def8daade5 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsInputContextForeshoreProperties.cs (.../GrassCoverErosionInwardsInputContextForeshoreProperties.cs) (revision 780026d643daa908175ea55cf553a33ae1d8f634) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsInputContextForeshoreProperties.cs (.../GrassCoverErosionInwardsInputContextForeshoreProperties.cs) (revision c2613a5d4c948a900a0d84ce1a4e57def8daade5) @@ -40,6 +40,7 @@ private const int useForeshorePropertyIndex = 1; private const int coordinatesPropertyIndex = 2; + [DynamicReadOnly] [PropertyOrder(useForeshorePropertyIndex)] [ResourcesDisplayName(typeof(Resources), "Foreshore_UseForeshore_DisplayName")] [ResourcesDescription(typeof(Resources), "Foreshore_UseForeshore_Description")] @@ -68,6 +69,12 @@ } } + [DynamicReadOnlyValidationMethod] + public bool DynamicReadOnlyValidationMethod(string propertyName) + { + return data.WrappedData.DikeProfile == null; + } + public override string ToString() { return string.Empty; Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsInputContextBreakWaterPropertiesTest.cs =================================================================== diff -u -r45b29eccca0f5d21a82f7c4ac07abc17acc0df59 -rc2613a5d4c948a900a0d84ce1a4e57def8daade5 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsInputContextBreakWaterPropertiesTest.cs (.../GrassCoverErosionInwardsInputContextBreakWaterPropertiesTest.cs) (revision 45b29eccca0f5d21a82f7c4ac07abc17acc0df59) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsInputContextBreakWaterPropertiesTest.cs (.../GrassCoverErosionInwardsInputContextBreakWaterPropertiesTest.cs) (revision c2613a5d4c948a900a0d84ce1a4e57def8daade5) @@ -22,6 +22,7 @@ using System.ComponentModel; using Core.Common.Base; using Core.Common.Base.Data; +using Core.Common.Base.Geometry; using Core.Common.Gui.PropertyBag; using NUnit.Framework; using Rhino.Mocks; @@ -112,19 +113,23 @@ } [Test] - public void PropertyAttributes_ReturnExpectedValues() + public void PropertyAttributes_SetInputInstanceWithDikeProfile_ReturnExpectedValues() { // Setup var assessmentSectionMock = mockRepository.StrictMock(); - var failureMechanismMock = mockRepository.StrictMock(); - var calculationMock = mockRepository.StrictMock(); - var inputMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + var calculation = new GrassCoverErosionInwardsCalculation(); + var input = new GrassCoverErosionInwardsInput + { + DikeProfile = new DikeProfile(new Point2D(0, 0)) + }; + // Call var properties = new GrassCoverErosionInwardsInputContextBreakWaterProperties { - Data = new GrassCoverErosionInwardsInputContext(inputMock, calculationMock, failureMechanismMock, assessmentSectionMock) + Data = new GrassCoverErosionInwardsInputContext(input, calculation, failureMechanism, assessmentSectionMock) }; // Assert @@ -151,5 +156,47 @@ Assert.AreEqual("De hoogte van de dam [m+NAP].", breakWaterHeightProperty.Description); mockRepository.VerifyAll(); } + + [Test] + public void PropertyAttributes_SetInputInstanceWithoutDikeProfile_ReturnExpectedValues() + { + // Setup + var assessmentSectionMock = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + var calculation = new GrassCoverErosionInwardsCalculation(); + var input = new GrassCoverErosionInwardsInput(); + + // Call + var properties = new GrassCoverErosionInwardsInputContextBreakWaterProperties + { + Data = new GrassCoverErosionInwardsInputContext(input, calculation, failureMechanism, assessmentSectionMock) + }; + + // Assert + var dynamicPropertyBag = new DynamicPropertyBag(properties); + PropertyDescriptorCollection dynamicProperties = dynamicPropertyBag.GetProperties(); + Assert.AreEqual(4, dynamicProperties.Count); + + PropertyDescriptor useBreakWaterProperty = dynamicProperties[0]; + Assert.IsNotNull(useBreakWaterProperty); + Assert.IsTrue(useBreakWaterProperty.IsReadOnly); + Assert.AreEqual("Gebruik", useBreakWaterProperty.DisplayName); + Assert.AreEqual("Moet de dam worden gebruikt tijdens de berekening?", useBreakWaterProperty.Description); + + PropertyDescriptor breakWaterTypeProperty = dynamicProperties[1]; + Assert.IsNotNull(breakWaterTypeProperty); + Assert.IsTrue(breakWaterTypeProperty.IsReadOnly); + Assert.AreEqual("Type", breakWaterTypeProperty.DisplayName); + Assert.AreEqual("Het type van de dam.", breakWaterTypeProperty.Description); + + PropertyDescriptor breakWaterHeightProperty = dynamicProperties[2]; + Assert.IsNotNull(breakWaterHeightProperty); + Assert.IsTrue(breakWaterHeightProperty.IsReadOnly); + Assert.AreEqual("Hoogte [m+NAP]", breakWaterHeightProperty.DisplayName); + Assert.AreEqual("De hoogte van de dam [m+NAP].", breakWaterHeightProperty.Description); + mockRepository.VerifyAll(); + } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsInputContextForeshorePropertiesTest.cs =================================================================== diff -u -r7461afe37bcf85d746168f3fde0ca01947ec888e -rc2613a5d4c948a900a0d84ce1a4e57def8daade5 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsInputContextForeshorePropertiesTest.cs (.../GrassCoverErosionInwardsInputContextForeshorePropertiesTest.cs) (revision 7461afe37bcf85d746168f3fde0ca01947ec888e) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsInputContextForeshorePropertiesTest.cs (.../GrassCoverErosionInwardsInputContextForeshorePropertiesTest.cs) (revision c2613a5d4c948a900a0d84ce1a4e57def8daade5) @@ -144,20 +144,23 @@ } [Test] - public void PropertyAttributes_ReturnExpectedValues() + public void PropertyAttributes_SetInputInstanceWithDikeProfile_ReturnExpectedValues() { // Setup var assessmentSectionMock = mockRepository.StrictMock(); - var failureMechanismMock = mockRepository.StrictMock(); - var calculationMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); - var input = new GrassCoverErosionInwardsInput(); + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + var calculation = new GrassCoverErosionInwardsCalculation(); + var input = new GrassCoverErosionInwardsInput + { + DikeProfile = new DikeProfile(new Point2D(0, 0)) + }; // Call var properties = new GrassCoverErosionInwardsInputContextForeshoreProperties { - Data = new GrassCoverErosionInwardsInputContext(input, calculationMock, failureMechanismMock, assessmentSectionMock) + Data = new GrassCoverErosionInwardsInputContext(input, calculation, failureMechanism, assessmentSectionMock) }; // Assert @@ -180,6 +183,43 @@ mockRepository.VerifyAll(); } + [Test] + public void PropertyAttributes_SetInputInstanceWithoutDikeProfile_ReturnExpectedValues() + { + // Setup + var assessmentSectionMock = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + var calculation = new GrassCoverErosionInwardsCalculation(); + var input = new GrassCoverErosionInwardsInput(); + + // Call + var properties = new GrassCoverErosionInwardsInputContextForeshoreProperties + { + Data = new GrassCoverErosionInwardsInputContext(input, calculation, failureMechanism, assessmentSectionMock) + }; + + // Assert + var dynamicPropertyBag = new DynamicPropertyBag(properties); + PropertyDescriptorCollection dynamicProperties = dynamicPropertyBag.GetProperties(); + Assert.AreEqual(3, dynamicProperties.Count); + + PropertyDescriptor useForeshoreProperty = dynamicProperties[useForeshorePropertyIndex]; + Assert.IsNotNull(useForeshoreProperty); + Assert.IsTrue(useForeshoreProperty.IsReadOnly); + Assert.AreEqual("Gebruik", useForeshoreProperty.DisplayName); + Assert.AreEqual("Moet het voorland worden gebruikt tijdens de berekening?", useForeshoreProperty.Description); + + PropertyDescriptor coordinatesProperty = dynamicProperties[coordinatesPropertyIndex]; + Assert.IsNotNull(coordinatesProperty); + Assert.IsTrue(coordinatesProperty.IsReadOnly); + Assert.AreEqual("Coördinaten [m]", coordinatesProperty.DisplayName); + Assert.AreEqual("Lijst met punten in lokale coördinaten.", coordinatesProperty.Description); + + mockRepository.VerifyAll(); + } + private const int useForeshorePropertyIndex = 0; private const int coordinatesPropertyIndex = 1; }