public void ScenariosAreValid_ScenariosWithOutputAndContributionOne_ReturnsTrue(double scenarioContribution1,
                                                                                        double scenarioContribution2)
        {
            // Setup
            var calculationScenario1 = new TestCalculationScenario
            {
                Contribution = (RoundedDouble)scenarioContribution1,
                Output       = new object()
            };
            var calculationScenario2 = new TestCalculationScenario
            {
                Contribution = (RoundedDouble)scenarioContribution2,
                Output       = new object()
            };

            // Call
            bool valid = CalculationScenarioHelper.ScenariosAreValid(new[]
            {
                calculationScenario1,
                calculationScenario2
            });

            // Assert
            Assert.IsTrue(valid);
        }
Пример #2
0
        public void GivenScenariosView_WhenCalculationInputNotifiesObserver_ThenDataGridViewUpdated()
        {
            // Given
            var calculationGroup = new CalculationGroup();

            ShowFullyConfiguredScenariosView(calculationGroup, new TestCalculatableFailureMechanism());

            var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject;

            TestScenarioRow[] sectionResultRows = dataGridView.Rows.Cast <DataGridViewRow>()
                                                  .Select(r => r.DataBoundItem)
                                                  .Cast <TestScenarioRow>()
                                                  .ToArray();

            TestCalculationScenario calculation = calculationGroup.GetCalculations().Cast <TestCalculationScenario>().First();

            // When
            calculation.InputParameters.NotifyObservers();

            // Then
            TestScenarioRow[] updatedRows = dataGridView.Rows.Cast <DataGridViewRow>()
                                            .Select(r => r.DataBoundItem)
                                            .Cast <TestScenarioRow>()
                                            .ToArray();

            CollectionAssert.AreNotEquivalent(sectionResultRows, updatedRows);
        }
Пример #3
0
        public void GivenMapLayerWithFailureMechanismSectionAssemblyResults_WhenChangingNestedCalculationScenarioInputDataAndObserversNotified_ThenMapDataUpdated()
        {
            // Given
            var mocks    = new MockRepository();
            var observer = mocks.StrictMock <IObserver>();

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

            var random = new Random(21);
            var calculationScenario = new TestCalculationScenario();
            var failureMechanism    = new TestCalculatableFailureMechanism(new[]
            {
                calculationScenario
            });

            failureMechanism.SetSections(new[]
            {
                FailureMechanismSectionTestFactory.CreateFailureMechanismSection()
            }, string.Empty);

            var nestedCalculationScenario = new TestCalculationScenario();
            var nestedCalculationGroup    = new CalculationGroup();

            nestedCalculationGroup.Children.Add(nestedCalculationScenario);
            failureMechanism.CalculationsGroup.Children.Add(nestedCalculationGroup);

            var assemblyResult = new FailureMechanismSectionAssemblyResult(
                random.NextDouble(), random.NextDouble(), random.NextDouble(),
                random.NextEnumValue <FailureMechanismSectionAssemblyGroup>());

            using (var mapLayer = new CalculatableFailureMechanismSectionResultsMapLayer <TestCalculatableFailureMechanism, TestFailureMechanismSectionResult, TestCalculationInput>(
                       failureMechanism, result => assemblyResult))
            {
                mapLayer.MapData.Attach(observer);

                // Precondition
                MapDataTestHelper.AssertAssemblyMapData(failureMechanism, assemblyResult, mapLayer.MapData);

                // When
                assemblyResult = new FailureMechanismSectionAssemblyResult(
                    random.NextDouble(), random.NextDouble(), random.NextDouble(),
                    random.NextEnumValue <FailureMechanismSectionAssemblyGroup>());

                nestedCalculationScenario.InputParameters.HydraulicBoundaryLocation = new TestHydraulicBoundaryLocation();
                nestedCalculationScenario.InputParameters.NotifyObservers();

                // Then
                MapDataTestHelper.AssertAssemblyMapData(failureMechanism, assemblyResult, mapLayer.MapData);
            }

            mocks.VerifyAll();
        }
        public void ScenariosAreValid_ScenariosWithoutOutput_ReturnsFalse()
        {
            // Setup
            var calculationScenario1 = new TestCalculationScenario
            {
                Contribution = (RoundedDouble)0.4323,
                Output       = new object()
            };
            var calculationScenario2 = new TestCalculationScenario
            {
                Contribution = (RoundedDouble)0.1226
            };

            // Call
            bool valid = CalculationScenarioHelper.ScenariosAreValid(new[]
            {
                calculationScenario1,
                calculationScenario2
            });

            // Assert
            Assert.IsFalse(valid);
        }
Пример #5
0
        public void GetRelevantCalculationScenarios_WithRelevantAndIrrelevantScenariosOfDifferentTypes_ReturnsRelevantCalculationScenarios()
        {
            // Setup
            var mocks = new MockRepository();
            var calculationScenarioStub1 = mocks.Stub <ICalculationScenario>();
            var calculationScenarioStub2 = mocks.Stub <ICalculationScenario>();

            mocks.ReplayAll();

            calculationScenarioStub1.IsRelevant = true;
            calculationScenarioStub2.IsRelevant = false;

            var calculationScenario1 = new TestCalculationScenario();
            var calculationScenario2 = new TestCalculationScenario
            {
                IsRelevant = false
            };

            ICalculationScenario[] calculationScenarios =
            {
                calculationScenarioStub1,
                calculationScenarioStub2,
                calculationScenario1,
                calculationScenario2
            };

            FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
            var sectionResult = new TestFailureMechanismSectionResult(section);

            // Call
            IEnumerable <ICalculationScenario> relevantScenarios = sectionResult.GetRelevantCalculationScenarios <TestCalculationScenario>(
                calculationScenarios, (scenario, segments) => true);

            // Assert
            Assert.AreEqual(calculationScenario1, relevantScenarios.Single());
            mocks.VerifyAll();
        }
Пример #6
0
        public void GetRelevantCalculationScenarios_WithoutScenarioIntersectingSection_ReturnsNoCalculationScenarios()
        {
            // Setup
            var mocks = new MockRepository();
            var calculationScenarioStub1 = mocks.Stub <ICalculationScenario>();
            var calculationScenarioStub2 = mocks.Stub <ICalculationScenario>();

            mocks.ReplayAll();

            calculationScenarioStub1.IsRelevant = true;
            calculationScenarioStub2.IsRelevant = false;

            var calculationScenario1 = new TestCalculationScenario();
            var calculationScenario2 = new TestCalculationScenario
            {
                IsRelevant = false
            };

            ICalculationScenario[] calculationScenarios =
            {
                calculationScenarioStub1,
                calculationScenarioStub2,
                calculationScenario1,
                calculationScenario2
            };

            FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
            var sectionResult = new TestFailureMechanismSectionResult(section);

            // Call
            IEnumerable <ICalculationScenario> relevantScenarios = sectionResult.GetRelevantCalculationScenarios <TestCalculationScenario>(
                calculationScenarios, (scenario, segments) => false);

            // Assert
            CollectionAssert.IsEmpty(relevantScenarios);
            mocks.VerifyAll();
        }
        public void GetTotalContribution_WithCalculationScenarios_ReturnsTotalContribution()
        {
            // Setup
            var calculationScenario1 = new TestCalculationScenario
            {
                Contribution = (RoundedDouble)0.4323
            };
            var calculationScenario2 = new TestCalculationScenario
            {
                Contribution = (RoundedDouble)0.1226
            };

            // Call
            RoundedDouble totalContribution = CalculationScenarioHelper.GetTotalContribution(new[]
            {
                calculationScenario1,
                calculationScenario2
            });

            // Assert
            RoundedDouble expectedTotalContribution = calculationScenario1.Contribution + calculationScenario2.Contribution;

            Assert.AreEqual(expectedTotalContribution, totalContribution);
        }