public void GivenViewWithFailureMechanismContribution_WhenFailureMechanismContributionUpdated_ThenDataTableUpdated()
        {
            // Given
            var random = new Random(21);

            var mocks    = new MockRepository();
            var observer = mocks.StrictMock <IObserver>();

            observer.Expect(o => o.UpdateObserver());
            mocks.ReplayAll();

            FailureMechanismContribution failureMechanismContribution = FailureMechanismContributionTestFactory.CreateFailureMechanismContribution();

            failureMechanismContribution.Attach(observer);

            using (new AssemblyToolCalculatorFactoryConfig())
                using (var view = new AssessmentSectionAssemblyGroupsView(failureMechanismContribution))
                {
                    var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
                    AssessmentSectionAssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedAssessmentSectionAssemblyGroupBoundariesCalculator;

                    AssemblyGroupsTable <AssessmentSectionAssemblyGroup> groupsTable = GetCategoriesTable(view);

                    // Precondition
                    Assert.AreEqual(calculator.AssessmentSectionAssemblyGroupBoundariesOutput.Count(), groupsTable.Rows.Count);

                    // When
                    var newOutput = new[]
                    {
                        new AssessmentSectionAssemblyGroupBoundaries(random.NextDouble(),
                                                                     random.NextDouble(),
                                                                     random.NextEnumValue <AssessmentSectionAssemblyGroup>())
                    };
                    calculator.AssessmentSectionAssemblyGroupBoundariesOutput = newOutput;
                    failureMechanismContribution.NotifyObservers();

                    // Then
                    Assert.AreEqual(newOutput.Length, groupsTable.Rows.Count);
                }

            mocks.VerifyAll();
        }