public void CalculateProfileProbability_MultipleScenarios_ReturnsValueBasedOnRelevantScenarios() { // Setup FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var sectionResult = new AdoptableWithProfileProbabilityFailureMechanismSectionResult(section); const double factorOfStability1 = 1.0 / 10.0; const double factorOfStability2 = 1.0 / 20.0; MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario1 = MacroStabilityInwardsCalculationScenarioTestFactory.CreateMacroStabilityInwardsCalculationScenario(factorOfStability1, section); MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario2 = MacroStabilityInwardsCalculationScenarioTestFactory.CreateMacroStabilityInwardsCalculationScenario(factorOfStability2, section); MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario3 = MacroStabilityInwardsCalculationScenarioTestFactory.CreateIrrelevantMacroStabilityInwardsCalculationScenario(section); macroStabilityInwardsCalculationScenario1.Contribution = (RoundedDouble)0.2111; macroStabilityInwardsCalculationScenario2.Contribution = (RoundedDouble)0.7889; MacroStabilityInwardsCalculationScenario[] calculations = { macroStabilityInwardsCalculationScenario1, macroStabilityInwardsCalculationScenario2, macroStabilityInwardsCalculationScenario3 }; var strategy = new MacroStabilityInwardsFailureMechanismSectionResultCalculateProbabilityStrategy( sectionResult, calculations, new MacroStabilityInwardsFailureMechanism()); // Call double profileProbability = strategy.CalculateProfileProbability(); // Assert Assert.AreEqual(0.99012835, profileProbability, 1e-8); }
public void GetInitialFailureMechanismResultProbability_MultipleScenarios_ReturnsValueBasedOnRelevantScenarios() { // Setup FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var failureMechanismSectionResult = new AdoptableWithProfileProbabilityFailureMechanismSectionResult(section); const double factorOfStability1 = 1.0 / 10.0; const double factorOfStability2 = 1.0 / 20.0; MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario1 = MacroStabilityInwardsCalculationScenarioTestFactory.CreateMacroStabilityInwardsCalculationScenario(factorOfStability1, section); MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario2 = MacroStabilityInwardsCalculationScenarioTestFactory.CreateMacroStabilityInwardsCalculationScenario(factorOfStability2, section); MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario3 = MacroStabilityInwardsCalculationScenarioTestFactory.CreateIrrelevantMacroStabilityInwardsCalculationScenario(section); macroStabilityInwardsCalculationScenario1.Contribution = (RoundedDouble)0.2111; macroStabilityInwardsCalculationScenario2.Contribution = (RoundedDouble)0.7889; MacroStabilityInwardsCalculationScenario[] calculations = { macroStabilityInwardsCalculationScenario1, macroStabilityInwardsCalculationScenario2, macroStabilityInwardsCalculationScenario3 }; // Call double initialFailureMechanismResultProbability = failureMechanismSectionResult.GetInitialFailureMechanismResultProbability(calculations, 1.1); // Assert Assert.AreEqual(0.99052414832077185, initialFailureMechanismResultProbability); }
private static MacroStabilityInwardsFailureMechanismSectionResultCalculateProbabilityStrategy CreateStrategyForMultipleScenarios(FailureMechanismSection section) { var sectionResult = new AdoptableWithProfileProbabilityFailureMechanismSectionResult(section); const double factorOfStability1 = 1.0 / 10.0; const double factorOfStability2 = 1.0 / 20.0; MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario1 = MacroStabilityInwardsCalculationScenarioTestFactory.CreateMacroStabilityInwardsCalculationScenario(factorOfStability1, section); MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario2 = MacroStabilityInwardsCalculationScenarioTestFactory.CreateMacroStabilityInwardsCalculationScenario(factorOfStability2, section); MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario3 = MacroStabilityInwardsCalculationScenarioTestFactory.CreateIrrelevantMacroStabilityInwardsCalculationScenario(section); macroStabilityInwardsCalculationScenario1.Contribution = (RoundedDouble)0.2111; macroStabilityInwardsCalculationScenario2.Contribution = (RoundedDouble)0.7889; MacroStabilityInwardsCalculationScenario[] calculations = { macroStabilityInwardsCalculationScenario1, macroStabilityInwardsCalculationScenario2, macroStabilityInwardsCalculationScenario3 }; return(new MacroStabilityInwardsFailureMechanismSectionResultCalculateProbabilityStrategy( sectionResult, calculations, new MacroStabilityInwardsFailureMechanism())); }
public void GetInitialFailureMechanismResultProbability_NoRelevantScenarios_ReturnsNaN() { // Setup FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var failureMechanismSectionResult = new AdoptableWithProfileProbabilityFailureMechanismSectionResult(section); MacroStabilityInwardsCalculationScenario calculationScenario = MacroStabilityInwardsCalculationScenarioTestFactory.CreateIrrelevantMacroStabilityInwardsCalculationScenario(section); MacroStabilityInwardsCalculationScenario[] calculationScenarios = { calculationScenario }; // Call double initialFailureMechanismResultProbability = failureMechanismSectionResult.GetInitialFailureMechanismResultProbability(calculationScenarios, 0.1); // Assert Assert.IsNaN(initialFailureMechanismResultProbability); }