Index: Riskeer/WaveImpactAsphaltCover/src/Riskeer.WaveImpactAsphaltCover.Forms/PropertyClasses/WaveImpactAsphaltCoverFailurePathProperties.cs =================================================================== diff -u -r4075241549b94454a6ad23fc355c69be49aecc17 -r80a9bf12d4c27c4d686f68722f53197339c44787 --- Riskeer/WaveImpactAsphaltCover/src/Riskeer.WaveImpactAsphaltCover.Forms/PropertyClasses/WaveImpactAsphaltCoverFailurePathProperties.cs (.../WaveImpactAsphaltCoverFailurePathProperties.cs) (revision 4075241549b94454a6ad23fc355c69be49aecc17) +++ Riskeer/WaveImpactAsphaltCover/src/Riskeer.WaveImpactAsphaltCover.Forms/PropertyClasses/WaveImpactAsphaltCoverFailurePathProperties.cs (.../WaveImpactAsphaltCoverFailurePathProperties.cs) (revision 80a9bf12d4c27c4d686f68722f53197339c44787) @@ -44,6 +44,7 @@ private const int sectionLengthPropertyIndex = 6; private const int deltaLPropertyIndex = 7; private const int nPropertyIndex = 8; + private const int applyLengthEffectInSectionPropertyIndex = 9; private readonly IAssessmentSection assessmentSection; /// @@ -78,7 +79,8 @@ return nameof(Contribution).Equals(propertyName) || nameof(DeltaL).Equals(propertyName) || nameof(SectionLength).Equals(propertyName) - || nameof(N).Equals(propertyName); + || nameof(N).Equals(propertyName) + || nameof(ApplyLengthEffectInSection).Equals(propertyName); } #region General @@ -168,6 +170,24 @@ } } + [DynamicVisible] + [PropertyOrder(applyLengthEffectInSectionPropertyIndex)] + [ResourcesCategory(typeof(RiskeerCommonFormsResources), nameof(RiskeerCommonFormsResources.Categories_LengthEffect))] + [ResourcesDisplayName(typeof(RiskeerCommonFormsResources), nameof(RiskeerCommonFormsResources.FailurePath_Apply_LengthEffect_In_Section_DisplayName))] + [ResourcesDescription(typeof(RiskeerCommonFormsResources), nameof(RiskeerCommonFormsResources.FailurePath_Apply_LengthEffect_In_Section_Description))] + public bool ApplyLengthEffectInSection + { + get + { + return data.GeneralWaveImpactAsphaltCoverInput.ApplyLengthEffectInSection; + } + set + { + data.GeneralWaveImpactAsphaltCoverInput.ApplyLengthEffectInSection = value; + data.NotifyObservers(); + } + } + #endregion } } \ No newline at end of file Index: Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Forms.Test/PropertyClasses/WaveImpactAsphaltCoverFailurePathPropertiesTest.cs =================================================================== diff -u -rfdfcebfac58179f6b1d1e19d376342f82eaaffcd -r80a9bf12d4c27c4d686f68722f53197339c44787 --- Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Forms.Test/PropertyClasses/WaveImpactAsphaltCoverFailurePathPropertiesTest.cs (.../WaveImpactAsphaltCoverFailurePathPropertiesTest.cs) (revision fdfcebfac58179f6b1d1e19d376342f82eaaffcd) +++ Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Forms.Test/PropertyClasses/WaveImpactAsphaltCoverFailurePathPropertiesTest.cs (.../WaveImpactAsphaltCoverFailurePathPropertiesTest.cs) (revision 80a9bf12d4c27c4d686f68722f53197339c44787) @@ -45,20 +45,8 @@ private const int sectionLengthPropertyIndex = 5; private const int deltaLPropertyIndex = 6; private const int nPropertyIndex = 7; - private MockRepository mocks; + private const int applyLengthEffectInSectionPropertyIndex = 8; - [SetUp] - public void SetUp() - { - mocks = new MockRepository(); - } - - [TearDown] - public void TearDown() - { - mocks.VerifyAll(); - } - [Test] public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException() { @@ -74,14 +62,19 @@ public void Constructor_ExpectedValues() { // Setup + var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); assessmentSection.Stub(a => a.ReferenceLine).Return(new ReferenceLine()); mocks.ReplayAll(); var random = new Random(21); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism { - InAssembly = random.NextBoolean() + InAssembly = random.NextBoolean(), + GeneralWaveImpactAsphaltCoverInput = + { + ApplyLengthEffectInSection = random.NextBoolean() + } }; // Call @@ -111,12 +104,16 @@ Assert.AreEqual(generalWaveImpactAsphaltCoverInput.GetN(assessmentSection.ReferenceLine.Length), properties.N, properties.N.GetAccuracy()); + Assert.AreEqual(generalWaveImpactAsphaltCoverInput.ApplyLengthEffectInSection, properties.ApplyLengthEffectInSection); + + mocks.VerifyAll(); } [Test] public void Constructor_InAssemblyTrue_PropertiesHaveExpectedAttributesValues() { // Setup + var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); mocks.ReplayAll(); @@ -125,7 +122,7 @@ // Assert PropertyDescriptorCollection dynamicProperties = PropertiesTestHelper.GetAllVisiblePropertyDescriptors(properties); - Assert.AreEqual(8, dynamicProperties.Count); + Assert.AreEqual(9, dynamicProperties.Count); const string generalCategory = "Algemeen"; const string lengthEffectCategory = "Lengte-effect"; @@ -185,12 +182,21 @@ "De parameter 'N' die gebruikt wordt om het lengte-effect " + "mee te nemen in de beoordeling (afgerond).", true); + + PropertyDescriptor applySectionLengthInSectionProperty = dynamicProperties[applyLengthEffectInSectionPropertyIndex]; + PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(applySectionLengthInSectionProperty, + lengthEffectCategory, + "Toepassen lengte-effect binnen vak", + "Geeft aan of het lengte-effect binnen een vak toegepast wordt."); + + mocks.VerifyAll(); } [Test] public void Constructor_InAssemblyFalse_PropertiesHaveExpectedAttributesValues() { // Setup + var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); mocks.ReplayAll(); @@ -235,6 +241,8 @@ "In assemblage", "Geeft aan of dit faalpad wordt meegenomen in de assemblage.", true); + + mocks.VerifyAll(); } [Test] @@ -245,6 +253,7 @@ public void DeltaL_SetInvalidValue_ThrowsArgumentOutOfRangeExceptionNoNotifications(double newN) { // Setup + var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); var observer = mocks.StrictMock(); mocks.ReplayAll(); @@ -262,6 +271,8 @@ // Assert const string expectedMessage = "De waarde voor 'ΔL' moet groter zijn dan 0."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(Call, expectedMessage); + + mocks.VerifyAll(); } [Test] @@ -271,6 +282,7 @@ public void DeltaL_SetValidValue_UpdateDataAndNotifyObservers(double newN) { // Setup + var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); var observer = mocks.StrictMock(); observer.Expect(o => o.UpdateObserver()); @@ -288,14 +300,51 @@ // Assert Assert.AreEqual(newN, failureMechanism.GeneralWaveImpactAsphaltCoverInput.DeltaL); + + mocks.VerifyAll(); } [Test] [TestCase(true)] [TestCase(false)] + public void ApplyLengthEffectInSection_SetNewValue_NotifyObservers(bool applyLengthEffectInSection) + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + var observer = mocks.StrictMock(); + observer.Expect(o => o.UpdateObserver()); + mocks.ReplayAll(); + + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism + { + GeneralWaveImpactAsphaltCoverInput = + { + ApplyLengthEffectInSection = !applyLengthEffectInSection + } + }; + + failureMechanism.Attach(observer); + + var properties = new WaveImpactAsphaltCoverFailurePathProperties(failureMechanism, assessmentSection); + + // Call + properties.ApplyLengthEffectInSection = applyLengthEffectInSection; + + // Assert + Assert.AreEqual(applyLengthEffectInSection, + failureMechanism.GeneralWaveImpactAsphaltCoverInput.ApplyLengthEffectInSection); + + mocks.VerifyAll(); + } + + [Test] + [TestCase(true)] + [TestCase(false)] public void DynamicVisibleValidationMethod_DependingOnInAssembly_ReturnExpectedVisibility(bool inAssembly) { // Setup + var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); mocks.ReplayAll(); @@ -315,8 +364,11 @@ Assert.AreEqual(inAssembly, properties.DynamicVisibleValidationMethod(nameof(properties.DeltaL))); Assert.AreEqual(inAssembly, properties.DynamicVisibleValidationMethod(nameof(properties.SectionLength))); Assert.AreEqual(inAssembly, properties.DynamicVisibleValidationMethod(nameof(properties.N))); + Assert.AreEqual(inAssembly, properties.DynamicVisibleValidationMethod(nameof(properties.ApplyLengthEffectInSection))); Assert.IsTrue(properties.DynamicVisibleValidationMethod(null)); + + mocks.VerifyAll(); } } } \ No newline at end of file