public void Assemble_KernelThrowsAssemblyException_ThrowsFailureMechanismAssemblyCalculatorException() { // Setup var random = new Random(21); using (new AssemblyToolKernelFactoryConfig()) { var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance; FailureMechanismAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismAssemblyKernel; kernel.ThrowAssemblyExceptionOnCalculate = true; var calculator = new FailureMechanismAssemblyCalculator(factory); // Call void Call() => calculator.Assemble(random.NextDouble(), Enumerable.Empty <RiskeerFailureMechanismSectionAssemblyResult>(), random.NextBoolean()); // Assert Assert.IsFalse(kernel.Calculated); var exception = Assert.Throws <FailureMechanismAssemblyCalculatorException>(Call); var innerException = exception.InnerException as AssemblyException; Assert.IsNotNull(innerException); Assert.AreEqual(AssemblyErrorMessageCreator.CreateErrorMessage(innerException.Errors), exception.Message); } }
public void Assemble_WithInvalidInput_ThrowsFailureMechanismAssemblyCalculatorException() { // Setup var random = new Random(21); double probability = random.NextDouble(); var invalidInput = new RiskeerFailureMechanismSectionAssemblyResult(probability, probability, random.NextDouble(), (FailureMechanismSectionAssemblyGroup)99); using (new AssemblyToolKernelFactoryConfig()) { var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance; FailureMechanismAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismAssemblyKernel; var calculator = new FailureMechanismAssemblyCalculator(factory); // Call void Call() => calculator.Assemble(random.NextDouble(), new[] { invalidInput }, random.NextBoolean()); // Assert Assert.IsFalse(kernel.Calculated); var exception = Assert.Throws <FailureMechanismAssemblyCalculatorException>(Call); Assert.IsInstanceOf <Exception>(exception.InnerException); Assert.AreEqual(AssemblyErrorMessageCreator.CreateGenericErrorMessage(), exception.Message); } }
public void Assemble_WithValidInputAndApplyLengthEffectFalse_SendsCorrectInputToKernel() { // Setup var random = new Random(21); double failureMechanismN = random.NextDouble(); RiskeerFailureMechanismSectionAssemblyResult[] sectionAssemblyResults = { CreateSectionAssemblyResult(random.Next()), CreateSectionAssemblyResult(random.Next()) }; using (new AssemblyToolKernelFactoryConfig()) { var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance; FailureMechanismAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismAssemblyKernel; kernel.ProbabilityResult = new FailureMechanismAssemblyResult(new Probability(random.NextDouble()), EFailureMechanismAssemblyMethod.Correlated); var calculator = new FailureMechanismAssemblyCalculator(factory); // Call calculator.Assemble(failureMechanismN, sectionAssemblyResults, false); // Assert Assert.AreEqual(failureMechanismN, kernel.LenghtEffectFactor); Assert.IsFalse(kernel.PartialAssembly); CollectionAssert.AreEqual(sectionAssemblyResults.Select(r => new Probability(r.SectionProbability)), kernel.FailureMechanismSectionProbabilities); } }
public void Assemble_SectionAssemblyResultsNull_ThrowsArgumentNullException() { // Setup var random = new Random(21); var mocks = new MockRepository(); var kernelFactory = mocks.Stub <IAssemblyToolKernelFactory>(); mocks.ReplayAll(); var calculator = new FailureMechanismAssemblyCalculator(kernelFactory); // Call void Call() => calculator.Assemble(random.NextDouble(), null, random.NextBoolean()); // Assert var exception = Assert.Throws <ArgumentNullException>(Call); Assert.AreEqual("sectionAssemblyResults", exception.ParamName); mocks.VerifyAll(); }
public void Assemble_WithValidInputAndApplyLengthEffectTrue_SendsCorrectInputToKernel() { // Setup var random = new Random(21); double failureMechanismN = random.NextDouble(); RiskeerFailureMechanismSectionAssemblyResult[] sectionAssemblyResults = { CreateSectionAssemblyResult(random.Next()), CreateSectionAssemblyResult(random.Next()) }; using (new AssemblyToolKernelFactoryConfig()) { var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance; FailureMechanismAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismAssemblyKernel; kernel.ProbabilityResult = new FailureMechanismAssemblyResult(new Probability(random.NextDouble()), EFailureMechanismAssemblyMethod.Correlated); var calculator = new FailureMechanismAssemblyCalculator(factory); // Call calculator.Assemble(failureMechanismN, sectionAssemblyResults, true); // Assert Assert.AreEqual(failureMechanismN, kernel.LenghtEffectFactor); Assert.IsFalse(kernel.PartialAssembly); Assert.AreEqual(sectionAssemblyResults.Length, kernel.FailureMechanismSectionAssemblyResults.Count()); for (var i = 0; i < sectionAssemblyResults.Length; i++) { RiskeerFailureMechanismSectionAssemblyResult expected = sectionAssemblyResults.ElementAt(i); ResultWithProfileAndSectionProbabilities actual = kernel.FailureMechanismSectionAssemblyResults.ElementAt(i); ProbabilityAssert.AreEqual(expected.ProfileProbability, actual.ProbabilityProfile); ProbabilityAssert.AreEqual(expected.SectionProbability, actual.ProbabilitySection); } } }
public void Assemble_WithValidOutput_ReturnsExpectedOutput(bool applyLengthEffect, AssemblyMethod expectedAssemblyMethod) { // Setup var random = new Random(21); using (new AssemblyToolKernelFactoryConfig()) { var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance; FailureMechanismAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismAssemblyKernel; var output = new FailureMechanismAssemblyResult(new Probability(random.NextDouble()), EFailureMechanismAssemblyMethod.Correlated); kernel.ProbabilityResult = output; var calculator = new FailureMechanismAssemblyCalculator(factory); // Call FailureMechanismAssemblyResultWrapper assemblyResultWrapper = calculator.Assemble(random.NextDouble(), Enumerable.Empty <RiskeerFailureMechanismSectionAssemblyResult>(), applyLengthEffect); // Assert Assert.IsTrue(kernel.Calculated); ProbabilityAssert.AreEqual(assemblyResultWrapper.AssemblyResult, output.Probability); Assert.AreEqual(assemblyResultWrapper.AssemblyMethod, expectedAssemblyMethod); } }