Index: Riskeer/Common/src/Riskeer.Common.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -r26f427a7724ebe6e50c0d83fd87156df30f17e9c -r26a31ade853688c62aa90aad3d3cb1ee0881fcfb --- Riskeer/Common/src/Riskeer.Common.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 26f427a7724ebe6e50c0d83fd87156df30f17e9c) +++ Riskeer/Common/src/Riskeer.Common.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 26a31ade853688c62aa90aad3d3cb1ee0881fcfb) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2021. All rights reserved. +// Copyright (C) Stichting Deltares 2021. All rights reserved. // // This file is part of Riskeer. // @@ -2088,6 +2088,15 @@ } /// + /// Looks up a localized string similar to <afgeleid>. + /// + public static string FailureMechanismSectionResultRow_Derived_DisplayName { + get { + return ResourceManager.GetString("FailureMechanismSectionResultRow_Derived_DisplayName", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Vakindeling waarmee de waterkering voor dit toetsspoor is geschematiseerd ten behoeve van de beoordeling.. /// public static string FailureMechanismSections_Description { Index: Riskeer/Common/src/Riskeer.Common.Forms/Properties/Resources.resx =================================================================== diff -u -r26f427a7724ebe6e50c0d83fd87156df30f17e9c -r26a31ade853688c62aa90aad3d3cb1ee0881fcfb --- Riskeer/Common/src/Riskeer.Common.Forms/Properties/Resources.resx (.../Resources.resx) (revision 26f427a7724ebe6e50c0d83fd87156df30f17e9c) +++ Riskeer/Common/src/Riskeer.Common.Forms/Properties/Resources.resx (.../Resources.resx) (revision 26a31ade853688c62aa90aad3d3cb1ee0881fcfb) @@ -59,7 +59,8 @@ : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> - @@ -1739,4 +1740,7 @@ Geeft aan of het lengte-effect binnen een vak toegepast wordt. + + <afgeleid> + \ No newline at end of file Index: Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismSectionResultRow.cs =================================================================== diff -u -r74d2c13d32f629e5055a9f490970ad1e38bc68d8 -r26a31ade853688c62aa90aad3d3cb1ee0881fcfb --- Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismSectionResultRow.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRow.cs) (revision 74d2c13d32f629e5055a9f490970ad1e38bc68d8) +++ Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismSectionResultRow.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRow.cs) (revision 26a31ade853688c62aa90aad3d3cb1ee0881fcfb) @@ -20,8 +20,14 @@ // All rights reserved. using System; +using System.Collections.Generic; +using System.ComponentModel; +using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Data.Probability; +using Riskeer.Common.Forms.TypeConverters; using Riskeer.Common.Forms.Views; using Riskeer.MacroStabilityInwards.Data; +using CommonFormsResources = Riskeer.Common.Forms.Properties.Resources; namespace Riskeer.MacroStabilityInwards.Forms.Views { @@ -30,18 +36,159 @@ /// public class MacroStabilityInwardsFailureMechanismSectionResultRow : FailureMechanismSectionResultRow { + private readonly IEnumerable calculationScenarios; + private readonly MacroStabilityInwardsFailureMechanism failureMechanism; + /// /// Creates a new instance of . /// /// The that is /// the source of this row. + /// All calculation scenarios in the failure mechanism. + /// The failure mechanism the section result belongs to. /// Throw when any parameter is null. - public MacroStabilityInwardsFailureMechanismSectionResultRow(MacroStabilityInwardsFailureMechanismSectionResult sectionResult) - : base(sectionResult) {} + public MacroStabilityInwardsFailureMechanismSectionResultRow(MacroStabilityInwardsFailureMechanismSectionResult sectionResult, + IEnumerable calculationScenarios, + MacroStabilityInwardsFailureMechanism failureMechanism) + : base(sectionResult) + { + if (calculationScenarios == null) + { + throw new ArgumentNullException(nameof(calculationScenarios)); + } + if (failureMechanism == null) + { + throw new ArgumentNullException(nameof(failureMechanism)); + } + + this.calculationScenarios = calculationScenarios; + this.failureMechanism = failureMechanism; + } + + /// + /// Gets or sets whether the section is relevant. + /// + public bool IsRelevant + { + get => SectionResult.IsRelevant; + set + { + SectionResult.IsRelevant = value; + UpdateInternalData(); + } + } + + /// + /// Gets or sets the initial failure mechanism result. + /// + public InitialFailureMechanismResultType InitialFailureMechanismResult + { + get => SectionResult.InitialFailureMechanismResult; + set + { + SectionResult.InitialFailureMechanismResult = value; + UpdateInternalData(); + } + } + + /// + /// Gets or sets the value of the initial failure mechanism result per profile as a probability. + /// + /// Thrown when is not in range [0,1]. + [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] + public double InitialFailureMechanismResultProfileProbability + { + get => SectionResult.InitialFailureMechanismResult == InitialFailureMechanismResultType.Adopt + ? SectionResult.GetInitialFailureMechanismResultProbability(calculationScenarios, failureMechanism.GeneralInput.ModelFactor) + : SectionResult.ManualInitialFailureMechanismResultProfileProbability; + set + { + SectionResult.ManualInitialFailureMechanismResultProfileProbability = value; + UpdateInternalData(); + } + } + + /// + /// Gets or sets the value of the initial failure mechanism result per failure mechanism section as a probability. + /// + /// Thrown when is not in range [0,1]. + [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] + public double InitialFailureMechanismResultSectionProbability + { + get => SectionResult.InitialFailureMechanismResult == InitialFailureMechanismResultType.Adopt + ? SectionResult.GetInitialFailureMechanismResultProbability(calculationScenarios, failureMechanism.GeneralInput.ModelFactor) + * failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput.GetN(SectionResult.Section.Length) + : SectionResult.ManualInitialFailureMechanismResultSectionProbability; + set + { + SectionResult.ManualInitialFailureMechanismResultSectionProbability = value; + UpdateInternalData(); + } + } + + /// + /// Gets or sets whether further analysis is needed. + /// + public bool FurtherAnalysisNeeded + { + get => SectionResult.FurtherAnalysisNeeded; + set + { + SectionResult.FurtherAnalysisNeeded = value; + UpdateInternalData(); + } + } + + /// + /// Gets or sets the probability refinement type. + /// + public ProbabilityRefinementType ProbabilityRefinementType + { + get => SectionResult.ProbabilityRefinementType; + set + { + SectionResult.ProbabilityRefinementType = value; + UpdateInternalData(); + } + } + + /// + /// Gets or sets the value of the refined probability per profile. + /// + /// Thrown when is not in range [0,1]. + [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] + public object RefinedProfileProbability + { + get => ProbabilityRefinementType == ProbabilityRefinementType.Section + ? (object) CommonFormsResources.FailureMechanismSectionResultRow_Derived_DisplayName + : SectionResult.RefinedProfileProbability; + set + { + SectionResult.RefinedProfileProbability = (double) value; + UpdateInternalData(); + } + } + + /// + /// Gets or sets the value of the refined probability per failure mechanism section. + /// + /// Thrown when is not in range [0,1].\ + [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] + public object RefinedSectionProbability + { + get => ProbabilityRefinementType == ProbabilityRefinementType.Profile + ? (object) CommonFormsResources.FailureMechanismSectionResultRow_Derived_DisplayName + : SectionResult.RefinedSectionProbability; + set + { + SectionResult.RefinedSectionProbability = (double) value; + UpdateInternalData(); + } + } + public override void Update() { - throw new NotImplementedException(); } } } \ No newline at end of file Index: Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs =================================================================== diff -u -r74d2c13d32f629e5055a9f490970ad1e38bc68d8 -r26a31ade853688c62aa90aad3d3cb1ee0881fcfb --- Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs) (revision 74d2c13d32f629e5055a9f490970ad1e38bc68d8) +++ Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs) (revision 26a31ade853688c62aa90aad3d3cb1ee0881fcfb) @@ -19,12 +19,21 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; +using System.Collections.Generic; +using System.Linq; +using Core.Common.Base; +using Core.Common.TestUtil; using NUnit.Framework; +using Rhino.Mocks; using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators; using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Data.Probability; using Riskeer.Common.Data.TestUtil; +using Riskeer.Common.Forms.TypeConverters; using Riskeer.Common.Forms.Views; using Riskeer.MacroStabilityInwards.Data; +using Riskeer.MacroStabilityInwards.Data.TestUtil; using Riskeer.MacroStabilityInwards.Forms.Views; namespace Riskeer.MacroStabilityInwards.Forms.Test.Views @@ -33,20 +42,262 @@ public class MacroStabilityInwardsFailureMechanismSectionResultRowTest { [Test] - public void Constructor_ExpectedValues() + public void Constructor_CalculationScenariosNull_ThrowsArgumentNullException() { // Setup FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); + // Call + void Call() => new MacroStabilityInwardsFailureMechanismSectionResultRow(result, null, new MacroStabilityInwardsFailureMechanism()); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("calculationScenarios", exception.ParamName); + } + + [Test] + public void Constructor_FailureMechanismNull_ThrowsArgumentNullException() + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); + + // Call + void Call() => new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), null); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("failureMechanism", exception.ParamName); + } + + [Test] + public void Constructor_ExpectedValues() + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new MacroStabilityInwardsFailureMechanismSectionResult(section) + { + ProbabilityRefinementType = ProbabilityRefinementType.Both + }; + + MacroStabilityInwardsCalculationScenario[] calculationScenarios = + { + MacroStabilityInwardsCalculationScenarioTestFactory.CreateMacroStabilityInwardsCalculationScenario(section) + }; + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + using (new AssemblyToolCalculatorFactoryConfig()) { // Call - var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result); + var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, calculationScenarios, failureMechanism); // Assert + double initialFailureMechanismResultProbability = result.GetInitialFailureMechanismResultProbability( + calculationScenarios, failureMechanism.GeneralInput.ModelFactor); + Assert.IsInstanceOf>(row); + Assert.AreEqual(result.IsRelevant, row.IsRelevant); + Assert.AreEqual(result.InitialFailureMechanismResult, row.InitialFailureMechanismResult); + Assert.AreEqual(initialFailureMechanismResultProbability, row.InitialFailureMechanismResultProfileProbability); + Assert.AreEqual(initialFailureMechanismResultProbability * failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput.GetN(section.Length), + row.InitialFailureMechanismResultSectionProbability); + Assert.AreEqual(result.FurtherAnalysisNeeded, row.FurtherAnalysisNeeded); + Assert.AreEqual(result.ProbabilityRefinementType, row.ProbabilityRefinementType); + Assert.AreEqual(result.RefinedProfileProbability, row.RefinedProfileProbability); + Assert.AreEqual(result.RefinedSectionProbability, row.RefinedSectionProbability); + + TestHelper.AssertTypeConverter( + nameof(MacroStabilityInwardsFailureMechanismSectionResultRow.InitialFailureMechanismResultProfileProbability)); + TestHelper.AssertTypeConverter( + nameof(MacroStabilityInwardsFailureMechanismSectionResultRow.InitialFailureMechanismResultSectionProbability)); + TestHelper.AssertTypeConverter( + nameof(MacroStabilityInwardsFailureMechanismSectionResultRow.RefinedProfileProbability)); + TestHelper.AssertTypeConverter( + nameof(MacroStabilityInwardsFailureMechanismSectionResultRow.RefinedSectionProbability)); } } + + #region Registration + + [Test] + public void IsRelevant_SetNewValue_NotifyObserversAndPropertyChanged() + { + const bool newValue = false; + Property_SetNewValue_NotifyObserversAndPropertyChanged( + row => row.IsRelevant = newValue, + result => result.IsRelevant, + newValue); + } + + [Test] + public void InitialFailureMechanismResult_SetNewValue_NotifyObserversAndPropertyChanged() + { + const InitialFailureMechanismResultType newValue = InitialFailureMechanismResultType.NoFailureProbability; + Property_SetNewValue_NotifyObserversAndPropertyChanged( + row => row.InitialFailureMechanismResult = newValue, + result => result.InitialFailureMechanismResult, + newValue); + } + + [Test] + [TestCaseSource(nameof(GetValidProbabilities))] + public void InitialFailureMechanismResultProfileProbability_SetNewValue_NotifyObserversAndPropertyChanged(double newValue) + { + Property_SetNewValue_NotifyObserversAndPropertyChanged( + row => row.InitialFailureMechanismResultProfileProbability = newValue, + result => result.ManualInitialFailureMechanismResultProfileProbability, + newValue); + } + + [Test] + [SetCulture("nl-NL")] + [TestCaseSource(nameof(GetInvalidProbabilities))] + public void InitialFailureMechanismResultProfileProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double value) + { + ProbabilityProperty_SetInvalidValue_ThrowsArgumentOutOfRangeException(row => row.InitialFailureMechanismResultProfileProbability = value); + } + + [Test] + [TestCaseSource(nameof(GetValidProbabilities))] + public void InitialFailureMechanismResultSectionProbability_SetNewValue_NotifyObserversAndPropertyChanged(double newValue) + { + Property_SetNewValue_NotifyObserversAndPropertyChanged( + row => row.InitialFailureMechanismResultSectionProbability = newValue, + result => result.ManualInitialFailureMechanismResultSectionProbability, + newValue); + } + + [Test] + [SetCulture("nl-NL")] + [TestCaseSource(nameof(GetInvalidProbabilities))] + public void InitialFailureMechanismResultSectionProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double value) + { + ProbabilityProperty_SetInvalidValue_ThrowsArgumentOutOfRangeException(row => row.InitialFailureMechanismResultSectionProbability = value); + } + + [Test] + public void FurtherAnalysisNeeded_SetNewValue_NotifyObserversAndPropertyChanged() + { + const bool newValue = true; + Property_SetNewValue_NotifyObserversAndPropertyChanged( + row => row.FurtherAnalysisNeeded = newValue, + result => result.FurtherAnalysisNeeded, + newValue); + } + + [Test] + public void ProbabilityRefinementType_SetNewValue_NotifyObserversAndPropertyChanged() + { + const ProbabilityRefinementType newValue = ProbabilityRefinementType.Both; + Property_SetNewValue_NotifyObserversAndPropertyChanged( + row => row.ProbabilityRefinementType = newValue, + result => result.ProbabilityRefinementType, + newValue); + } + + [Test] + [TestCaseSource(nameof(GetValidProbabilities))] + public void RefinedProfileProbability_SetNewValue_NotifyObserversAndPropertyChanged(double newValue) + { + Property_SetNewValue_NotifyObserversAndPropertyChanged( + row => row.RefinedProfileProbability = newValue, + result => result.RefinedProfileProbability, + newValue); + } + + [Test] + [SetCulture("nl-NL")] + [TestCaseSource(nameof(GetInvalidProbabilities))] + public void RefinedProfileProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double value) + { + ProbabilityProperty_SetInvalidValue_ThrowsArgumentOutOfRangeException(row => row.RefinedProfileProbability = value); + } + + [Test] + [TestCaseSource(nameof(GetValidProbabilities))] + public void RefinedSectionProbability_SetNewValue_NotifyObserversAndPropertyChanged(double newValue) + { + Property_SetNewValue_NotifyObserversAndPropertyChanged( + row => row.RefinedSectionProbability = newValue, + result => result.RefinedSectionProbability, + newValue); + } + + [Test] + [SetCulture("nl-NL")] + [TestCaseSource(nameof(GetInvalidProbabilities))] + public void RefinedSectionProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double value) + { + ProbabilityProperty_SetInvalidValue_ThrowsArgumentOutOfRangeException(row => row.RefinedSectionProbability = value); + } + + private static void Property_SetNewValue_NotifyObserversAndPropertyChanged( + Action setPropertyAction, + Func assertPropertyFunc, + T newValue) + { + // Setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + observer.Expect(o => o.UpdateObserver()); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); + result.Attach(observer); + + using (new AssemblyToolCalculatorFactoryConfig()) + { + var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), new MacroStabilityInwardsFailureMechanism()); + + // Call + setPropertyAction(row); + + // Assert + Assert.AreEqual(newValue, assertPropertyFunc(result)); + } + + mocks.VerifyAll(); + } + + private static void ProbabilityProperty_SetInvalidValue_ThrowsArgumentOutOfRangeException( + Action setPropertyAction) + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); + + using (new AssemblyToolCalculatorFactoryConfig()) + { + var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), new MacroStabilityInwardsFailureMechanism()); + + // Call + void Call() => setPropertyAction(row); + + // Assert + const string expectedMessage = "De waarde voor de faalkans moet in het bereik [0,0, 1,0] liggen."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(Call, expectedMessage); + } + } + + private static IEnumerable GetValidProbabilities() + { + yield return new TestCaseData(0); + yield return new TestCaseData(1); + yield return new TestCaseData(0.5); + yield return new TestCaseData(1e-6); + yield return new TestCaseData(double.NaN); + } + + private static IEnumerable GetInvalidProbabilities() + { + yield return new TestCaseData(-20); + yield return new TestCaseData(-1e-6); + yield return new TestCaseData(1 + 1e-6); + yield return new TestCaseData(12); + } + + #endregion } } \ No newline at end of file Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -rd8d2078ad473eaa98aa8f8d0860ff4a9a0670664 -r26a31ade853688c62aa90aad3d3cb1ee0881fcfb --- Riskeer/Piping/src/Riskeer.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision d8d2078ad473eaa98aa8f8d0860ff4a9a0670664) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 26a31ade853688c62aa90aad3d3cb1ee0881fcfb) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2021. All rights reserved. +// Copyright (C) Stichting Deltares 2021. All rights reserved. // // This file is part of Riskeer. // @@ -387,15 +387,6 @@ } /// - /// Looks up a localized string similar to <afgeleid>. - /// - public static string PipingFailureMechanismSectionResultRow_Derived_DisplayName { - get { - return ResourceManager.GetString("PipingFailureMechanismSectionResultRow_Derived_DisplayName", resourceCulture); - } - } - - /// /// Looks up a localized string similar to Dempingsfactor relateert respons van stijghoogte bij binnenteen aan buitenwaterstand.. /// public static string PipingInput_DampingFactorExit_Description { Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Properties/Resources.resx =================================================================== diff -u -rd8d2078ad473eaa98aa8f8d0860ff4a9a0670664 -r26a31ade853688c62aa90aad3d3cb1ee0881fcfb --- Riskeer/Piping/src/Riskeer.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision d8d2078ad473eaa98aa8f8d0860ff4a9a0670664) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision 26a31ade853688c62aa90aad3d3cb1ee0881fcfb) @@ -528,7 +528,4 @@ Type toets: - - <afgeleid> - \ No newline at end of file Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs =================================================================== diff -u -r5c4a6ebf810153f46422f536305920b3ce360922 -r26a31ade853688c62aa90aad3d3cb1ee0881fcfb --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision 5c4a6ebf810153f46422f536305920b3ce360922) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision 26a31ade853688c62aa90aad3d3cb1ee0881fcfb) @@ -32,7 +32,7 @@ using Riskeer.Common.Forms.TypeConverters; using Riskeer.Common.Forms.Views; using Riskeer.Piping.Data; -using Riskeer.Piping.Forms.Properties; +using CommonFormsResources = Riskeer.Common.Forms.Properties.Resources; namespace Riskeer.Piping.Forms.Views { @@ -220,7 +220,7 @@ public object RefinedProfileProbability { get => ProbabilityRefinementType == ProbabilityRefinementType.Section - ? (object) Resources.PipingFailureMechanismSectionResultRow_Derived_DisplayName + ? (object) CommonFormsResources.FailureMechanismSectionResultRow_Derived_DisplayName : SectionResult.RefinedProfileProbability; set { @@ -237,7 +237,7 @@ public object RefinedSectionProbability { get => ProbabilityRefinementType == ProbabilityRefinementType.Profile - ? (object) Resources.PipingFailureMechanismSectionResultRow_Derived_DisplayName + ? (object) CommonFormsResources.FailureMechanismSectionResultRow_Derived_DisplayName : SectionResult.RefinedSectionProbability; set {