Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/RingtoetsContextMenuItemFactoryTest.cs =================================================================== diff -u -r09e76611c2a789b6f015368968a18ea5b9b138cc -ra3357275af675af3714fc89b99c554c288759ae2 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/RingtoetsContextMenuItemFactoryTest.cs (.../RingtoetsContextMenuItemFactoryTest.cs) (revision 09e76611c2a789b6f015368968a18ea5b9b138cc) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/RingtoetsContextMenuItemFactoryTest.cs (.../RingtoetsContextMenuItemFactoryTest.cs) (revision a3357275af675af3714fc89b99c554c288759ae2) @@ -22,6 +22,7 @@ using System.Collections.Generic; using System.Linq; using Core.Common.Base; +using Core.Common.Gui.ContextMenu; using Core.Common.TestUtil; using NUnit.Extensions.Forms; using NUnit.Framework; @@ -433,489 +434,510 @@ } [Test] - public void CreatePerformAllCalculationsInGroupItem_GroupWithCalculations_CreatesDecoratedAndEnabledItem() + [TestCase(true)] + [TestCase(false)] + public void CreateToggleRelevancyOfFailureMechanismItem_IsRelevant_CreateDecoratedItem(bool isRelevant) { // Setup var mocks = new MockRepository(); - var failureMechanismMock = mocks.StrictMock(); + var assessmentSectionMock = mocks.StrictMock(); mocks.ReplayAll(); - - var calculation = new TestCalculation(); - var calculationGroup = new CalculationGroup + var failureMechanism = new TestFailureMechanism(Enumerable.Empty()) { - Children = - { - calculation - } + IsRelevant = isRelevant }; - var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock); + var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock); // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => true); + var toolStripItem = RingtoetsContextMenuItemFactory.CreateToggleRelevancyOfFailureMechanismItem(failureMechanismContext, null); // Assert - Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.CalculationGroup_CalculateAll_ToolTip, toolStripItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); + Assert.AreEqual(RingtoetsFormsResources.FailureMechanismContextMenuStrip_Is_relevant, toolStripItem.Text); + Assert.AreEqual(RingtoetsFormsResources.FailureMechanismContextMenuStrip_Is_relevant_Tooltip, toolStripItem.ToolTipText); + var checkboxIcon = isRelevant ? RingtoetsFormsResources.Checkbox_empty : RingtoetsFormsResources.Checkbox_ticked; + TestHelper.AssertImagesAreEqual(checkboxIcon, toolStripItem.Image); Assert.IsTrue(toolStripItem.Enabled); - mocks.VerifyAll(); } [Test] - public void CreatePerformAllCalculationsInGroupItem_GroupWithoutCalculations_CreatesDecoratedAndDisabledItem() + [TestCase(true)] + [TestCase(false)] + public void CreateToggleRelevancyOfFailureMechanismItem_PerformClickOnRelevanceItem_RelevanceChangedAndObserversNotified(bool isRelevant) { // Setup var mocks = new MockRepository(); var failureMechanismMock = mocks.StrictMock(); - + failureMechanismMock.Expect(fm => fm.NotifyObservers()); + failureMechanismMock.Expect(fm => fm.IsRelevant).Return(isRelevant); + failureMechanismMock.Expect(fm => fm.IsRelevant).SetPropertyWithArgument(!isRelevant); + var assessmentSectionMock = mocks.StrictMock(); mocks.ReplayAll(); - var calculationGroup = new CalculationGroup(); - var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock); + var failureMechanismContext = new TestFailureMechanismContext(failureMechanismMock, assessmentSectionMock); + var actionCounter = 0; + var toolStripItem = RingtoetsContextMenuItemFactory.CreateToggleRelevancyOfFailureMechanismItem(failureMechanismContext, context => actionCounter++); // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => true); + toolStripItem.PerformClick(); // Assert - Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.CalculationGroup_CalculateAll_No_calculations_to_run, toolStripItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); - Assert.IsFalse(toolStripItem.Enabled); - + Assert.AreEqual(1, actionCounter); mocks.VerifyAll(); } [Test] - public void CreatePerformAllCalculationsInGroupItem_IsEnabledFuncTrue_CreatesDecoratedAndEnabledItem() + public void CreateClearCalculationOutputItem_CalculationWithOutput_CreatesDecoratedAndEnabledItem() { // Setup var mocks = new MockRepository(); - var failureMechanismMock = mocks.StrictMock(); + var calculationWithOutputMock = mocks.StrictMock(); + calculationWithOutputMock.Expect(c => c.HasOutput).Return(true); + mocks.ReplayAll(); - var calculation = new TestCalculation(); - var calculationGroup = new CalculationGroup - { - Children = - { - calculation - } - }; - var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock); - // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => true); + var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock); // Assert - Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.CalculationGroup_CalculateAll_ToolTip, toolStripItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); + Assert.AreEqual(RingtoetsFormsResources.Clear_output, toolStripItem.Text); + Assert.AreEqual(RingtoetsFormsResources.Clear_output_ToolTip, toolStripItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ClearIcon, toolStripItem.Image); Assert.IsTrue(toolStripItem.Enabled); mocks.VerifyAll(); } [Test] - public void CreatePerformAllCalculationsInGroupItem_IsEnabledFuncFalse_CreatesDecoratedAndDisabledItem() + public void CreateClearCalculationOutputItem_CalculationWithoutOutput_CreatesDecoratedAndDisabledItem() { // Setup var mocks = new MockRepository(); - var failureMechanismMock = mocks.StrictMock(); + var calculationWithOutputMock = mocks.StrictMock(); + calculationWithOutputMock.Expect(c => c.HasOutput).Return(false); + mocks.ReplayAll(); - var calculation = new TestCalculation(); - var calculationGroup = new CalculationGroup - { - Children = - { - calculation - } - }; - var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock); - // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => false); + var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock); // Assert - Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.CalculationGroup_CalculateAll_ToolTip, toolStripItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); + Assert.AreEqual(RingtoetsFormsResources.Clear_output, toolStripItem.Text); + Assert.AreEqual(RingtoetsFormsResources.ClearOutput_No_output_to_clear, toolStripItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ClearIcon, toolStripItem.Image); Assert.IsFalse(toolStripItem.Enabled); mocks.VerifyAll(); } [Test] - public void CreatePerformAllCalculationsInGroupItem_PerformClickOnCreatedItem_PerformAllCalculationMethodPerformed() + public void CreateClearCalculationOutputItem_PerformClickOnCreatedItemAndConfirmChange_CalculationOutputClearedAndObserversNotified() { - // Setup + var messageBoxText = ""; + var messageBoxTitle = ""; var mocks = new MockRepository(); - var calculationMock = mocks.StrictMock(); - var failureMechanisMock = mocks.StrictMock(); + var calculationWithOutputMock = mocks.StrictMock(); + calculationWithOutputMock.Stub(c => c.HasOutput).Return(true); + calculationWithOutputMock.Expect(c => c.ClearOutput()); + calculationWithOutputMock.Expect(c => c.NotifyObservers()); + mocks.ReplayAll(); - var counter = 0; - var calculationGroup = new CalculationGroup + DialogBoxHandler = (name, wnd) => { - Children = - { - calculationMock - } + var messageBox = new MessageBoxTester(wnd); + messageBoxText = messageBox.Text; + messageBoxTitle = messageBox.Title; + + messageBox.ClickOk(); }; - var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanisMock); + var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock); - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, (group, context) => counter++, context => true); - // Call toolStripItem.PerformClick(); // Assert - Assert.AreEqual(1, counter); + Assert.AreEqual(BaseResources.Confirm, messageBoxTitle); + Assert.AreEqual(RingtoetsFormsResources.Calculation_ContextMenuStrip_Are_you_sure_clear_output, messageBoxText); mocks.VerifyAll(); } [Test] - public void CreatePerformAllCalculationsInFailureMechanismItem_FailureMechanismItemWithCalculations_CreatesDecoratedAndEnabledItem() + public void CreateClearCalculationOutputItem_PerformClickOnCreatedItemAndCancelChange_CalculationOutputNotCleared() { - // Setup var mocks = new MockRepository(); - var calculationMock = mocks.StrictMock(); - var assessmentSectionMock = mocks.StrictMock(); + var calculationWithOutputMock = mocks.StrictMock(); + + calculationWithOutputMock.Stub(c => c.HasOutput).Return(true); + mocks.ReplayAll(); - var failureMechanismMock = new TestFailureMechanism(new[] + DialogBoxHandler = (name, wnd) => { - calculationMock - }); - var failureMechanismContext = new TestFailureMechanismContext(failureMechanismMock, assessmentSectionMock); + var messageBox = new MessageBoxTester(wnd); + messageBox.ClickCancel(); + }; + + var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock); + // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, null, context => true); + toolStripItem.PerformClick(); + mocks.VerifyAll(); + } + + #region CreatePerformCalculationItem + + [Test] + public void CreatePerformCalculationItem_AdditionalValidationNull_CreatesEnabledItem() + { + // Setup + var mocks = new MockRepository(); + var failureMechanismMock = mocks.StrictMock(); + + mocks.ReplayAll(); + + var calculation = new TestCalculation(); + var calculationContext = new TestCalculationContext(calculation, failureMechanismMock); + + // Call + StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, null, context => null); + // Assert - Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.Calculate_all_ToolTip, toolStripItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); + Assert.AreEqual(RingtoetsFormsResources.Calculate, toolStripItem.Text); + Assert.AreEqual(RingtoetsFormsResources.Calculate_ToolTip, toolStripItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateIcon, toolStripItem.Image); Assert.IsTrue(toolStripItem.Enabled); + mocks.VerifyAll(); } [Test] - public void CreatePerformAllCalculationsInFailureMechanismItem_FailureMechanismItemWithoutCalculations_CreatesDecoratedAndDisabledItem() + public void CreatePerformCalculationItem_AdditionalValidationContainsMessage_CreatesDisabledItemAndSetMessageInTooltip() { // Setup var mocks = new MockRepository(); - var assessmentSectionMock = mocks.StrictMock(); + var failureMechanismMock = mocks.StrictMock(); + mocks.ReplayAll(); - var failureMechanismMock = new TestFailureMechanism(Enumerable.Empty()); - var failureMechanismContext = new TestFailureMechanismContext(failureMechanismMock, assessmentSectionMock); + var calculation = new TestCalculation(); + var calculationContext = new TestCalculationContext(calculation, failureMechanismMock); + var errorMessage = "Additional check failed."; + // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, null, context => true); + StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, null, context => errorMessage); // Assert - Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.FailureMechanism_CreateCalculateAllItem_No_calculations_to_run, toolStripItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); + Assert.AreEqual(RingtoetsFormsResources.Calculate, toolStripItem.Text); + Assert.AreEqual(errorMessage, toolStripItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateIcon, toolStripItem.Image); Assert.IsFalse(toolStripItem.Enabled); + mocks.VerifyAll(); } [Test] - public void CreatePerformAllCalculationsInFailureMechanismItem_PerformClickOnCreatedItem_PerformAllCalculationMethodPerformed() + public void CreatePerformCalculationItem_PerformClickOnCreatedItem_PerformCalculationMethod() { // Setup var mocks = new MockRepository(); - var calculationMock = mocks.StrictMock(); - var assessmentSectionMock = mocks.StrictMock(); + var failureMechanismMock = mocks.StrictMock(); + mocks.ReplayAll(); + var calculation = new TestCalculation(); + var calculationContext = new TestCalculationContext(calculation, failureMechanismMock); + var counter = 0; - var failureMechanism = new TestFailureMechanism(new[] - { - calculationMock - }); - var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock); - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, fmContext => counter++, context => true); + var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, (calc, context) => counter++, context => null); // Call toolStripItem.PerformClick(); // Assert Assert.AreEqual(1, counter); + mocks.VerifyAll(); } + #endregion + + #region CreatePerformAllCalculationsInGroupItem + [Test] - [TestCase(true)] - [TestCase(false)] - public void CreateToggleRelevancyOfFailureMechanismItem_IsRelevant_CreateDecoratedItem(bool isRelevant) + public void CreatePerformAllCalculationsInGroupItem_GeneralValidationTrueAdditionalValidationNull_CreatesEnabledItem() { // Setup - var mocks = new MockRepository(); - var assessmentSectionMock = mocks.StrictMock(); - - mocks.ReplayAll(); - var failureMechanism = new TestFailureMechanism(Enumerable.Empty()) + var calculation = new TestCalculation(); + var calculationGroup = new CalculationGroup { - IsRelevant = isRelevant + Children = + { + calculation + } }; - var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock); + var failureMechanism = new TestFailureMechanism(new[] + { + calculation + }); + + var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism); + // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreateToggleRelevancyOfFailureMechanismItem(failureMechanismContext, null); + StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => null); // Assert - Assert.AreEqual(RingtoetsFormsResources.FailureMechanismContextMenuStrip_Is_relevant, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.FailureMechanismContextMenuStrip_Is_relevant_Tooltip, toolStripItem.ToolTipText); - var checkboxIcon = isRelevant ? RingtoetsFormsResources.Checkbox_empty : RingtoetsFormsResources.Checkbox_ticked; - TestHelper.AssertImagesAreEqual(checkboxIcon, toolStripItem.Image); + Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); + Assert.AreEqual(RingtoetsFormsResources.CalculationGroup_CalculateAll_ToolTip, toolStripItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); Assert.IsTrue(toolStripItem.Enabled); - mocks.VerifyAll(); } [Test] - [TestCase(true)] - [TestCase(false)] - public void CreateToggleRelevancyOfFailureMechanismItem_PerformClickOnRelevanceItem_RelevanceChangedAndObserversNotified(bool isRelevant) + public void CreatePerformAllCalculationsInGroupItem_GeneralValidationFalseAdditionalValidationNull_CreatesDisabledItemAndSetGeneralValidationMessageTooltip() { // Setup - var mocks = new MockRepository(); - var failureMechanismMock = mocks.StrictMock(); - failureMechanismMock.Expect(fm => fm.NotifyObservers()); - failureMechanismMock.Expect(fm => fm.IsRelevant).Return(isRelevant); - failureMechanismMock.Expect(fm => fm.IsRelevant).SetPropertyWithArgument(!isRelevant); - var assessmentSectionMock = mocks.StrictMock(); - mocks.ReplayAll(); + var failureMechanism = new TestFailureMechanism(Enumerable.Empty()); - var failureMechanismContext = new TestFailureMechanismContext(failureMechanismMock, assessmentSectionMock); - var actionCounter = 0; - var toolStripItem = RingtoetsContextMenuItemFactory.CreateToggleRelevancyOfFailureMechanismItem(failureMechanismContext, context => actionCounter++); + var calculationGroup = new CalculationGroup(); + var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism); // Call - toolStripItem.PerformClick(); + StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => null); // Assert - Assert.AreEqual(1, actionCounter); - mocks.VerifyAll(); + Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); + Assert.AreEqual(RingtoetsFormsResources.CalculationGroup_CalculateAll_No_calculations_to_run, toolStripItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); + Assert.IsFalse(toolStripItem.Enabled); } [Test] - [TestCase(true)] - [TestCase(false)] - public void CreatePerformCalculationItem_IsEnabledFuncConditional_CreatesDecoratedAndConditionalEnabledItem(bool isEnabled) + public void CreatePerformAllCalculationsInGroupItem_GeneralValidationTrueAdditionalValidationContainsMessage_CreatesDisabledItemAndSetMessageInTooltip() { // Setup - var mocks = new MockRepository(); - var failureMechanismMock = mocks.StrictMock(); + var calculation = new TestCalculation(); + var calculationGroup = new CalculationGroup + { + Children = + { + calculation + } + }; - mocks.ReplayAll(); + var failureMechanism = new TestFailureMechanism(new[] + { + calculation + }); - var calculation = new TestCalculation(); - var calculationContext = new TestCalculationContext(calculation, failureMechanismMock); + var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism); + var errorMessage = "Additional check failed."; + // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, null, context => isEnabled); + StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => errorMessage); // Assert - Assert.AreEqual(RingtoetsFormsResources.Calculate, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.Calculate_ToolTip, toolStripItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateIcon, toolStripItem.Image); - Assert.AreEqual(isEnabled, toolStripItem.Enabled); - - mocks.VerifyAll(); + Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); + Assert.AreEqual(errorMessage, toolStripItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); + Assert.IsFalse(toolStripItem.Enabled); } [Test] - public void CreatePerformCalculationItem_PerformClickOnCreatedItem_PerformCalculationMethod() + public void CreatePerformAllCalculationsInGroupItem_GeneralValidationFalseAdditionalValidationContainsMessage_CreatesDisabledItemAndSetGeneralValidationMessageTooltip() { // Setup - var mocks = new MockRepository(); - var failureMechanismMock = mocks.StrictMock(); + var failureMechanism = new TestFailureMechanism(Enumerable.Empty()); - mocks.ReplayAll(); + var calculationGroup = new CalculationGroup(); + var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism); - var calculation = new TestCalculation(); - var calculationContext = new TestCalculationContext(calculation, failureMechanismMock); + var errorMessage = "Additional check failed."; - var counter = 0; - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, (calc, context) => counter++, context => true); - // Call - toolStripItem.PerformClick(); + StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => errorMessage); // Assert - Assert.AreEqual(1, counter); - - mocks.VerifyAll(); + Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); + Assert.AreEqual(RingtoetsFormsResources.CalculationGroup_CalculateAll_No_calculations_to_run, toolStripItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); + Assert.IsFalse(toolStripItem.Enabled); } [Test] - public void CreateClearCalculationOutputItem_CalculationWithOutput_CreatesDecoratedAndEnabledItem() + public void CreatePerformAllCalculationsInGroupItem_PerformClickOnCreatedItem_PerformAllCalculationMethodPerformed() { // Setup - var mocks = new MockRepository(); - var calculationWithOutputMock = mocks.StrictMock(); + var calculation = new TestCalculation(); + var failureMechanism = new TestFailureMechanism(new[] + { + calculation + }); - calculationWithOutputMock.Expect(c => c.HasOutput).Return(true); + var counter = 0; + var calculationGroup = new CalculationGroup + { + Children = + { + calculation + } + }; - mocks.ReplayAll(); + var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism); + var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, (group, context) => counter++, context => null); + // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock); + toolStripItem.PerformClick(); // Assert - Assert.AreEqual(RingtoetsFormsResources.Clear_output, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.Clear_output_ToolTip, toolStripItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ClearIcon, toolStripItem.Image); - Assert.IsTrue(toolStripItem.Enabled); - - mocks.VerifyAll(); + Assert.AreEqual(1, counter); } + #endregion + + #region CreatePerformAllCalculationInFailureMechanismItem + [Test] - public void CreateClearCalculationOutputItem_CalculationWithoutOutput_CreatesDecoratedAndDisabledItem() + public void CreatePerformAllCalculationsInFailureMechanismItem_GeneralValidationTrueAdditionalValidationNull_CreatesEnabledItem() { // Setup var mocks = new MockRepository(); - var calculationWithOutputMock = mocks.StrictMock(); - - calculationWithOutputMock.Expect(c => c.HasOutput).Return(false); - + var assessmentSectionMock = mocks.StrictMock(); mocks.ReplayAll(); + var calculation = new TestCalculation(); + var failureMechanism = new TestFailureMechanism(new[] + { + calculation + }); + var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock); + // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock); + StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, null, context => null); // Assert - Assert.AreEqual(RingtoetsFormsResources.Clear_output, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.ClearOutput_No_output_to_clear, toolStripItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ClearIcon, toolStripItem.Image); - Assert.IsFalse(toolStripItem.Enabled); - + Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); + Assert.AreEqual(RingtoetsFormsResources.Calculate_all_ToolTip, toolStripItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); + Assert.IsTrue(toolStripItem.Enabled); mocks.VerifyAll(); } [Test] - public void CreateClearCalculationOutputItem_PerformClickOnCreatedItemAndConfirmChange_CalculationOutputClearedAndObserversNotified() + public void CreatePerformAllCalculationsInFailureMechanismItem_GeneralValidationFalseAdditionalValidationNull_CreatesDisabledItemAndSetGeneralValidationMessageTooltip() { - var messageBoxText = ""; - var messageBoxTitle = ""; + // Setup var mocks = new MockRepository(); - var calculationWithOutputMock = mocks.StrictMock(); - - calculationWithOutputMock.Stub(c => c.HasOutput).Return(true); - calculationWithOutputMock.Expect(c => c.ClearOutput()); - calculationWithOutputMock.Expect(c => c.NotifyObservers()); - + var assessmentSectionMock = mocks.StrictMock(); mocks.ReplayAll(); - DialogBoxHandler = (name, wnd) => - { - var messageBox = new MessageBoxTester(wnd); - messageBoxText = messageBox.Text; - messageBoxTitle = messageBox.Title; + var failureMechanism = new TestFailureMechanism(Enumerable.Empty()); - messageBox.ClickOk(); - }; + var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock); - var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock); - // Call - toolStripItem.PerformClick(); + StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, null, context => null); // Assert - Assert.AreEqual(BaseResources.Confirm, messageBoxTitle); - Assert.AreEqual(RingtoetsFormsResources.Calculation_ContextMenuStrip_Are_you_sure_clear_output, messageBoxText); - + Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); + Assert.AreEqual(RingtoetsFormsResources.FailureMechanism_CreateCalculateAllItem_No_calculations_to_run, toolStripItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); + Assert.IsFalse(toolStripItem.Enabled); mocks.VerifyAll(); } [Test] - public void CreateClearCalculationOutputItem_PerformClickOnCreatedItemAndCancelChange_CalculationOutputNotCleared() + public void CreatePerformAllCalculationsInFailureMechanismItem_GeneralValidationTrueAdditionalValidationContainsMessage_CreatesDisabledItemAndSetMessageInTooltip() { + // Setup var mocks = new MockRepository(); - var calculationWithOutputMock = mocks.StrictMock(); - - calculationWithOutputMock.Stub(c => c.HasOutput).Return(true); - + var assessmentSectionMock = mocks.StrictMock(); mocks.ReplayAll(); - DialogBoxHandler = (name, wnd) => + var calculation = new TestCalculation(); + + var failureMechanism = new TestFailureMechanism(new[] { - var messageBox = new MessageBoxTester(wnd); + calculation + }); + var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock); - messageBox.ClickCancel(); - }; + var errorMessage = "Additional check failed."; - var toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock); - // Call - toolStripItem.PerformClick(); + StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, null, context => errorMessage); + // Assert + Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); + Assert.AreEqual(errorMessage, toolStripItem.ToolTipText); + TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); + Assert.IsFalse(toolStripItem.Enabled); mocks.VerifyAll(); } [Test] - public void CreatePerformAllCalculationsInFailureMechanismItem_IsEnabledFuncTrue_CreatesDecoratedAndEnabledItem() + public void CreatePerformAllCalculationsInFailureMechanismItem_GeneralValidationFalseAdditionalValidationContainsMessage_CreatesDisabledItemAndSetGeneralValidationMessageTooltip() { // Setup var mocks = new MockRepository(); var assessmentSectionMock = mocks.StrictMock(); - var failureMechanismMock = mocks.StrictMock(); - failureMechanismMock.Expect(fm => fm.Calculations).Return(new[] - { - new TestCalculation() - }); + mocks.ReplayAll(); - var failureMechanismContextMock = mocks.StrictMock>(failureMechanismMock, assessmentSectionMock); + var failureMechanism = new TestFailureMechanism(Enumerable.Empty()); + var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock); - mocks.ReplayAll(); + var errorMessage = "Additional check failed."; // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContextMock, null, context => true); + StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, null, context => errorMessage); // Assert Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.Calculate_all_ToolTip, toolStripItem.ToolTipText); + Assert.AreEqual(RingtoetsFormsResources.FailureMechanism_CreateCalculateAllItem_No_calculations_to_run, toolStripItem.ToolTipText); TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); - Assert.IsTrue(toolStripItem.Enabled); - + Assert.IsFalse(toolStripItem.Enabled); mocks.VerifyAll(); } [Test] - public void CreatePerformAllCalculationsInFailureMechanismItem_IsEnabledFuncFalse_CreatesDecoratedAndDisabledItem() + public void CreatePerformAllCalculationsInFailureMechanismItem_PerformClickOnCreatedItem_PerformAllCalculationMethodPerformed() { // Setup var mocks = new MockRepository(); + var calculationMock = mocks.StrictMock(); var assessmentSectionMock = mocks.StrictMock(); - var failureMechanismMock = mocks.StrictMock(); - - var failureMechanismContextMock = mocks.StrictMock>(failureMechanismMock, assessmentSectionMock); - mocks.ReplayAll(); + var counter = 0; + var failureMechanism = new TestFailureMechanism(new[] + { + calculationMock + }); + var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock); + var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, fmContext => counter++, context => null); + // Call - var toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContextMock, null, context => false); + toolStripItem.PerformClick(); // Assert - Assert.AreEqual(RingtoetsFormsResources.Calculate_all, toolStripItem.Text); - Assert.AreEqual(RingtoetsFormsResources.Calculate_all_ToolTip, toolStripItem.ToolTipText); - TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image); - Assert.IsFalse(toolStripItem.Enabled); - + Assert.AreEqual(1, counter); mocks.VerifyAll(); } + #endregion + # region Nested types private class TestFailureMechanismContext : FailureMechanismContext