public void FailureMechanismResultsView_AllDataSet_PassesInputToPerformAssemblyFunc()
        {
            // Setup
            FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();

            var failureMechanism = new TestNonAdoptableWithProfileProbabilityFailureMechanism();

            FailureMechanismTestHelper.SetSections(failureMechanism, new[]
            {
                section
            });

            NonAdoptableWithProfileProbabilityFailureMechanismSectionResult functionInput = null;
            Func <NonAdoptableWithProfileProbabilityFailureMechanismSectionResult, FailureMechanismSectionAssemblyResultWrapper> performAssemblyFunc = sr =>
            {
                functionInput = sr;
                return(FailureMechanismSectionAssemblyResultWrapperTestFactory.Create());
            };

            // Call
            using (ShowFailureMechanismResultsView(failureMechanism, performAssemblyFunc))
            {
                // Assert
                Assert.AreSame(functionInput, failureMechanism.SectionResults.Single());
            }
        }
        public void Constructor_ExpectedValues()
        {
            // Setup
            var mocks             = new MockRepository();
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            mocks.ReplayAll();

            var failureMechanism = new TestNonAdoptableWithProfileProbabilityFailureMechanism();

            Func <NonAdoptableWithProfileProbabilityFailureMechanismSectionResult, FailureMechanismSectionAssemblyResultWrapper> performFailureMechanismSectionAssemblyFunc =
                sr => FailureMechanismSectionAssemblyResultWrapperTestFactory.Create();

            // Call
            using (var view = new NonAdoptableWithProfileProbabilityFailureMechanismResultView <TestNonAdoptableWithProfileProbabilityFailureMechanism>(
                       failureMechanism.SectionResults, failureMechanism, assessmentSection,
                       (fm, ass) => new FailureMechanismAssemblyResultWrapper(double.NaN, AssemblyMethod.Manual),
                       fm => false, performFailureMechanismSectionAssemblyFunc))
            {
                // Assert
                Assert.IsInstanceOf <FailureMechanismResultView <NonAdoptableWithProfileProbabilityFailureMechanismSectionResult,
                                                                 NonAdoptableWithProfileProbabilityFailureMechanismSectionResultRow,
                                                                 TestNonAdoptableWithProfileProbabilityFailureMechanism> >(view);
                Assert.IsNull(view.Data);
                Assert.AreSame(failureMechanism, view.FailureMechanism);
            }

            mocks.VerifyAll();
        }
        private NonAdoptableWithProfileProbabilityFailureMechanismResultView <TestNonAdoptableWithProfileProbabilityFailureMechanism> ShowFailureMechanismResultsView(
            TestNonAdoptableWithProfileProbabilityFailureMechanism failureMechanism,
            Func <NonAdoptableWithProfileProbabilityFailureMechanismSectionResult, FailureMechanismSectionAssemblyResultWrapper> performFailureMechanismSectionAssemblyFunc)
        {
            var failureMechanismResultView = new NonAdoptableWithProfileProbabilityFailureMechanismResultView <TestNonAdoptableWithProfileProbabilityFailureMechanism>(
                failureMechanism.SectionResults, failureMechanism, new AssessmentSectionStub(),
                (fm, ass) => new FailureMechanismAssemblyResultWrapper(double.NaN, AssemblyMethod.Manual),
                fm => fm.UseLengthEffect, performFailureMechanismSectionAssemblyFunc);

            testForm.Controls.Add(failureMechanismResultView);
            testForm.Show();

            return(failureMechanismResultView);
        }
        public void FailureMechanismResultsView_AllDataSet_DataGridViewCorrectlyInitialized()
        {
            // Setup
            FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1");

            var failureMechanism = new TestNonAdoptableWithProfileProbabilityFailureMechanism();

            FailureMechanismTestHelper.SetSections(failureMechanism, new[]
            {
                section
            });

            var sectionAssemblyResult = new FailureMechanismSectionAssemblyResultWrapper(
                new FailureMechanismSectionAssemblyResult(0.01, 0.1, 10, FailureMechanismSectionAssemblyGroup.I),
                AssemblyMethod.BOI0A1, AssemblyMethod.BOI0B1);

            // Call
            using (new AssemblyToolCalculatorFactoryConfig())
                using (ShowFailureMechanismResultsView(failureMechanism, sr => sectionAssemblyResult))
                {
                    DataGridView dataGridView = GetDataGridView();

                    // Assert
                    DataGridViewRowCollection rows = dataGridView.Rows;
                    Assert.AreEqual(1, rows.Count);

                    DataGridViewCellCollection cells = rows[0].Cells;
                    Assert.AreEqual(columnCount, cells.Count);
                    Assert.AreEqual("Section 1", cells[nameColumnIndex].FormattedValue);
                    Assert.AreEqual(true, cells[isRelevantIndex].Value);
                    Assert.AreEqual(NonAdoptableInitialFailureMechanismResultType.Manual, cells[initialFailureMechanismResultTypeIndex].Value);
                    Assert.AreEqual("-", cells[initialFailureMechanismResultProfileProbabilityIndex].FormattedValue);
                    Assert.AreEqual("-", cells[initialFailureMechanismResultSectionProbabilityIndex].FormattedValue);
                    Assert.AreEqual(FailureMechanismSectionResultFurtherAnalysisType.NotNecessary, cells[furtherAnalysisTypeIndex].Value);
                    Assert.AreEqual("-", cells[refinedProfileProbabilityIndex].FormattedValue);
                    Assert.AreEqual("-", cells[refinedSectionProbabilityIndex].FormattedValue);
                    Assert.AreEqual("1/100", cells[profileProbabilityIndex].FormattedValue);
                    Assert.AreEqual("1/10", cells[sectionProbabilityIndex].FormattedValue);
                    Assert.AreEqual("10,00", cells[sectionNIndex].FormattedValue);
                    Assert.AreEqual("+I", cells[assemblyGroupIndex].FormattedValue);
                }
        }
        public void Constructor_PerformFailureMechanismSectionAssemblyFuncNull_ThrowsArgumentNullException()
        {
            // Setup
            var mocks             = new MockRepository();
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            mocks.ReplayAll();

            var failureMechanism = new TestNonAdoptableWithProfileProbabilityFailureMechanism();

            // Call
            void Call() => new NonAdoptableWithProfileProbabilityFailureMechanismResultView <TestNonAdoptableWithProfileProbabilityFailureMechanism>(
                failureMechanism.SectionResults, failureMechanism, assessmentSection, (fm, ass) => null, fm => false, null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("performFailureMechanismSectionAssemblyFunc", exception.ParamName);
            mocks.VerifyAll();
        }
        public void GivenNonAdoptableWithProfileProbabilityFailureMechanismResultView_WhenApplyLengthEffectChangedAndFailureMechanismObserversNotified_ThenDataGridViewUpdated(
            bool useLengthEffect)
        {
            var failureMechanism = new TestNonAdoptableWithProfileProbabilityFailureMechanism
            {
                UseLengthEffect = !useLengthEffect
            };

            FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1");

            FailureMechanismTestHelper.SetSections(failureMechanism, new[]
            {
                section
            });

            using (new AssemblyToolCalculatorFactoryConfig())
                using (ShowFailureMechanismResultsView(failureMechanism))
                {
                    var          rowsChanged  = false;
                    DataGridView dataGridView = GetDataGridView();
                    dataGridView.Rows.CollectionChanged += (sender, args) => rowsChanged = true;

                    // Precondition
                    Assert.IsFalse(rowsChanged);
                    Assert.AreEqual(!useLengthEffect, dataGridView.Columns[initialFailureMechanismResultProfileProbabilityIndex].Visible);
                    Assert.AreEqual(!useLengthEffect, dataGridView.Columns[refinedProfileProbabilityIndex].Visible);
                    Assert.AreEqual(!useLengthEffect, dataGridView.Columns[profileProbabilityIndex].Visible);
                    Assert.AreEqual(!useLengthEffect, dataGridView.Columns[sectionNIndex].Visible);

                    // When
                    failureMechanism.UseLengthEffect = useLengthEffect;
                    failureMechanism.NotifyObservers();

                    // Then
                    Assert.IsTrue(rowsChanged);
                    Assert.AreEqual(useLengthEffect, dataGridView.Columns[initialFailureMechanismResultProfileProbabilityIndex].Visible);
                    Assert.AreEqual(useLengthEffect, dataGridView.Columns[refinedProfileProbabilityIndex].Visible);
                    Assert.AreEqual(useLengthEffect, dataGridView.Columns[profileProbabilityIndex].Visible);
                    Assert.AreEqual(useLengthEffect, dataGridView.Columns[sectionNIndex].Visible);
                }
        }
        public void Constructor_GetUseLengthEffectFuncNull_ThrowsArgumentNullException()
        {
            // Setup
            var mocks             = new MockRepository();
            var assessmentSection = mocks.Stub <IAssessmentSection>();

            mocks.ReplayAll();

            var failureMechanism = new TestNonAdoptableWithProfileProbabilityFailureMechanism();
            Func <NonAdoptableWithProfileProbabilityFailureMechanismSectionResult, FailureMechanismSectionAssemblyResultWrapper> performFailureMechanismSectionAssemblyFunc =
                sr => FailureMechanismSectionAssemblyResultWrapperTestFactory.Create();

            // Call
            void Call() => new NonAdoptableWithProfileProbabilityFailureMechanismResultView <TestNonAdoptableWithProfileProbabilityFailureMechanism>(
                failureMechanism.SectionResults, failureMechanism, assessmentSection,
                (fm, ass) => null, null, performFailureMechanismSectionAssemblyFunc);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("getUseLengthEffectFunc", exception.ParamName);
            mocks.VerifyAll();
        }
 private NonAdoptableWithProfileProbabilityFailureMechanismResultView <TestNonAdoptableWithProfileProbabilityFailureMechanism> ShowFailureMechanismResultsView(
     TestNonAdoptableWithProfileProbabilityFailureMechanism failureMechanism)
 {
     return(ShowFailureMechanismResultsView(failureMechanism, sr => FailureMechanismSectionAssemblyResultWrapperTestFactory.Create()));
 }
        public void GivenFormWithNonAdoptableWithProfileProbabilityFailureMechanismResultView_ThenExpectedColumnsAreVisible(bool useLengthEffect)
        {
            // Given
            var failureMechanism = new TestNonAdoptableWithProfileProbabilityFailureMechanism
            {
                UseLengthEffect = useLengthEffect
            };

            using (new AssemblyToolCalculatorFactoryConfig())
                using (ShowFailureMechanismResultsView(failureMechanism))
                {
                    // Then
                    DataGridView dataGridView = GetDataGridView();

                    Assert.AreEqual(columnCount, dataGridView.ColumnCount);

                    Assert.IsInstanceOf <DataGridViewTextBoxColumn>(dataGridView.Columns[nameColumnIndex]);
                    Assert.IsInstanceOf <DataGridViewCheckBoxColumn>(dataGridView.Columns[isRelevantIndex]);
                    Assert.IsInstanceOf <DataGridViewComboBoxColumn>(dataGridView.Columns[initialFailureMechanismResultTypeIndex]);
                    Assert.IsInstanceOf <DataGridViewTextBoxColumn>(dataGridView.Columns[initialFailureMechanismResultProfileProbabilityIndex]);
                    Assert.IsInstanceOf <DataGridViewTextBoxColumn>(dataGridView.Columns[initialFailureMechanismResultSectionProbabilityIndex]);
                    Assert.IsInstanceOf <DataGridViewComboBoxColumn>(dataGridView.Columns[furtherAnalysisTypeIndex]);
                    Assert.IsInstanceOf <DataGridViewTextBoxColumn>(dataGridView.Columns[refinedProfileProbabilityIndex]);
                    Assert.IsInstanceOf <DataGridViewTextBoxColumn>(dataGridView.Columns[refinedSectionProbabilityIndex]);
                    Assert.IsInstanceOf <DataGridViewTextBoxColumn>(dataGridView.Columns[profileProbabilityIndex]);
                    Assert.IsInstanceOf <DataGridViewTextBoxColumn>(dataGridView.Columns[sectionProbabilityIndex]);
                    Assert.IsInstanceOf <DataGridViewTextBoxColumn>(dataGridView.Columns[sectionNIndex]);
                    Assert.IsInstanceOf <DataGridViewTextBoxColumn>(dataGridView.Columns[assemblyGroupIndex]);

                    Assert.AreEqual("Vaknaam", dataGridView.Columns[nameColumnIndex].HeaderText);
                    Assert.AreEqual("Is relevant", dataGridView.Columns[isRelevantIndex].HeaderText);
                    Assert.AreEqual("Resultaat initieel mechanisme", dataGridView.Columns[initialFailureMechanismResultTypeIndex].HeaderText);
                    Assert.AreEqual("Faalkans initieel\r\nmechanisme per doorsnede\r\n[1/jaar]", dataGridView.Columns[initialFailureMechanismResultProfileProbabilityIndex].HeaderText);
                    Assert.AreEqual("Faalkans initieel\r\nmechanisme per vak\r\n[1/jaar]", dataGridView.Columns[initialFailureMechanismResultSectionProbabilityIndex].HeaderText);
                    Assert.AreEqual("Vervolganalyse", dataGridView.Columns[furtherAnalysisTypeIndex].HeaderText);
                    Assert.AreEqual("Aangescherpte\r\nfaalkans per doorsnede\r\n[1/jaar]", dataGridView.Columns[refinedProfileProbabilityIndex].HeaderText);
                    Assert.AreEqual("Aangescherpte\r\nfaalkans per vak\r\n[1/jaar]", dataGridView.Columns[refinedSectionProbabilityIndex].HeaderText);
                    Assert.AreEqual("Rekenwaarde\r\nfaalkans per doorsnede\r\n[1/jaar]", dataGridView.Columns[profileProbabilityIndex].HeaderText);
                    Assert.AreEqual("Rekenwaarde\r\nfaalkans per vak\r\n[1/jaar]", dataGridView.Columns[sectionProbabilityIndex].HeaderText);
                    Assert.AreEqual("Rekenwaarde Nvak*\r\n[-]", dataGridView.Columns[sectionNIndex].HeaderText);
                    Assert.AreEqual("Duidingsklasse", dataGridView.Columns[assemblyGroupIndex].HeaderText);

                    Assert.IsTrue(dataGridView.Columns[nameColumnIndex].ReadOnly);
                    Assert.IsFalse(dataGridView.Columns[isRelevantIndex].ReadOnly);
                    Assert.IsFalse(dataGridView.Columns[initialFailureMechanismResultTypeIndex].ReadOnly);
                    Assert.IsFalse(dataGridView.Columns[initialFailureMechanismResultProfileProbabilityIndex].ReadOnly);
                    Assert.IsFalse(dataGridView.Columns[initialFailureMechanismResultSectionProbabilityIndex].ReadOnly);
                    Assert.IsFalse(dataGridView.Columns[furtherAnalysisTypeIndex].ReadOnly);
                    Assert.IsFalse(dataGridView.Columns[refinedProfileProbabilityIndex].ReadOnly);
                    Assert.IsFalse(dataGridView.Columns[refinedSectionProbabilityIndex].ReadOnly);
                    Assert.IsTrue(dataGridView.Columns[profileProbabilityIndex].ReadOnly);
                    Assert.IsTrue(dataGridView.Columns[sectionProbabilityIndex].ReadOnly);
                    Assert.IsTrue(dataGridView.Columns[sectionNIndex].ReadOnly);
                    Assert.IsTrue(dataGridView.Columns[assemblyGroupIndex].ReadOnly);

                    Assert.AreEqual(useLengthEffect, dataGridView.Columns[initialFailureMechanismResultProfileProbabilityIndex].Visible);
                    Assert.AreEqual(useLengthEffect, dataGridView.Columns[refinedProfileProbabilityIndex].Visible);
                    Assert.AreEqual(useLengthEffect, dataGridView.Columns[profileProbabilityIndex].Visible);
                    Assert.AreEqual(useLengthEffect, dataGridView.Columns[sectionNIndex].Visible);
                }
        }