Index: Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/FailureMechanismAssemblyResultWithProbabilityControlTester.cs =================================================================== diff -u -r50b3a6c556aace513b84909963bbc0ad37ee4374 -ra09c9d7f2bb8b72067389c66bb03a086e07f6093 --- Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/FailureMechanismAssemblyResultWithProbabilityControlTester.cs (.../FailureMechanismAssemblyResultWithProbabilityControlTester.cs) (revision 50b3a6c556aace513b84909963bbc0ad37ee4374) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.TestUtil/FailureMechanismAssemblyResultWithProbabilityControlTester.cs (.../FailureMechanismAssemblyResultWithProbabilityControlTester.cs) (revision a09c9d7f2bb8b72067389c66bb03a086e07f6093) @@ -22,6 +22,7 @@ using System.Drawing; using System.Linq; using System.Windows.Forms; +using Core.Common.Util.Reflection; using NUnit.Extensions.Forms; using NUnit.Framework; using Ringtoets.AssemblyTool.Data; @@ -88,10 +89,64 @@ } [Test] - public void GivenFailureMechanismResultsView_WhenResultChangedAndSectionResultNotified_FailureMechanismAssemblyResultUpdated() + public void GivenFailureMechanismResultsView_WhenNoExceptionThrownByCalculator_ErrorSetToControl() { // Given var failureMechanism = new TFailureMechanism(); + + using (new AssemblyToolCalculatorFactoryConfig()) + using (ShowFailureMechanismResultsView(failureMechanism)) + { + // Precondition + FailureMechanismAssemblyControl assemblyControl = GetFailureMechanismAssemblyControl(); + ErrorProvider errorProvider = GetErrorProvider(assemblyControl); + Assert.IsEmpty(errorProvider.GetError(assemblyControl)); + + // When + var calculatorfactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + FailureMechanismAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismAssemblyCalculator; + calculator.ThrowExceptionOnCalculate = true; + failureMechanism.NotifyObservers(); + + // Then + Assert.AreEqual("Message", errorProvider.GetError(assemblyControl)); + } + } + + [Test] + public void GivenFailureMechanismResultsView_WhenNoExceptionThrownByCalculator_ErrorCleared() + { + // Given + var failureMechanism = new TFailureMechanism(); + + using (new AssemblyToolCalculatorFactoryConfig()) + using (ShowFailureMechanismResultsView(failureMechanism)) + { + var calculatorfactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + FailureMechanismAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismAssemblyCalculator; + + calculator.ThrowExceptionOnCalculate = true; + failureMechanism.NotifyObservers(); + + // Precondition + FailureMechanismAssemblyControl assemblyControl = GetFailureMechanismAssemblyControl(); + ErrorProvider errorProvider = GetErrorProvider(assemblyControl); + Assert.AreEqual("Message", errorProvider.GetError(assemblyControl)); + + // When + calculator.ThrowExceptionOnCalculate = false; + failureMechanism.NotifyObservers(); + + // Then + Assert.IsEmpty(errorProvider.GetError(assemblyControl)); + } + } + + [Test] + public void GivenFailureMechanismResultsViewWithAssemblyResult_WhenFailureMechanismAssemblyResultChangedAndSectionResultNotified_FailureMechanismAssemblyResultUpdated() + { + // Given + var failureMechanism = new TFailureMechanism(); failureMechanism.AddSection(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); using (new AssemblyToolCalculatorFactoryConfig()) @@ -102,23 +157,21 @@ BorderedLabel assemblyProbabilityLabel = GetProbabilityLabelControl(); Assert.AreEqual("1/1", assemblyProbabilityLabel.Text); Assert.AreEqual("IIIt", assemblyGroupLabel.Text); - Assert.AreEqual(Color.FromArgb(255, 255, 0), assemblyGroupLabel.BackColor); // When var calculatorfactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismAssemblyCalculator; calculator.FailureMechanismAssemblyOutput = new FailureMechanismAssembly(0.5, FailureMechanismAssemblyCategoryGroup.VIt); failureMechanism.SectionResults.Single().NotifyObservers(); - // Assert + // Then Assert.AreEqual("1/2", assemblyProbabilityLabel.Text); Assert.AreEqual("VIt", assemblyGroupLabel.Text); - Assert.AreEqual(Color.FromArgb(255, 0, 0), assemblyGroupLabel.BackColor); } } [Test] - public void GivenFailureMechanismResultsView_WhenResultChangedAndCalculationNotified_FailureMechanismAssemblyResultUpdated() + public void GivenFailureMechanismResultsViewWithAssemblyResult_WhenFailureMechanismAssemblyResultChangedAndCalculationNotified_FailureMechanismAssemblyResultUpdated() { // Given var failureMechanism = new TFailureMechanism(); @@ -133,23 +186,21 @@ BorderedLabel assemblyProbabilityLabel = GetProbabilityLabelControl(); Assert.AreEqual("1/1", assemblyProbabilityLabel.Text); Assert.AreEqual("IIIt", assemblyGroupLabel.Text); - Assert.AreEqual(Color.FromArgb(255, 255, 0), assemblyGroupLabel.BackColor); // When var calculatorfactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismAssemblyCalculator; calculator.FailureMechanismAssemblyOutput = new FailureMechanismAssembly(0.5, FailureMechanismAssemblyCategoryGroup.VIt); calculation.NotifyObservers(); - // Assert + // Then Assert.AreEqual("1/2", assemblyProbabilityLabel.Text); Assert.AreEqual("VIt", assemblyGroupLabel.Text); - Assert.AreEqual(Color.FromArgb(255, 0, 0), assemblyGroupLabel.BackColor); } } [Test] - public void GivenFailureMechanismResultsView_WhenResultChangedAndCalculationInputNotified_FailureMechanismAssemblyResultUpdated() + public void GivenFailureMechanismResultsViewWithAssemblyResult_WhenFailureMechanismAssemblyResultChangedAndCalculationInputNotified_FailureMechanismAssemblyResultUpdated() { // Given var failureMechanism = new TFailureMechanism(); @@ -164,18 +215,16 @@ BorderedLabel assemblyProbabilityLabel = GetProbabilityLabelControl(); Assert.AreEqual("1/1", assemblyProbabilityLabel.Text); Assert.AreEqual("IIIt", assemblyGroupLabel.Text); - Assert.AreEqual(Color.FromArgb(255, 255, 0), assemblyGroupLabel.BackColor); // When var calculatorfactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; FailureMechanismAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismAssemblyCalculator; calculator.FailureMechanismAssemblyOutput = new FailureMechanismAssembly(0.5, FailureMechanismAssemblyCategoryGroup.VIt); - GetInput(failureMechanism.CalculationsGroup.Children.Cast().Single()).NotifyObservers(); + GetInput(calculation).NotifyObservers(); - // Assert + // Then Assert.AreEqual("1/2", assemblyProbabilityLabel.Text); Assert.AreEqual("VIt", assemblyGroupLabel.Text); - Assert.AreEqual(Color.FromArgb(255, 0, 0), assemblyGroupLabel.BackColor); } } @@ -210,6 +259,16 @@ return (BorderedLabel) new ControlTester("ProbabilityLabel").TheObject; } + private static ErrorProvider GetErrorProvider(FailureMechanismAssemblyControl control) + { + return TypeUtils.GetField(control, "ErrorProvider"); + } + + private static FailureMechanismAssemblyControl GetFailureMechanismAssemblyControl() + { + return (FailureMechanismAssemblyControl) ((TableLayoutPanel) new ControlTester("TableLayoutPanel").TheObject).GetControlFromPosition(1, 0); + } + private TView ShowFailureMechanismResultsView(TFailureMechanism failureMechanism) { TView failureMechanismResultView = CreateResultView(failureMechanism);