Exemplo n.º 1
0
        public void IsStructureIntersectionWithReferenceLineInSection_EmptySegmentCollection_ThrowsInvalidOperationException()
        {
            // Setup
            var structure     = new TestStructure(new Point2D(0.0, 0.0));
            var referenceLine = new ReferenceLine();

            referenceLine.SetGeometry(new[]
            {
                new Point2D(0.0, 0.0),
                new Point2D(10.0, 0.0)
            });

            var calculation = new TestStructuresCalculationScenario
            {
                InputParameters =
                {
                    Structure = structure
                }
            };

            // Call
            void Call() => calculation.IsStructureIntersectionWithReferenceLineInSection(Enumerable.Empty <Segment2D>());

            // Assert
            Assert.Throws <InvalidOperationException>(Call);
        }
Exemplo n.º 2
0
        public void GetInitialFailureMechanismResultProbability_RelevantScenarioContributionsDoNotAddUpTo1_ReturnNaN(double contributionA, double contributionB)
        {
            // Setup
            FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
            var result = new AdoptableFailureMechanismSectionResult(section);

            var calculationScenarioA = new TestStructuresCalculationScenario
            {
                InputParameters =
                {
                    Structure = new TestStructure(section.StartPoint)
                },
                Contribution = (RoundedDouble)contributionA,
                Output       = new TestStructuresOutput(0.1)
            };
            var calculationScenarioB = new TestStructuresCalculationScenario
            {
                InputParameters =
                {
                    Structure = new TestStructure(section.StartPoint)
                },
                Contribution = (RoundedDouble)contributionB,
                Output       = new TestStructuresOutput(0.2)
            };

            // Call
            double initialFailureMechanismResultProbability = result.GetInitialFailureMechanismResultProbability(new[]
            {
                calculationScenarioA,
                calculationScenarioB
            });

            // Assert
            Assert.IsNaN(initialFailureMechanismResultProbability);
        }
Exemplo n.º 3
0
        public void GetInitialFailureMechanismResultProbability_NoRelevantScenarios_ReturnsNaN()
        {
            // Setup
            FailureMechanismSection section   = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
            var failureMechanismSectionResult = new AdoptableFailureMechanismSectionResult(section);

            var calculationScenario = new TestStructuresCalculationScenario
            {
                InputParameters =
                {
                    Structure = new TestStructure(section.StartPoint)
                },
                IsRelevant = false,
                Output     = new TestStructuresOutput()
            };

            // Call
            double initialFailureMechanismResultProbability = failureMechanismSectionResult.GetInitialFailureMechanismResultProbability(new[]
            {
                calculationScenario
            });

            // Assert
            Assert.IsNaN(initialFailureMechanismResultProbability);
        }
Exemplo n.º 4
0
        public void IsStructureIntersectionWithReferenceLineInSection_StructureDoesNotIntersectReferenceLine_ReturnsFalse()
        {
            // Setup
            var structure     = new TestStructure(new Point2D(0.0, 0.0));
            var referenceLine = new ReferenceLine();

            referenceLine.SetGeometry(new[]
            {
                new Point2D(10.0, 0.0),
                new Point2D(20.0, 0.0)
            });

            var calculation = new TestStructuresCalculationScenario
            {
                InputParameters =
                {
                    Structure = structure
                }
            };

            IEnumerable <Segment2D> lineSegments = Math2D.ConvertPointsToLineSegments(referenceLine.Points);

            // Call
            bool intersects = calculation.IsStructureIntersectionWithReferenceLineInSection(lineSegments);

            // Assert
            Assert.IsFalse(intersects);
        }
Exemplo n.º 5
0
        public void IsStructureIntersectionWithReferenceLineInSection_CalculationWithoutStructure_ReturnsFalse()
        {
            // Setup
            var calculation = new TestStructuresCalculationScenario();

            // Call
            bool intersects = calculation.IsStructureIntersectionWithReferenceLineInSection(Enumerable.Empty <Segment2D>());

            // Assert
            Assert.IsFalse(intersects);
        }
Exemplo n.º 6
0
        public void IsStructureIntersectionWithReferenceLineInSection_LineSegmentsNull_ThrowsArgumentNullException()
        {
            // Setup
            var calculation = new TestStructuresCalculationScenario();

            // Call
            void Call() => calculation.IsStructureIntersectionWithReferenceLineInSection(null);

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

            Assert.AreEqual("lineSegments", exception.ParamName);
        }
Exemplo n.º 7
0
        public void GivenStructuresFailureMechanismResultView_WhenNestedCalculationInputNotifiesObservers_ThenDataGridViewUpdatedAndAssemblyPerformed()
        {
            // Given
            var failureMechanism            = new TestStructuresFailureMechanism();
            FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection("Section 1");

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

            var calculationScenario = new TestStructuresCalculationScenario
            {
                InputParameters =
                {
                    Structure = new TestStructure(section.StartPoint)
                }
            };
            var calculationGroup = new CalculationGroup();

            calculationGroup.Children.Add(calculationScenario);
            failureMechanism.CalculationsGroup.Children.Add(calculationGroup);

            int nrOfCalls = 0;
            Func <TestStructuresFailureMechanism, IAssessmentSection, FailureMechanismAssemblyResultWrapper> performFailureMechanismAssemblyFunc = (fm, ass) =>
            {
                nrOfCalls++;
                return(new FailureMechanismAssemblyResultWrapper(double.NaN, AssemblyMethod.BOI1A1));
            };

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

                    // Precondition
                    Assert.AreEqual(1, nrOfCalls);
                    Assert.IsFalse(rowsChanged);

                    // When
                    calculationScenario.InputParameters.NotifyObservers();

                    // Then
                    Assert.AreEqual(2, nrOfCalls);
                    Assert.IsTrue(rowsChanged);
                }
        }
        public void CreateInstance_StructuresOutputContext_ReturnStructuresOutputProperties()
        {
            // Setup
            var calculation = new TestStructuresCalculationScenario
            {
                Output = new StructuresOutput(0, null)
            };

            // Call
            IObjectProperties objectProperties = info.CreateInstance(new StructuresOutputContext(calculation));

            // Assert
            Assert.IsInstanceOf <ObjectProperties <StructuresOutput> >(objectProperties);
            Assert.AreSame(calculation.Output, objectProperties.Data);
        }
Exemplo n.º 9
0
        public void GetInitialFailureMechanismResultProbability_MultipleScenarios_ReturnsValueBasedOnRelevantScenarios()
        {
            // Setup
            FailureMechanismSection section   = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
            var failureMechanismSectionResult = new AdoptableFailureMechanismSectionResult(section);

            var calculationScenario1 = new TestStructuresCalculationScenario
            {
                InputParameters =
                {
                    Structure = new TestStructure(section.StartPoint)
                },
                Contribution = (RoundedDouble)0.2111,
                Output       = new TestStructuresOutput(1.1)
            };
            var calculationScenario2 = new TestStructuresCalculationScenario
            {
                InputParameters =
                {
                    Structure = new TestStructure(section.StartPoint)
                },
                Contribution = (RoundedDouble)0.7889,
                Output       = new TestStructuresOutput(2.2)
            };
            var calculationScenario3 = new TestStructuresCalculationScenario
            {
                InputParameters =
                {
                    Structure = new TestStructure(section.StartPoint)
                },
                IsRelevant = false
            };

            TestStructuresCalculationScenario[] calculations =
            {
                calculationScenario1,
                calculationScenario2,
                calculationScenario3
            };

            // Call
            double initialFailureMechanismResultProbability = failureMechanismSectionResult.GetInitialFailureMechanismResultProbability(calculations);

            // Assert
            Assert.AreEqual(0.039607535209180436, initialFailureMechanismResultProbability);
        }
Exemplo n.º 10
0
        public void Constructor_ParentNull_ThrowsArgumentNullException()
        {
            // Setup
            var mockRepository    = new MockRepository();
            var assessmentSection = mockRepository.Stub <IAssessmentSection>();

            mockRepository.ReplayAll();

            var calculation      = new TestStructuresCalculationScenario();
            var failureMechanism = new TestCalculatableFailureMechanism();

            // Call
            void Call() => new TestStructuresCalculationScenarioContext(calculation, null, failureMechanism, assessmentSection);

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

            Assert.AreEqual("parent", exception.ParamName);
            mockRepository.VerifyAll();
        }
Exemplo n.º 11
0
        public void GetInitialFailureMechanismResultProbability_ScenarioWithNaNResults_ReturnsNaN()
        {
            // Setup
            FailureMechanismSection section   = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
            var failureMechanismSectionResult = new AdoptableFailureMechanismSectionResult(section);

            var calculationScenario1 = new TestStructuresCalculationScenario
            {
                InputParameters =
                {
                    Structure = new TestStructure(section.StartPoint)
                },
                IsRelevant   = true,
                Contribution = (RoundedDouble)0.2,
                Output       = new TestStructuresOutput(double.NaN)
            };
            var calculationScenario2 = new TestStructuresCalculationScenario
            {
                InputParameters =
                {
                    Structure = new TestStructure(section.StartPoint)
                },
                IsRelevant   = true,
                Contribution = (RoundedDouble)0.8,
                Output       = new TestStructuresOutput(0.1)
            };

            TestStructuresCalculationScenario[] calculations =
            {
                calculationScenario1,
                calculationScenario2
            };

            // Call
            double initialFailureMechanismResultProbability = failureMechanismSectionResult.GetInitialFailureMechanismResultProbability(calculations);

            // Assert
            Assert.IsNaN(initialFailureMechanismResultProbability);
        }
Exemplo n.º 12
0
        public void Constructor_ExpectedValues()
        {
            // Setup
            var mocksRepository   = new MockRepository();
            var assessmentSection = mocksRepository.Stub <IAssessmentSection>();

            mocksRepository.ReplayAll();

            var calculation      = new TestStructuresCalculationScenario();
            var failureMechanism = new TestCalculatableFailureMechanism();
            var parent           = new CalculationGroup();

            // Call
            var context = new TestStructuresCalculationScenarioContext(calculation, parent, failureMechanism, assessmentSection);

            // Assert
            Assert.IsInstanceOf <FailureMechanismItemContextBase <StructuresCalculationScenario <TestStructuresInput>, TestCalculatableFailureMechanism> >(context);
            Assert.IsInstanceOf <ICalculationContext <StructuresCalculationScenario <TestStructuresInput>, TestCalculatableFailureMechanism> >(context);
            Assert.AreSame(calculation, context.WrappedData);
            Assert.AreSame(parent, context.Parent);
            Assert.AreSame(failureMechanism, context.FailureMechanism);
            Assert.AreSame(assessmentSection, context.AssessmentSection);
            mocksRepository.VerifyAll();
        }