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); }
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); }
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); }
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(); }
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); }