public void UpdateInternalData_Always_UpdatesDataAndFiresEventsAndNotifiesObservers()
        {
            // Setup
            var mocks    = new MockRepository();
            var observer = mocks.StrictMock <IObserver>();

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

            FailureMechanismSectionResult sectionResult = FailureMechanismSectionResultTestFactory.CreateFailureMechanismSectionResult();

            sectionResult.Attach(observer);

            var row        = new TestFailureMechanismSectionResultRow(sectionResult);
            var rowUpdated = false;

            row.RowUpdated += (sender, args) => rowUpdated = true;

            var rowUpdateDone = false;

            row.RowUpdateDone += (sender, args) => rowUpdateDone = true;

            // Precondition
            Assert.IsFalse(row.Updated);

            // Call
            row.UpdateInternal();

            // Assert
            Assert.IsTrue(row.Updated);
            Assert.IsTrue(rowUpdated);
            Assert.IsTrue(rowUpdateDone);
            mocks.VerifyAll();
        }