Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs =================================================================== diff -u -rae221df798313584619c15c5504d1d19c7bfdcba -r65d1333335d29e7cc91e360a91805ff7a304aa5a --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision ae221df798313584619c15c5504d1d19c7bfdcba) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision 65d1333335d29e7cc91e360a91805ff7a304aa5a) @@ -21,7 +21,9 @@ using System; using System.ComponentModel; +using Core.Common.Controls.DataGrid; using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Forms.Helpers; using Riskeer.Common.Forms.TypeConverters; using Riskeer.Common.Forms.Views; using Riskeer.Piping.Data; @@ -76,8 +78,23 @@ probabilityRefinementTypeIndex = constructionProperties.ProbabilityRefinementTypeIndex; refinedProfileProbabilityIndex = constructionProperties.RefinedProfileProbabilityIndex; refinedSectionProbabilityIndex = constructionProperties.RefinedSectionProbabilityIndex; + + CreateColumnStateDefinitions(); + + Update(); } + private void CreateColumnStateDefinitions() + { + ColumnStateDefinitions.Add(initialFailureMechanismResultIndex, new DataGridViewColumnStateDefinition()); + ColumnStateDefinitions.Add(initialFailureMechanismResultProfileProbabilityIndex, new DataGridViewColumnStateDefinition()); + ColumnStateDefinitions.Add(initialFailureMechanismResultSectionProbabilityIndex, new DataGridViewColumnStateDefinition()); + ColumnStateDefinitions.Add(furtherAnalysisNeededIndex, new DataGridViewColumnStateDefinition()); + ColumnStateDefinitions.Add(probabilityRefinementTypeIndex, new DataGridViewColumnStateDefinition()); + ColumnStateDefinitions.Add(refinedProfileProbabilityIndex, new DataGridViewColumnStateDefinition()); + ColumnStateDefinitions.Add(refinedSectionProbabilityIndex, new DataGridViewColumnStateDefinition()); + } + /// /// Gets or sets whether the section is relevant. /// @@ -194,8 +211,27 @@ } } - public override void Update() {} + public override void Update() + { + UpdateColumnStateDefinitions(); + } + private void UpdateColumnStateDefinitions() + { + bool initialFailureMechanismResultNoFailureProbability = InitialFailureMechanismResult == InitialFailureMechanismResultType.NoFailureProbability; + + ColumnStateHelper.SetColumnState(ColumnStateDefinitions[initialFailureMechanismResultIndex], !IsRelevant); + ColumnStateHelper.SetColumnState(ColumnStateDefinitions[initialFailureMechanismResultProfileProbabilityIndex], + !IsRelevant || initialFailureMechanismResultNoFailureProbability); + + ColumnStateHelper.SetColumnState(ColumnStateDefinitions[initialFailureMechanismResultSectionProbabilityIndex], + !IsRelevant || initialFailureMechanismResultNoFailureProbability); + ColumnStateHelper.SetColumnState(ColumnStateDefinitions[furtherAnalysisNeededIndex], !IsRelevant); + ColumnStateHelper.SetColumnState(ColumnStateDefinitions[probabilityRefinementTypeIndex], !IsRelevant || !FurtherAnalysisNeeded); + ColumnStateHelper.SetColumnState(ColumnStateDefinitions[refinedProfileProbabilityIndex], !IsRelevant || !FurtherAnalysisNeeded); + ColumnStateHelper.SetColumnState(ColumnStateDefinitions[refinedSectionProbabilityIndex], !IsRelevant || !FurtherAnalysisNeeded); + } + /// /// Class holding the various construction parameters for . /// Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs =================================================================== diff -u -rae221df798313584619c15c5504d1d19c7bfdcba -r65d1333335d29e7cc91e360a91805ff7a304aa5a --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs (.../PipingFailureMechanismSectionResultRowTest.cs) (revision ae221df798313584619c15c5504d1d19c7bfdcba) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs (.../PipingFailureMechanismSectionResultRowTest.cs) (revision 65d1333335d29e7cc91e360a91805ff7a304aa5a) @@ -22,11 +22,13 @@ using System; using System.Collections.Generic; using Core.Common.Base; +using Core.Common.Controls.DataGrid; using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.TestUtil; +using Riskeer.Common.Forms.TestUtil; using Riskeer.Common.Forms.TypeConverters; using Riskeer.Common.Forms.Views; using Riskeer.Piping.Data; @@ -37,6 +39,18 @@ [TestFixture] public class PipingFailureMechanismSectionResultRowTest { + private static PipingFailureMechanismSectionResultRow.ConstructionProperties ConstructionProperties => + new PipingFailureMechanismSectionResultRow.ConstructionProperties + { + InitialFailureMechanismResultIndex = 2, + InitialFailureMechanismResultProfileProbabilityIndex = 3, + InitialFailureMechanismResultSectionProbabilityIndex = 4, + FurtherAnalysisNeededIndex = 5, + ProbabilityRefinementTypeIndex = 6, + RefinedProfileProbabilityIndex = 7, + RefinedSectionProbabilityIndex = 8 + }; + [Test] public void Constructor_CalculateProbabilityStrategyNull_ThrowsArgumentNullException() { @@ -45,7 +59,7 @@ var result = new PipingFailureMechanismSectionResult(section); // Call - void Call() => new PipingFailureMechanismSectionResultRow(result, null, new PipingFailureMechanismSectionResultRow.ConstructionProperties()); + void Call() => new PipingFailureMechanismSectionResultRow(result, null, ConstructionProperties); // Assert var exception = Assert.Throws(Call); @@ -89,7 +103,7 @@ var result = new PipingFailureMechanismSectionResult(section); // Call - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanismSectionResultRow.ConstructionProperties()); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); // Assert Assert.IsInstanceOf>(row); @@ -110,6 +124,17 @@ nameof(PipingFailureMechanismSectionResultRow.RefinedProfileProbability)); TestHelper.AssertTypeConverter( nameof(PipingFailureMechanismSectionResultRow.RefinedSectionProbability)); + + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + Assert.AreEqual(7, columnStateDefinitions.Count); + + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.InitialFailureMechanismResultIndex); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.InitialFailureMechanismResultProfileProbabilityIndex); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.FurtherAnalysisNeededIndex); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.ProbabilityRefinementTypeIndex); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.RefinedProfileProbabilityIndex); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.RefinedSectionProbabilityIndex); mocks.VerifyAll(); } @@ -131,7 +156,7 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new PipingFailureMechanismSectionResult(section); - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanismSectionResultRow.ConstructionProperties()); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); // Precondition Assert.AreEqual(profileProbability, row.InitialFailureMechanismResultProfileProbability); @@ -276,7 +301,7 @@ var result = new PipingFailureMechanismSectionResult(section); result.Attach(observer); - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanismSectionResultRow.ConstructionProperties()); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); // Call setPropertyAction(row); @@ -297,7 +322,7 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new PipingFailureMechanismSectionResult(section); - var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, new PipingFailureMechanismSectionResultRow.ConstructionProperties()); + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); // Call void Call() => setPropertyAction(row); @@ -326,5 +351,114 @@ } #endregion + + #region Column States + + [Test] + [TestCase(true)] + [TestCase(false)] + public void Constructor_WithIsRelevant_ExpectedColumnStates(bool isRelevant) + { + // Setup + var mocks = new MockRepository(); + var calculateStrategy = mocks.Stub(); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new PipingFailureMechanismSectionResult(section) + { + IsRelevant = isRelevant, + FurtherAnalysisNeeded = true + }; + + // Call + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + + // Assert + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultIndex], isRelevant); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultProfileProbabilityIndex], isRelevant); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex], isRelevant); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.FurtherAnalysisNeededIndex], isRelevant); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.ProbabilityRefinementTypeIndex], isRelevant); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.RefinedProfileProbabilityIndex], isRelevant); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex], isRelevant); + + mocks.VerifyAll(); + } + + [Test] + [TestCase(InitialFailureMechanismResultType.Adopt, true)] + [TestCase(InitialFailureMechanismResultType.Manual, true)] + [TestCase(InitialFailureMechanismResultType.NoFailureProbability, false)] + public void Constructor_WithInitialFailureMechanismResult_ExpectedColumnStates(InitialFailureMechanismResultType initialFailureMechanismResultType, + bool isEnabled) + { + // Setup + var mocks = new MockRepository(); + var calculateStrategy = mocks.Stub(); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new PipingFailureMechanismSectionResult(section) + { + InitialFailureMechanismResult = initialFailureMechanismResultType + }; + + // Call + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + + // Assert + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultProfileProbabilityIndex], isEnabled); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex], isEnabled); + + mocks.VerifyAll(); + } + + [Test] + [TestCase(true)] + [TestCase(false)] + public void Constructor_WithFurtherAnalysisNeeded_ExpectedColumnStates(bool furtherAnalysisNeeded) + { + // Setup + var mocks = new MockRepository(); + var calculateStrategy = mocks.Stub(); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new PipingFailureMechanismSectionResult(section) + { + FurtherAnalysisNeeded = furtherAnalysisNeeded + }; + + // Call + var row = new PipingFailureMechanismSectionResultRow(result, calculateStrategy, ConstructionProperties); + + // Assert + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.ProbabilityRefinementTypeIndex], furtherAnalysisNeeded); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.RefinedProfileProbabilityIndex], furtherAnalysisNeeded); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex], furtherAnalysisNeeded); + + mocks.VerifyAll(); + } + + #endregion } } \ No newline at end of file