Index: Riskeer/Common/src/Riskeer.Common.Forms/Views/AdoptableFailureMechanismSectionResultRow.cs =================================================================== diff -u -rb3fe0a0deb8b40bf6a21e456445cef3f2f554ca9 -r50c99cdebe8bbc6fe3b834db74e3a3711ddf2409 --- Riskeer/Common/src/Riskeer.Common.Forms/Views/AdoptableFailureMechanismSectionResultRow.cs (.../AdoptableFailureMechanismSectionResultRow.cs) (revision b3fe0a0deb8b40bf6a21e456445cef3f2f554ca9) +++ Riskeer/Common/src/Riskeer.Common.Forms/Views/AdoptableFailureMechanismSectionResultRow.cs (.../AdoptableFailureMechanismSectionResultRow.cs) (revision 50c99cdebe8bbc6fe3b834db74e3a3711ddf2409) @@ -22,8 +22,8 @@ using System; using System.ComponentModel; using Core.Common.Controls.DataGrid; +using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; -using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Exceptions; using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Forms.Helpers; @@ -47,7 +47,7 @@ private readonly Func calculateInitialFailureMechanismResultProbabilityFunc; private readonly IFailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider failureMechanismSectionResultRowErrorProvider; - private readonly IAssessmentSection assessmentSection; + private readonly Func performAssemblyFunc; /// /// Creates a new instance of . @@ -58,14 +58,14 @@ /// to calculate the initial mechanism result probability. /// The error provider to use for /// the failure mechanism section result row. - /// The assessment section the section result belongs to. + /// Function to perform the assembly. /// The property values required to create an instance of /// . /// Throw when any parameter is null. public AdoptableFailureMechanismSectionResultRow(AdoptableFailureMechanismSectionResult sectionResult, Func calculateInitialFailureMechanismResultProbabilityFunc, IFailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider failureMechanismSectionResultRowErrorProvider, - IAssessmentSection assessmentSection, + Func performAssemblyFunc, ConstructionProperties constructionProperties) : base(sectionResult) { @@ -79,9 +79,9 @@ throw new ArgumentNullException(nameof(failureMechanismSectionResultRowErrorProvider)); } - if (assessmentSection == null) + if (performAssemblyFunc == null) { - throw new ArgumentNullException(nameof(assessmentSection)); + throw new ArgumentNullException(nameof(performAssemblyFunc)); } if (constructionProperties == null) @@ -91,7 +91,7 @@ this.calculateInitialFailureMechanismResultProbabilityFunc = calculateInitialFailureMechanismResultProbabilityFunc; this.failureMechanismSectionResultRowErrorProvider = failureMechanismSectionResultRowErrorProvider; - this.assessmentSection = assessmentSection; + this.performAssemblyFunc = performAssemblyFunc; initialFailureMechanismResultTypeIndex = constructionProperties.InitialFailureMechanismResultTypeIndex; initialFailureMechanismResultSectionProbabilityIndex = constructionProperties.InitialFailureMechanismResultSectionProbabilityIndex; @@ -241,8 +241,7 @@ { try { - AssemblyResult = FailureMechanismSectionResultAssemblyFactory.AssembleSection( - SectionResult, assessmentSection, calculateInitialFailureMechanismResultProbabilityFunc); + AssemblyResult = performAssemblyFunc(); } catch (AssemblyException e) { Index: Riskeer/Common/src/Riskeer.Common.Forms/Views/StructuresFailureMechanismResultView.cs =================================================================== diff -u -r8b2c2f2bb8fd8445a1a5388f9e63ca93d51927e1 -r50c99cdebe8bbc6fe3b834db74e3a3711ddf2409 --- Riskeer/Common/src/Riskeer.Common.Forms/Views/StructuresFailureMechanismResultView.cs (.../StructuresFailureMechanismResultView.cs) (revision 8b2c2f2bb8fd8445a1a5388f9e63ca93d51927e1) +++ Riskeer/Common/src/Riskeer.Common.Forms/Views/StructuresFailureMechanismResultView.cs (.../StructuresFailureMechanismResultView.cs) (revision 50c99cdebe8bbc6fe3b834db74e3a3711ddf2409) @@ -111,7 +111,7 @@ sectionResult, () => sectionResult.GetInitialFailureMechanismResultProbability(calculationScenarios), CreateErrorProvider(sectionResult, calculationScenarios), - assessmentSection, + () => StructuresFailureMechanismAssemblyFactory.AssembleSection(sectionResult, FailureMechanism, assessmentSection), new AdoptableFailureMechanismSectionResultRow.ConstructionProperties { InitialFailureMechanismResultTypeIndex = initialFailureMechanismResultTypeIndex, Index: Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/AdoptableFailureMechanismSectionResultRowTest.cs =================================================================== diff -u -rf877e67f378ae75a872acef95e78d4c7b2b8096d -r50c99cdebe8bbc6fe3b834db74e3a3711ddf2409 --- Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/AdoptableFailureMechanismSectionResultRowTest.cs (.../AdoptableFailureMechanismSectionResultRowTest.cs) (revision f877e67f378ae75a872acef95e78d4c7b2b8096d) +++ Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/AdoptableFailureMechanismSectionResultRowTest.cs (.../AdoptableFailureMechanismSectionResultRowTest.cs) (revision 50c99cdebe8bbc6fe3b834db74e3a3711ddf2409) @@ -28,10 +28,8 @@ using NUnit.Framework; using Rhino.Mocks; using Riskeer.AssemblyTool.Data; -using Riskeer.AssemblyTool.KernelWrapper.Calculators; -using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators; -using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators.Assembly; using Riskeer.Common.Data.AssemblyTool; +using Riskeer.Common.Data.Exceptions; using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.TestUtil; using Riskeer.Common.Data.TestUtil.Probability; @@ -66,11 +64,13 @@ var errorProvider = mocks.Stub(); mocks.ReplayAll(); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); // Call - void Call() => new AdoptableFailureMechanismSectionResultRow(result, null, errorProvider, new AssessmentSectionStub(), + void Call() => new AdoptableFailureMechanismSectionResultRow(result, null, errorProvider, performAssemblyFunc, ConstructionProperties); // Assert @@ -83,11 +83,13 @@ public void Constructor_FailureMechanismSectionResultErrorProviderNull_ThrowsArgumentNullException() { // Setup + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); // Call - void Call() => new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, null, new AssessmentSectionStub(), + void Call() => new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, null, performAssemblyFunc, ConstructionProperties); // Assert @@ -96,7 +98,7 @@ } [Test] - public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException() + public void Constructor_PerformAssemblyFuncNull_ThrowsArgumentNullException() { // Setup var mocks = new MockRepository(); @@ -112,7 +114,7 @@ // Assert var exception = Assert.Throws(Call); - Assert.AreEqual("assessmentSection", exception.ParamName); + Assert.AreEqual("performAssemblyFunc", exception.ParamName); mocks.VerifyAll(); } @@ -124,12 +126,14 @@ var errorProvider = mocks.Stub(); mocks.ReplayAll(); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); // Call void Call() => new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), null); + performAssemblyFunc, null); // Assert var exception = Assert.Throws(Call); @@ -145,42 +149,41 @@ var errorProvider = mocks.Stub(); mocks.ReplayAll(); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); double initialFailureMechanismResultProbability = new Random(21).NextDouble(); - using (new AssemblyToolCalculatorFactoryConfig()) - { - // Call - var row = new AdoptableFailureMechanismSectionResultRow(result, () => initialFailureMechanismResultProbability, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + // Call + var row = new AdoptableFailureMechanismSectionResultRow(result, () => initialFailureMechanismResultProbability, errorProvider, + performAssemblyFunc, ConstructionProperties); - // Assert - Assert.IsInstanceOf>(row); - Assert.AreEqual(result.IsRelevant, row.IsRelevant); - Assert.AreEqual(result.InitialFailureMechanismResultType, row.InitialFailureMechanismResultType); - Assert.AreEqual(initialFailureMechanismResultProbability, row.InitialFailureMechanismResultSectionProbability); - Assert.AreEqual(result.FurtherAnalysisType, row.FurtherAnalysisType); - Assert.AreEqual(result.RefinedSectionProbability, row.RefinedSectionProbability); + // Assert + Assert.IsInstanceOf>(row); + Assert.AreEqual(result.IsRelevant, row.IsRelevant); + Assert.AreEqual(result.InitialFailureMechanismResultType, row.InitialFailureMechanismResultType); + Assert.AreEqual(initialFailureMechanismResultProbability, row.InitialFailureMechanismResultSectionProbability); + Assert.AreEqual(result.FurtherAnalysisType, row.FurtherAnalysisType); + Assert.AreEqual(result.RefinedSectionProbability, row.RefinedSectionProbability); - TestHelper.AssertTypeConverter( - nameof(AdoptableFailureMechanismSectionResultRow.InitialFailureMechanismResultSectionProbability)); - TestHelper.AssertTypeConverter( - nameof(AdoptableFailureMechanismSectionResultRow.RefinedSectionProbability)); - TestHelper.AssertTypeConverter( - nameof(AdoptableFailureMechanismSectionResultRow.SectionProbability)); + TestHelper.AssertTypeConverter( + nameof(AdoptableFailureMechanismSectionResultRow.InitialFailureMechanismResultSectionProbability)); + TestHelper.AssertTypeConverter( + nameof(AdoptableFailureMechanismSectionResultRow.RefinedSectionProbability)); + TestHelper.AssertTypeConverter( + nameof(AdoptableFailureMechanismSectionResultRow.SectionProbability)); - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; - Assert.AreEqual(6, columnStateDefinitions.Count); + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + Assert.AreEqual(6, columnStateDefinitions.Count); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.InitialFailureMechanismResultTypeIndex); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.FurtherAnalysisTypeIndex); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.RefinedSectionProbabilityIndex); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.SectionProbabilityIndex); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.AssemblyGroupIndex); - } + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.InitialFailureMechanismResultTypeIndex); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.FurtherAnalysisTypeIndex); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.RefinedSectionProbabilityIndex); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.SectionProbabilityIndex); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnStateDefinition(columnStateDefinitions, ConstructionProperties.AssemblyGroupIndex); mocks.VerifyAll(); } @@ -199,22 +202,19 @@ var result = new AdoptableFailureMechanismSectionResult(section); double sectionProbability = new Random(21).NextDouble(); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; + var row = new AdoptableFailureMechanismSectionResultRow(result, () => sectionProbability, errorProvider, + performAssemblyFunc, ConstructionProperties); - using (new AssemblyToolCalculatorFactoryConfig()) - { - var row = new AdoptableFailureMechanismSectionResultRow(result, () => sectionProbability, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + // Precondition + Assert.AreEqual(sectionProbability, row.InitialFailureMechanismResultSectionProbability); - // Precondition - Assert.AreEqual(sectionProbability, row.InitialFailureMechanismResultSectionProbability); + // When + row.InitialFailureMechanismResultType = newValue; - // When - row.InitialFailureMechanismResultType = newValue; + // Then + Assert.AreEqual(result.ManualInitialFailureMechanismResultSectionProbability, row.InitialFailureMechanismResultSectionProbability); - // Then - Assert.AreEqual(result.ManualInitialFailureMechanismResultSectionProbability, row.InitialFailureMechanismResultSectionProbability); - } - mocks.VerifyAll(); } @@ -233,17 +233,16 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); - using (new AssemblyToolCalculatorFactoryConfig()) - { - // When - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; - // Then - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; - Assert.AreEqual(errorText, columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex].ErrorText); - } + // When + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); + // Then + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + Assert.AreEqual(errorText, columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex].ErrorText); + mocks.VerifyAll(); } @@ -268,17 +267,16 @@ ManualInitialFailureMechanismResultSectionProbability = sectionProbability }; - using (new AssemblyToolCalculatorFactoryConfig()) - { - // When - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; - // Then - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; - Assert.AreEqual(errorText, columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex].ErrorText); - } + // When + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); + // Then + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + Assert.AreEqual(errorText, columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex].ErrorText); + mocks.VerifyAll(); } @@ -304,17 +302,16 @@ InitialFailureMechanismResultType = initialFailureMechanismResultType }; - using (new AssemblyToolCalculatorFactoryConfig()) - { - // When - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; - // Then - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; - Assert.AreEqual(string.Empty, columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex].ErrorText); - } + // When + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); + // Then + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + Assert.AreEqual(string.Empty, columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex].ErrorText); + mocks.VerifyAll(); } @@ -342,17 +339,16 @@ RefinedSectionProbability = sectionProbability }; - using (new AssemblyToolCalculatorFactoryConfig()) - { - // When - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; - // Then - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; - Assert.AreEqual(errorText, columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex].ErrorText); - } + // When + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); + // Then + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + Assert.AreEqual(errorText, columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex].ErrorText); + mocks.VerifyAll(); } @@ -378,20 +374,25 @@ FurtherAnalysisType = furtherAnalysisType }; - using (new AssemblyToolCalculatorFactoryConfig()) - { - // When - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; - // Then - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; - Assert.IsEmpty(columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex].ErrorText); - } + // When + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); + // Then + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + Assert.IsEmpty(columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex].ErrorText); + mocks.VerifyAll(); } + private static FailureMechanismSectionAssemblyResult CreateFailureMechanismSectionAssemblyResult() + { + var random = new Random(21); + return new FailureMechanismSectionAssemblyResult(random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextEnumValue()); + } + #region Registration [Test] @@ -476,17 +477,15 @@ var result = new AdoptableFailureMechanismSectionResult(section); result.Attach(observer); - using (new AssemblyToolCalculatorFactoryConfig()) - { - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); - // Call - setPropertyAction(row); + // Call + setPropertyAction(row); - // Assert - Assert.AreEqual(newValue, assertPropertyFunc(result)); - } + // Assert + Assert.AreEqual(newValue, assertPropertyFunc(result)); mocks.VerifyAll(); } @@ -502,19 +501,18 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); - using (new AssemblyToolCalculatorFactoryConfig()) - { - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; - // Call - void Call() => setPropertyAction(row); + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); - // Assert - const string expectedMessage = "De waarde voor de faalkans moet in het bereik [0,0, 1,0] liggen."; - TestHelper.AssertThrowsArgumentExceptionAndTestMessage(Call, expectedMessage); - } + // 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); + mocks.VerifyAll(); } @@ -523,43 +521,6 @@ #region Assembly [Test] - public void Constructor_AssemblyRan_InputCorrectlySetOnCalculator() - { - // Setup - const double initialSectionProbability = 0.2; - - var mocks = new MockRepository(); - var errorProvider = mocks.Stub(); - mocks.ReplayAll(); - - var assessmentSection = new AssessmentSectionStub(); - - FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); - var result = new AdoptableFailureMechanismSectionResult(section); - - using (new AssemblyToolCalculatorFactoryConfig()) - { - var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; - - // Call - var row = new AdoptableFailureMechanismSectionResultRow(result, () => initialSectionProbability, errorProvider, assessmentSection, ConstructionProperties); - - // Assert - FailureMechanismSectionAssemblyInput input = calculator.FailureMechanismSectionAssemblyInput; - Assert.AreEqual(assessmentSection.FailureMechanismContribution.SignalingNorm, input.SignalingNorm); - Assert.AreEqual(assessmentSection.FailureMechanismContribution.LowerLimitNorm, input.LowerLimitNorm); - Assert.AreEqual(row.IsRelevant, input.IsRelevant); - Assert.IsTrue(input.HasProbabilitySpecified); - Assert.AreEqual(initialSectionProbability, input.InitialSectionProbability); - Assert.AreEqual(row.FurtherAnalysisType, input.FurtherAnalysisType); - Assert.AreEqual(row.RefinedSectionProbability, input.RefinedSectionProbability); - } - - mocks.VerifyAll(); - } - - [Test] public void Constructor_AssemblyRan_ReturnsAssemblyResult() { // Setup @@ -572,26 +533,20 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); - using (new AssemblyToolCalculatorFactoryConfig()) - { - var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; - calculator.FailureMechanismSectionAssemblyResultOutput = new FailureMechanismSectionAssemblyResult( - random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextEnumValue()); + FailureMechanismSectionAssemblyResult assemblyResult = CreateFailureMechanismSectionAssemblyResult(); + Func performAssemblyFunc = () => assemblyResult; - // Call - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + // Call + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); - // Assert - FailureMechanismSectionAssemblyResult calculatorOutput = calculator.FailureMechanismSectionAssemblyResultOutput; - FailureMechanismSectionAssemblyResult rowAssemblyResult = row.AssemblyResult; - Assert.AreSame(calculatorOutput, rowAssemblyResult); + // Assert + FailureMechanismSectionAssemblyResult rowAssemblyResult = row.AssemblyResult; + Assert.AreSame(assemblyResult, rowAssemblyResult); - Assert.AreEqual(rowAssemblyResult.SectionProbability, row.SectionProbability); - Assert.AreEqual(FailureMechanismSectionAssemblyGroupDisplayHelper.GetAssemblyGroupDisplayName(rowAssemblyResult.AssemblyGroup), - row.AssemblyGroup); - } + Assert.AreEqual(rowAssemblyResult.SectionProbability, row.SectionProbability); + Assert.AreEqual(FailureMechanismSectionAssemblyGroupDisplayHelper.GetAssemblyGroupDisplayName(rowAssemblyResult.AssemblyGroup), + row.AssemblyGroup); mocks.VerifyAll(); } @@ -609,33 +564,36 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); - using (new AssemblyToolCalculatorFactoryConfig()) + int nrOfCalls = 0; + FailureMechanismSectionAssemblyResult assemblyResult = CreateFailureMechanismSectionAssemblyResult(); + Func performAssemblyFunc = () => { - var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; - calculator.FailureMechanismSectionAssemblyResultOutput = new FailureMechanismSectionAssemblyResult( - random.NextDouble(), random.NextDouble(), random.NextDouble(), random.NextEnumValue()); + if (nrOfCalls == 1) + { + throw new AssemblyException(); + } - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + nrOfCalls++; + return assemblyResult; + }; - // Precondition - FailureMechanismSectionAssemblyResult calculatorOutput = calculator.FailureMechanismSectionAssemblyResultOutput; - Assert.AreSame(calculatorOutput, row.AssemblyResult); + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); - // When - calculator.ThrowExceptionOnCalculate = true; - row.InitialFailureMechanismResultType = AdoptableInitialFailureMechanismResultType.Manual; + // Precondition + Assert.AreSame(assemblyResult, row.AssemblyResult); - // Then - var expectedAssemblyResult = new DefaultFailureMechanismSectionAssemblyResult(); - FailureMechanismSectionAssemblyResult actualAssemblyResult = row.AssemblyResult; - Assert.AreEqual(expectedAssemblyResult.N, actualAssemblyResult.N); - Assert.AreEqual(expectedAssemblyResult.SectionProbability, actualAssemblyResult.SectionProbability); - Assert.AreEqual(expectedAssemblyResult.ProfileProbability, actualAssemblyResult.ProfileProbability); - Assert.AreEqual(expectedAssemblyResult.AssemblyGroup, actualAssemblyResult.AssemblyGroup); - } + // When + row.InitialFailureMechanismResultType = AdoptableInitialFailureMechanismResultType.Manual; + // Then + var expectedAssemblyResult = new DefaultFailureMechanismSectionAssemblyResult(); + FailureMechanismSectionAssemblyResult actualAssemblyResult = row.AssemblyResult; + Assert.AreEqual(expectedAssemblyResult.N, actualAssemblyResult.N); + Assert.AreEqual(expectedAssemblyResult.SectionProbability, actualAssemblyResult.SectionProbability); + Assert.AreEqual(expectedAssemblyResult.ProfileProbability, actualAssemblyResult.ProfileProbability); + Assert.AreEqual(expectedAssemblyResult.AssemblyGroup, actualAssemblyResult.AssemblyGroup); + mocks.VerifyAll(); } @@ -650,30 +608,35 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); - using (new AssemblyToolCalculatorFactoryConfig()) + const string errorText = "Message"; + int nrOfCalls = 0; + Func performAssemblyFunc = () => { - var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; + if (nrOfCalls == 1) + { + throw new AssemblyException(errorText); + } - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + nrOfCalls++; + return CreateFailureMechanismSectionAssemblyResult(); + }; - // Precondition - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; - Assert.AreEqual(string.Empty, columnStateDefinitions[ConstructionProperties.SectionProbabilityIndex].ErrorText); - Assert.AreEqual(string.Empty, columnStateDefinitions[ConstructionProperties.AssemblyGroupIndex].ErrorText); + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); - // When - calculator.ThrowExceptionOnCalculate = true; - row.InitialFailureMechanismResultType = AdoptableInitialFailureMechanismResultType.Manual; + // Precondition + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + Assert.AreEqual(string.Empty, columnStateDefinitions[ConstructionProperties.SectionProbabilityIndex].ErrorText); + Assert.AreEqual(string.Empty, columnStateDefinitions[ConstructionProperties.AssemblyGroupIndex].ErrorText); - // Then - const string expectedErrorText = "Message"; + // When + row.InitialFailureMechanismResultType = AdoptableInitialFailureMechanismResultType.Manual; - Assert.AreEqual(expectedErrorText, columnStateDefinitions[ConstructionProperties.SectionProbabilityIndex].ErrorText); - Assert.AreEqual(expectedErrorText, columnStateDefinitions[ConstructionProperties.AssemblyGroupIndex].ErrorText); - } + // Then + Assert.AreEqual(errorText, columnStateDefinitions[ConstructionProperties.SectionProbabilityIndex].ErrorText); + Assert.AreEqual(errorText, columnStateDefinitions[ConstructionProperties.AssemblyGroupIndex].ErrorText); + mocks.VerifyAll(); } @@ -688,31 +651,36 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); - using (new AssemblyToolCalculatorFactoryConfig()) + const string errorText = "Message"; + int nrOfCalls = 0; + Func performAssemblyFunc = () => { - var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; - calculator.ThrowExceptionOnCalculate = true; + if (nrOfCalls == 0) + { + nrOfCalls++; + throw new AssemblyException(errorText); + } - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + return CreateFailureMechanismSectionAssemblyResult(); + }; - // Precondition - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; - const string expectedErrorText = "Message"; + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); - Assert.AreEqual(expectedErrorText, columnStateDefinitions[ConstructionProperties.SectionProbabilityIndex].ErrorText); - Assert.AreEqual(expectedErrorText, columnStateDefinitions[ConstructionProperties.AssemblyGroupIndex].ErrorText); + // Precondition + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + const string expectedErrorText = "Message"; - // When - calculator.ThrowExceptionOnCalculate = false; - row.InitialFailureMechanismResultType = AdoptableInitialFailureMechanismResultType.Manual; + Assert.AreEqual(expectedErrorText, columnStateDefinitions[ConstructionProperties.SectionProbabilityIndex].ErrorText); + Assert.AreEqual(expectedErrorText, columnStateDefinitions[ConstructionProperties.AssemblyGroupIndex].ErrorText); - // Then - Assert.AreEqual(string.Empty, columnStateDefinitions[ConstructionProperties.SectionProbabilityIndex].ErrorText); - Assert.AreEqual(string.Empty, columnStateDefinitions[ConstructionProperties.AssemblyGroupIndex].ErrorText); - } + // When + row.InitialFailureMechanismResultType = AdoptableInitialFailureMechanismResultType.Manual; + // Then + Assert.AreEqual(string.Empty, columnStateDefinitions[ConstructionProperties.SectionProbabilityIndex].ErrorText); + Assert.AreEqual(string.Empty, columnStateDefinitions[ConstructionProperties.AssemblyGroupIndex].ErrorText); + mocks.VerifyAll(); } @@ -731,19 +699,18 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); - using (new AssemblyToolCalculatorFactoryConfig()) - { - // Call - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; - // Assert - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + // Call + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( - columnStateDefinitions[ConstructionProperties.SectionProbabilityIndex], true, true); - } + // Assert + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.SectionProbabilityIndex], true, true); + mocks.VerifyAll(); } @@ -767,25 +734,24 @@ InitialFailureMechanismResultType = AdoptableInitialFailureMechanismResultType.Manual }; - using (new AssemblyToolCalculatorFactoryConfig()) - { - // Call - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; - // Assert - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + // Call + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( - columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultTypeIndex], isRelevant); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( - columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex], isRelevant); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( - columnStateDefinitions[ConstructionProperties.FurtherAnalysisTypeIndex], isRelevant); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( - columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex], isRelevant); - } + // Assert + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultTypeIndex], isRelevant); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex], isRelevant); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.FurtherAnalysisTypeIndex], isRelevant); + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex], isRelevant); + mocks.VerifyAll(); } @@ -812,19 +778,18 @@ InitialFailureMechanismResultType = initialFailureMechanismResultType }; - using (new AssemblyToolCalculatorFactoryConfig()) - { - // Call - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; - // Assert - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + // Call + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( - columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex], isEnabled, isReadOnly); - } + // Assert + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.InitialFailureMechanismResultSectionProbabilityIndex], isEnabled, isReadOnly); + mocks.VerifyAll(); } @@ -852,19 +817,18 @@ FurtherAnalysisType = furtherAnalysisType }; - using (new AssemblyToolCalculatorFactoryConfig()) - { - // Call - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + Func performAssemblyFunc = CreateFailureMechanismSectionAssemblyResult; - // Assert - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + // Call + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( - columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex], expectedEnabled); - } + // Assert + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnState( + columnStateDefinitions[ConstructionProperties.RefinedSectionProbabilityIndex], expectedEnabled); + mocks.VerifyAll(); } @@ -881,22 +845,17 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new AdoptableFailureMechanismSectionResult(section); - using (new AssemblyToolCalculatorFactoryConfig()) - { - var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; - FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator; - calculator.FailureMechanismSectionAssemblyResultOutput = new FailureMechanismSectionAssemblyResult(double.NaN, double.NaN, double.NaN, assemblyGroup); + Func performAssemblyFunc = () => new FailureMechanismSectionAssemblyResult(double.NaN, double.NaN, double.NaN, assemblyGroup); - // Call - var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, - new AssessmentSectionStub(), ConstructionProperties); + // Call + var row = new AdoptableFailureMechanismSectionResultRow(result, () => double.NaN, errorProvider, + performAssemblyFunc, ConstructionProperties); - // Assert - IDictionary columnStateDefinitions = row.ColumnStateDefinitions; + // Assert + IDictionary columnStateDefinitions = row.ColumnStateDefinitions; - DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnWithColorState( - columnStateDefinitions[ConstructionProperties.AssemblyGroupIndex], expectedBackgroundColor); - } + DataGridViewControlColumnStateDefinitionTestHelper.AssertColumnWithColorState( + columnStateDefinitions[ConstructionProperties.AssemblyGroupIndex], expectedBackgroundColor); mocks.VerifyAll(); }