// Copyright (C) Stichting Deltares 2017. All rights reserved.
//
// This file is part of Ringtoets.
//
// Ringtoets is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System;
using System.Drawing;
using System.Linq;
using Core.Common.Base;
using Core.Common.Gui;
using Core.Common.Gui.ContextMenu;
using Core.Common.TestUtil;
using NUnit.Extensions.Forms;
using NUnit.Framework;
using Rhino.Mocks;
using Ringtoets.Common.Data;
using Ringtoets.Common.Data.AssessmentSection;
using Ringtoets.Common.Data.Calculation;
using Ringtoets.Common.Data.DikeProfiles;
using Ringtoets.Common.Data.FailureMechanism;
using Ringtoets.Common.Data.TestUtil;
using Ringtoets.Common.Forms.PresentationObjects;
using Ringtoets.Common.Forms.TreeNodeInfos;
using RingtoetsFormsResources = Ringtoets.Common.Forms.Properties.Resources;
namespace Ringtoets.Common.Forms.Test.TreeNodeInfos
{
[TestFixture]
public class RingtoetsContextMenuItemFactoryTest : NUnitFormTest
{
[Test]
public void CreateAddCalculationGroupItem_Always_CreatesDecoratedItem()
{
// Setup
var calculationGroup = new CalculationGroup();
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateAddCalculationGroupItem(calculationGroup);
// Assert
Assert.AreEqual("&Map toevoegen", toolStripItem.Text);
Assert.AreEqual("Voeg een nieuwe berekeningsmap toe aan deze berekeningsmap.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.AddFolderIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
}
[Test]
public void CreateAddCalculationGroupItem_PerformClickOnCreatedItem_CalculationGroupWithUniqueNameAdded()
{
// Setup
var calculationGroup = new CalculationGroup
{
Children =
{
new CalculationGroup()
}
};
// Precondition
Assert.AreEqual(1, calculationGroup.Children.Count);
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateAddCalculationGroupItem(calculationGroup);
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreEqual(2, calculationGroup.Children.Count);
var newGroup = calculationGroup.Children[1] as CalculationGroup;
Assert.IsNotNull(newGroup);
Assert.AreEqual("Nieuwe map (1)", newGroup.Name);
}
[Test]
public void CreateAddCalculationItem_Always_CreatesDecoratedItem()
{
// Setup
var mocks = new MockRepository();
var failureMechanismMock = mocks.StrictMock();
mocks.ReplayAll();
var calculationGroup = new CalculationGroup();
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock);
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateAddCalculationItem(calculationGroupContext, context => {});
// Assert
Assert.AreEqual("Berekening &toevoegen", toolStripItem.Text);
Assert.AreEqual("Voeg een nieuwe berekening toe aan deze berekeningsmap.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.FailureMechanismIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateAddCalculationItem_PerformClickOnCreatedItem_AddCalculationMethodPerformed()
{
// Setup
var mocks = new MockRepository();
var failureMechanismMock = mocks.StrictMock();
mocks.ReplayAll();
var counter = 0;
var calculationGroup = new CalculationGroup();
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanismMock);
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateAddCalculationItem(calculationGroupContext, context => counter++);
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreEqual(1, counter);
mocks.VerifyAll();
}
[Test]
public void CreateClearAllCalculationOutputInGroupItem_GroupWithCalculationOutput_CreatesDecoratedAndEnabledItem()
{
// Setup
var mocks = new MockRepository();
var calculationWithOutputMock = mocks.StrictMock();
calculationWithOutputMock.Expect(c => c.HasOutput).Return(true);
mocks.ReplayAll();
var calculationGroup = new CalculationGroup
{
Children =
{
calculationWithOutputMock
}
};
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
// Assert
Assert.AreEqual("&Wis alle uitvoer...", toolStripItem.Text);
Assert.AreEqual("Wis de uitvoer van alle berekeningen binnen deze berekeningsmap.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ClearIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateClearAllCalculationOutputInGroupItem_GroupWithoutCalculationOutput_CreatesDecoratedAndDisabledItem()
{
// Setup
var mocks = new MockRepository();
var calculationWithoutOutputMock = mocks.StrictMock();
calculationWithoutOutputMock.Expect(c => c.HasOutput).Return(false);
mocks.ReplayAll();
var calculationGroup = new CalculationGroup
{
Children =
{
calculationWithoutOutputMock
}
};
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
// Assert
Assert.AreEqual("&Wis alle uitvoer...", toolStripItem.Text);
Assert.AreEqual("Er zijn geen berekeningen met uitvoer om te wissen.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ClearIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateClearAllCalculationOutputInGroupItem_PerformClickOnCreatedItemAndConfirmChange_CalculationOutputClearedAndObserversNotified()
{
var messageBoxText = "";
var messageBoxTitle = "";
var mocks = new MockRepository();
var calculationWithOutputMock1 = mocks.StrictMock();
var calculationWithOutputMock2 = mocks.StrictMock();
var calculationWithoutOutputMock = mocks.StrictMock();
calculationWithOutputMock1.Stub(c => c.HasOutput).Return(true);
calculationWithOutputMock2.Stub(c => c.HasOutput).Return(true);
calculationWithoutOutputMock.Stub(c => c.HasOutput).Return(false);
calculationWithOutputMock1.Expect(c => c.ClearOutput());
calculationWithOutputMock1.Expect(c => c.NotifyObservers());
calculationWithOutputMock2.Expect(c => c.ClearOutput());
calculationWithOutputMock2.Expect(c => c.NotifyObservers());
mocks.ReplayAll();
DialogBoxHandler = (name, wnd) =>
{
var messageBox = new MessageBoxTester(wnd);
messageBoxText = messageBox.Text;
messageBoxTitle = messageBox.Title;
messageBox.ClickOk();
};
var calculationGroup = new CalculationGroup
{
Children =
{
calculationWithOutputMock1,
new CalculationGroup
{
Children =
{
calculationWithOutputMock2,
calculationWithoutOutputMock
}
}
}
};
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreEqual("Bevestigen", messageBoxTitle);
Assert.AreEqual("Weet u zeker dat u alle uitvoer wilt wissen?", messageBoxText);
mocks.VerifyAll();
}
[Test]
public void CreateClearAllCalculationOutputInGroupItem_PerformClickOnCreatedItemAndCancelChange_CalculationOutputNotCleared()
{
var mocks = new MockRepository();
var calculationWithOutputMock1 = mocks.StrictMock();
var calculationWithOutputMock2 = mocks.StrictMock();
var calculationWithoutOutputMock = mocks.StrictMock();
calculationWithOutputMock1.Stub(c => c.HasOutput).Return(true);
calculationWithOutputMock2.Stub(c => c.HasOutput).Return(true);
calculationWithoutOutputMock.Stub(c => c.HasOutput).Return(false);
mocks.ReplayAll();
DialogBoxHandler = (name, wnd) =>
{
var messageBox = new MessageBoxTester(wnd);
messageBox.ClickCancel();
};
var calculationGroup = new CalculationGroup
{
Children =
{
calculationWithOutputMock1,
new CalculationGroup
{
Children =
{
calculationWithOutputMock2,
calculationWithoutOutputMock
}
}
}
};
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInGroupItem(calculationGroup);
// Call
toolStripItem.PerformClick();
// Assert
mocks.VerifyAll();
}
[Test]
public void CreateClearAllCalculationOutputInFailureMechanismItem_FailureMechanismWithCalculationOutput_CreatesDecoratedAndEnabledItem()
{
// Setup
var mocks = new MockRepository();
var calculationWithOutputMock = mocks.StrictMock();
calculationWithOutputMock.Expect(c => c.HasOutput).Return(true);
var failureMechanismMock = mocks.StrictMock();
failureMechanismMock.Expect(fm => fm.Calculations).Return(new[]
{
calculationWithOutputMock
});
mocks.ReplayAll();
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInFailureMechanismItem(failureMechanismMock);
// Assert
Assert.AreEqual("&Wis alle uitvoer...", toolStripItem.Text);
Assert.AreEqual("Wis de uitvoer van alle berekeningen binnen dit toetsspoor.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ClearIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateClearAllCalculationOutputInFailureMechanismItem_FailureMechanismWithoutCalculationOutput_CreatesDecoratedAndDisabledItem()
{
// Setup
var mocks = new MockRepository();
var calculationWithoutOutputMock = mocks.StrictMock();
calculationWithoutOutputMock.Expect(c => c.HasOutput).Return(false);
var failureMechanismMock = mocks.StrictMock();
failureMechanismMock.Expect(fm => fm.Calculations).Return(new[]
{
calculationWithoutOutputMock
});
mocks.ReplayAll();
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInFailureMechanismItem(failureMechanismMock);
// Assert
Assert.AreEqual("&Wis alle uitvoer...", toolStripItem.Text);
Assert.AreEqual("Er zijn geen berekeningen met uitvoer om te wissen.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ClearIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateClearAllCalculationOutputInFailureMechanismItem_PerformClickOnCreatedItemAndConfirmChange_CalculationOutputClearedAndObserversNotified()
{
// Setup
var mocks = new MockRepository();
var calculationWithOutputMock1 = mocks.StrictMock();
var calculationWithOutputMock2 = mocks.StrictMock();
var calculationWithoutOutputMock = mocks.StrictMock();
calculationWithOutputMock1.Stub(c => c.HasOutput).Return(true);
calculationWithOutputMock2.Stub(c => c.HasOutput).Return(true);
calculationWithoutOutputMock.Stub(c => c.HasOutput).Return(false);
calculationWithOutputMock1.Expect(c => c.ClearOutput());
calculationWithOutputMock1.Expect(c => c.NotifyObservers());
calculationWithOutputMock2.Expect(c => c.ClearOutput());
calculationWithOutputMock2.Expect(c => c.NotifyObservers());
var failureMechanism = new TestFailureMechanism(new[]
{
calculationWithOutputMock1,
calculationWithOutputMock2,
calculationWithoutOutputMock
});
mocks.ReplayAll();
DialogBoxHandler = (name, wnd) =>
{
var messageBox = new MessageBoxTester(wnd);
messageBox.ClickOk();
};
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInFailureMechanismItem(failureMechanism);
// Call
toolStripItem.PerformClick();
// Assert
mocks.VerifyAll();
}
[Test]
public void CreateClearAllCalculationOutputInFailureMechanismItem_PerformClickOnCreatedItemAndCancelChange_CalculationOutputNotCleared()
{
// Setup
var mocks = new MockRepository();
var calculationWithOutputMock1 = mocks.StrictMock();
var calculationWithOutputMock2 = mocks.StrictMock();
var calculationWithoutOutputMock = mocks.StrictMock();
calculationWithOutputMock1.Stub(c => c.HasOutput).Return(true);
calculationWithOutputMock2.Stub(c => c.HasOutput).Return(true);
calculationWithoutOutputMock.Stub(c => c.HasOutput).Return(false);
var failureMechanismMock = mocks.StrictMock();
failureMechanismMock.Expect(fm => fm.Calculations).Return(new[]
{
calculationWithOutputMock1,
calculationWithOutputMock2,
calculationWithoutOutputMock
});
mocks.ReplayAll();
DialogBoxHandler = (name, wnd) =>
{
var messageBox = new MessageBoxTester(wnd);
messageBox.ClickCancel();
};
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearAllCalculationOutputInFailureMechanismItem(failureMechanismMock);
// Call
toolStripItem.PerformClick();
// Assert
mocks.VerifyAll();
}
[Test]
[TestCase(true)]
[TestCase(false)]
public void CreateToggleRelevancyOfFailureMechanismItem_IsRelevant_CreateDecoratedItem(bool isRelevant)
{
// Setup
var mocks = new MockRepository();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var failureMechanism = new TestFailureMechanism(Enumerable.Empty())
{
IsRelevant = isRelevant
};
var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock);
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateToggleRelevancyOfFailureMechanismItem(failureMechanismContext, null);
// Assert
Assert.AreEqual("I&s relevant", toolStripItem.Text);
Assert.AreEqual("Geeft aan of dit toetsspoor relevant is of niet.", toolStripItem.ToolTipText);
Bitmap checkboxIcon = isRelevant ? RingtoetsFormsResources.Checkbox_ticked : RingtoetsFormsResources.Checkbox_empty;
TestHelper.AssertImagesAreEqual(checkboxIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
[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 failureMechanismContext = new TestFailureMechanismContext(failureMechanismMock, assessmentSectionMock);
var actionCounter = 0;
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateToggleRelevancyOfFailureMechanismItem(failureMechanismContext, context => actionCounter++);
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreEqual(1, actionCounter);
mocks.VerifyAll();
}
[Test]
public void CreateClearCalculationOutputItem_CalculationWithOutput_CreatesDecoratedAndEnabledItem()
{
// Setup
var mocks = new MockRepository();
var calculationWithOutputMock = mocks.StrictMock();
calculationWithOutputMock.Expect(c => c.HasOutput).Return(true);
mocks.ReplayAll();
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock);
// Assert
Assert.AreEqual("&Wis uitvoer...", toolStripItem.Text);
Assert.AreEqual("Wis de uitvoer van deze berekening.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ClearIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateClearCalculationOutputItem_CalculationWithoutOutput_CreatesDecoratedAndDisabledItem()
{
// Setup
var mocks = new MockRepository();
var calculationWithOutputMock = mocks.StrictMock();
calculationWithOutputMock.Expect(c => c.HasOutput).Return(false);
mocks.ReplayAll();
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock);
// Assert
Assert.AreEqual("&Wis uitvoer...", toolStripItem.Text);
Assert.AreEqual("Deze berekening heeft geen uitvoer om te wissen.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ClearIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateClearCalculationOutputItem_PerformClickOnCreatedItemAndConfirmChange_CalculationOutputClearedAndObserversNotified()
{
var messageBoxText = "";
var messageBoxTitle = "";
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());
mocks.ReplayAll();
DialogBoxHandler = (name, wnd) =>
{
var messageBox = new MessageBoxTester(wnd);
messageBoxText = messageBox.Text;
messageBoxTitle = messageBox.Title;
messageBox.ClickOk();
};
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock);
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreEqual("Bevestigen", messageBoxTitle);
Assert.AreEqual("Weet u zeker dat u de uitvoer van deze berekening wilt wissen?", messageBoxText);
mocks.VerifyAll();
}
[Test]
public void CreateClearCalculationOutputItem_PerformClickOnCreatedItemAndCancelChange_CalculationOutputNotCleared()
{
var mocks = new MockRepository();
var calculationWithOutputMock = mocks.StrictMock();
calculationWithOutputMock.Stub(c => c.HasOutput).Return(true);
mocks.ReplayAll();
DialogBoxHandler = (name, wnd) =>
{
var messageBox = new MessageBoxTester(wnd);
messageBox.ClickCancel();
};
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateClearCalculationOutputItem(calculationWithOutputMock);
// Call
toolStripItem.PerformClick();
mocks.VerifyAll();
}
#region CreateUpdateForshoreProfileOfCalculationItem
[Test]
public void CreateUpdateForshoreProfileOfCalculationItem_WithoutForeshoreProfile_CreatesDisabledItem()
{
// Setup
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock>();
calculationMock.Expect(c => c.InputParameters.ForeshoreProfile).Return(null);
var inquiryHelperMock = mocks.StrictMock();
mocks.ReplayAll();
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateUpdateForshoreProfileOfCalculationItem(
calculationMock,
inquiryHelperMock, c => {});
// Assert
Assert.AreEqual("&Bijwerken voorlandprofiel...", toolStripItem.Text);
Assert.AreEqual("Er moet een voorlandprofiel geselecteerd zijn.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.UpdateItemIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateUpdateForshoreProfileOfCalculationItem_WithForeshoreProfile_CreatesEnabledItem()
{
// Setup
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock>();
var input = mocks.StrictMock();
input.Expect(i => i.ForeshoreProfile).Return(new TestForeshoreProfile());
input.Expect(i => i.IsForeshoreProfileInputSynchronized).Return(false);
calculationMock.Expect(c => c.InputParameters).Return(input);
var inquiryHelperMock = mocks.StrictMock();
mocks.ReplayAll();
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateUpdateForshoreProfileOfCalculationItem(
calculationMock,
inquiryHelperMock, c => {});
// Assert
Assert.AreEqual("&Bijwerken voorlandprofiel...", toolStripItem.Text);
Assert.AreEqual("Berekening bijwerken met het voorlandprofiel.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.UpdateItemIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateUpdateForshoreProfileOfCalculationItem_WithoutCalculationOutputPerformClick_PerformsAction()
{
// Setup
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock>();
var input = mocks.StrictMock();
input.Expect(i => i.ForeshoreProfile).Return(new TestForeshoreProfile());
input.Expect(i => i.IsForeshoreProfileInputSynchronized).Return(false);
calculationMock.Expect(c => c.InputParameters).Return(input);
calculationMock.Expect(c => c.HasOutput).Return(false);
var inquiryHelperMock = mocks.StrictMock();
mocks.ReplayAll();
ICalculation actionCalculation = null;
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateUpdateForshoreProfileOfCalculationItem(
calculationMock,
inquiryHelperMock,
c => { actionCalculation = c; });
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreSame(calculationMock, actionCalculation);
mocks.VerifyAll();
}
[Test]
public void CreateUpdateForshoreProfileOfCalculationItem_WithCalculationOutputPerformClickNoContinuation_DoesNotPerformAction()
{
// Setup
string inquireContinuationMessage = "Wanneer het voorlandprofiel wijzigt als gevolg van het bijwerken, " +
"zal het resultaat van deze berekening worden verwijderd." +
$"{Environment.NewLine}{Environment.NewLine}" +
"Weet u zeker dat u wilt doorgaan?";
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock>();
var input = mocks.StrictMock();
input.Expect(i => i.ForeshoreProfile).Return(new TestForeshoreProfile());
input.Expect(i => i.IsForeshoreProfileInputSynchronized).Return(false);
calculationMock.Expect(c => c.InputParameters).Return(input);
calculationMock.Expect(c => c.HasOutput).Return(true);
var inquiryHelperMock = mocks.StrictMock();
inquiryHelperMock.Expect(i => i.InquireContinuation(inquireContinuationMessage)).Return(false);
mocks.ReplayAll();
var actionPerformed = false;
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateUpdateForshoreProfileOfCalculationItem(
calculationMock,
inquiryHelperMock,
c => { actionPerformed = true; });
// Call
toolStripItem.PerformClick();
// Assert
Assert.IsFalse(actionPerformed);
mocks.VerifyAll();
}
[Test]
public void CreateUpdateForshoreProfileOfCalculationItem_WithCalculationOutputPerformClickWithContinuation_PerformsAction()
{
// Setup
string inquireContinuationMessage = "Wanneer het voorlandprofiel wijzigt als gevolg van het bijwerken, " +
"zal het resultaat van deze berekening worden verwijderd." +
$"{Environment.NewLine}{Environment.NewLine}" +
"Weet u zeker dat u wilt doorgaan?";
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock>();
var input = mocks.StrictMock();
input.Expect(i => i.ForeshoreProfile).Return(new TestForeshoreProfile());
input.Expect(i => i.IsForeshoreProfileInputSynchronized).Return(false);
calculationMock.Expect(c => c.InputParameters).Return(input);
calculationMock.Expect(c => c.HasOutput).Return(true);
var inquiryHelperMock = mocks.StrictMock();
inquiryHelperMock.Expect(i => i.InquireContinuation(inquireContinuationMessage)).Return(true);
mocks.ReplayAll();
var actionPerformed = false;
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateUpdateForshoreProfileOfCalculationItem(
calculationMock,
inquiryHelperMock,
c => { actionPerformed = true; });
// Call
toolStripItem.PerformClick();
// Assert
Assert.IsTrue(actionPerformed);
mocks.VerifyAll();
}
#endregion
#region CreateUpdateForshoreProfileOfCalculationsItem
[Test]
public void CreateUpdateForshoreProfileOfCalculationsItem_WithoutForeshoreProfile_CreatesDisabledItem()
{
// Setup
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock>();
calculationMock.Expect(c => c.InputParameters.ForeshoreProfile).Return(null);
var inquiryHelperMock = mocks.StrictMock();
mocks.ReplayAll();
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateUpdateForshoreProfileOfCalculationsItem(
new[]
{
calculationMock
},
inquiryHelperMock, c => {});
// Assert
Assert.AreEqual("&Bijwerken voorlandprofielen...", toolStripItem.Text);
Assert.AreEqual("De geselecteerde voorlandprofielen hebben geen wijzigingen om bij te werken.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.UpdateItemIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateUpdateForshoreProfileOfCalculationsItem_WithForeshoreProfileSynchronized_CreatesDisabledItem()
{
// Setup
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock>();
var inputMock = mocks.StrictMock();
inputMock.Stub(ci => ci.ForeshoreProfile).Return(new TestForeshoreProfile());
inputMock.Stub(ci => ci.IsForeshoreProfileInputSynchronized).Return(true);
calculationMock.Stub(c => c.InputParameters).Return(inputMock);
var inquiryHelperMock = mocks.StrictMock();
mocks.ReplayAll();
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateUpdateForshoreProfileOfCalculationsItem(
new[]
{
calculationMock
},
inquiryHelperMock, c => {});
// Assert
Assert.AreEqual("&Bijwerken voorlandprofielen...", toolStripItem.Text);
Assert.AreEqual("De geselecteerde voorlandprofielen hebben geen wijzigingen om bij te werken.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.UpdateItemIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateUpdateForshoreProfileOfCalculationsItem_WithForeshoreProfile_CreatesEnabledItem()
{
// Setup
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock>();
var input = mocks.StrictMock();
input.Expect(i => i.ForeshoreProfile).Return(new TestForeshoreProfile());
input.Expect(i => i.IsForeshoreProfileInputSynchronized).Return(false);
calculationMock.Stub(c => c.InputParameters).Return(input);
var calculationWithoutChangesMock = mocks.StrictMock>();
var inputWithoutChangesMock = mocks.StrictMock();
inputWithoutChangesMock.Stub(ci => ci.ForeshoreProfile).Return(new TestForeshoreProfile());
inputWithoutChangesMock.Stub(ci => ci.IsForeshoreProfileInputSynchronized).Return(true);
calculationWithoutChangesMock.Stub(c => c.InputParameters).Return(inputWithoutChangesMock);
var inquiryHelperMock = mocks.StrictMock();
mocks.ReplayAll();
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateUpdateForshoreProfileOfCalculationsItem(
new[]
{
calculationMock,
calculationWithoutChangesMock
},
inquiryHelperMock, c => {});
// Assert
Assert.AreEqual("&Bijwerken voorlandprofielen...", toolStripItem.Text);
Assert.AreEqual("Berekeningen bijwerken waar een voorlandprofiel geselecteerd is.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.UpdateItemIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateUpdateForshoreProfileOfCalculationsItem_WithoutCalculationOutputPerformClick_PerformsAction()
{
// Setup
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock>();
var input = mocks.StrictMock();
input.Expect(i => i.ForeshoreProfile).Return(new TestForeshoreProfile());
input.Expect(i => i.IsForeshoreProfileInputSynchronized).Return(false);
calculationMock.Stub(c => c.InputParameters).Return(input);
calculationMock.Expect(c => c.HasOutput).Return(false);
var calculationWithoutChangesMock = mocks.StrictMock>();
var inputWithoutChangesMock = mocks.StrictMock();
inputWithoutChangesMock.Stub(ci => ci.ForeshoreProfile).Return(new TestForeshoreProfile());
inputWithoutChangesMock.Stub(ci => ci.IsForeshoreProfileInputSynchronized).Return(true);
calculationWithoutChangesMock.Stub(c => c.InputParameters).Return(inputWithoutChangesMock);
var inquiryHelperMock = mocks.StrictMock();
mocks.ReplayAll();
ICalculation actionCalculation = null;
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateUpdateForshoreProfileOfCalculationsItem(
new[]
{
calculationMock,
calculationWithoutChangesMock
},
inquiryHelperMock,
c => { actionCalculation = c; });
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreSame(calculationMock, actionCalculation);
mocks.VerifyAll();
}
[Test]
public void CreateUpdateForshoreProfileOfCalculationsItem_WithCalculationOutputPerformClickNoContinuation_DoesNotPerformAction()
{
// Setup
string inquireContinuationMessage = "Wanneer het voorlandprofiel wijzigt als gevolg van het bijwerken, " +
"zal het resultaat van de berekeningen worden verwijderd." +
$"{Environment.NewLine}{Environment.NewLine}" +
"Weet u zeker dat u wilt doorgaan?";
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock>();
var inputMock = mocks.StrictMock();
inputMock.Expect(i => i.ForeshoreProfile).Return(new TestForeshoreProfile());
inputMock.Expect(i => i.IsForeshoreProfileInputSynchronized).Return(false);
calculationMock.Stub(c => c.InputParameters).Return(inputMock);
calculationMock.Expect(c => c.HasOutput).Return(true);
var calculationWithoutChangesMock = mocks.StrictMock>();
var inputWithoutChangesMock = mocks.StrictMock();
inputWithoutChangesMock.Stub(ci => ci.ForeshoreProfile).Return(new TestForeshoreProfile());
inputWithoutChangesMock.Stub(ci => ci.IsForeshoreProfileInputSynchronized).Return(true);
calculationWithoutChangesMock.Stub(c => c.InputParameters).Return(inputWithoutChangesMock);
var inquiryHelperMock = mocks.StrictMock();
inquiryHelperMock.Expect(i => i.InquireContinuation(inquireContinuationMessage)).Return(false);
mocks.ReplayAll();
var actionPerformed = false;
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateUpdateForshoreProfileOfCalculationsItem(
new[]
{
calculationMock,
calculationWithoutChangesMock
},
inquiryHelperMock,
c => { actionPerformed = true; });
// Call
toolStripItem.PerformClick();
// Assert
Assert.IsFalse(actionPerformed);
mocks.VerifyAll();
}
[Test]
public void CreateUpdateForshoreProfileOfCalculationsItem_WithCalculationOutputPerformClickWithContinuation_PerformsAction()
{
// Setup
string inquireContinuationMessage = "Wanneer het voorlandprofiel wijzigt als gevolg van het bijwerken, " +
"zal het resultaat van de berekeningen worden verwijderd." +
$"{Environment.NewLine}{Environment.NewLine}" +
"Weet u zeker dat u wilt doorgaan?";
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock>();
var input = mocks.StrictMock();
input.Expect(i => i.ForeshoreProfile).Return(new TestForeshoreProfile());
input.Expect(i => i.IsForeshoreProfileInputSynchronized).Return(false);
calculationMock.Stub(c => c.InputParameters).Return(input);
calculationMock.Expect(c => c.HasOutput).Return(true);
var calculationWithoutChangesMock = mocks.StrictMock>();
var inputWithoutChangesMock = mocks.StrictMock();
inputWithoutChangesMock.Stub(ci => ci.ForeshoreProfile).Return(new TestForeshoreProfile());
inputWithoutChangesMock.Stub(ci => ci.IsForeshoreProfileInputSynchronized).Return(true);
calculationWithoutChangesMock.Stub(c => c.InputParameters).Return(inputWithoutChangesMock);
var inquiryHelperMock = mocks.StrictMock();
inquiryHelperMock.Expect(i => i.InquireContinuation(inquireContinuationMessage)).Return(true);
mocks.ReplayAll();
var actionPerformed = false;
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateUpdateForshoreProfileOfCalculationsItem(
new[]
{
calculationMock,
calculationWithoutChangesMock
},
inquiryHelperMock,
c =>
{
Assert.AreSame(calculationMock, c);
actionPerformed = true;
});
// Call
toolStripItem.PerformClick();
// Assert
Assert.IsTrue(actionPerformed);
mocks.VerifyAll();
}
#endregion
#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("Be&rekenen", toolStripItem.Text);
Assert.AreEqual("Voer deze berekening uit.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreatePerformCalculationItem_AdditionalValidationContainsMessage_CreatesDisabledItemAndSetMessageInTooltip()
{
// Setup
var mocks = new MockRepository();
var failureMechanismMock = mocks.StrictMock();
mocks.ReplayAll();
var calculation = new TestCalculation();
var calculationContext = new TestCalculationContext(calculation, failureMechanismMock);
const string errorMessage = "Additional check failed.";
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, null, context => errorMessage);
// Assert
Assert.AreEqual("Be&rekenen", toolStripItem.Text);
Assert.AreEqual(errorMessage, toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreatePerformCalculationItem_PerformClickOnCreatedItem_PerformCalculationMethod()
{
// Setup
var mocks = new MockRepository();
var failureMechanismMock = mocks.StrictMock();
mocks.ReplayAll();
var calculation = new TestCalculation();
var calculationContext = new TestCalculationContext(calculation, failureMechanismMock);
var counter = 0;
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformCalculationItem(calculation, calculationContext, (calc, context) => counter++, context => null);
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreEqual(1, counter);
mocks.VerifyAll();
}
#endregion
#region CreateValidateCalculationItem
[Test]
public void CreateValidateCalculationItem_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.CreateValidateCalculationItem(calculationContext, null, c => null);
// Assert
Assert.AreEqual("&Valideren", toolStripItem.Text);
Assert.AreEqual("Valideer de invoer voor deze berekening.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ValidateIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateValidateCalculationItem_AdditionalValidationContainsMessage_CreatesDisabledItemAndSetMessageInTooltip()
{
// Setup
var mocks = new MockRepository();
var failureMechanismMock = mocks.StrictMock();
mocks.ReplayAll();
var calculation = new TestCalculation();
var calculationContext = new TestCalculationContext(calculation, failureMechanismMock);
const string errorMessage = "Additional check failed.";
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateCalculationItem(calculationContext, null, c => errorMessage);
// Assert
Assert.AreEqual("&Valideren", toolStripItem.Text);
Assert.AreEqual(errorMessage, toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ValidateIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateValidateCalculationItem_PerformClickOnCreatedItem_PerformCalculationMethod()
{
// Setup
var mocks = new MockRepository();
var failureMechanismMock = mocks.StrictMock();
mocks.ReplayAll();
var calculation = new TestCalculation();
var calculationContext = new TestCalculationContext(calculation, failureMechanismMock);
var counter = 0;
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateCalculationItem(calculationContext, calc => counter++, c => null);
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreEqual(1, counter);
mocks.VerifyAll();
}
#endregion
#region CreatePerformAllCalculationsInGroupItem
[Test]
public void CreatePerformAllCalculationsInGroupItem_GeneralValidationTrueAdditionalValidationNull_CreatesEnabledItem()
{
// Setup
var calculation = new TestCalculation();
var calculationGroup = new CalculationGroup
{
Children =
{
calculation
}
};
var failureMechanism = new TestFailureMechanism(new[]
{
calculation
});
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism);
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => null);
// Assert
Assert.AreEqual("Alles be&rekenen", toolStripItem.Text);
Assert.AreEqual("Voer alle berekeningen binnen deze berekeningsmap uit.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
}
[Test]
public void CreatePerformAllCalculationsInGroupItem_GeneralValidationFalseAdditionalValidationNull_CreatesDisabledItemAndSetGeneralValidationMessageTooltip()
{
// Setup
var failureMechanism = new TestFailureMechanism(Enumerable.Empty());
var nestedGroup = new CalculationGroup();
var calculationGroup = new CalculationGroup
{
Children =
{
nestedGroup
}
};
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism);
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => null);
// Assert
Assert.AreEqual("Alles be&rekenen", toolStripItem.Text);
Assert.AreEqual("Er zijn geen berekeningen om uit te voeren.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
}
[Test]
public void CreatePerformAllCalculationsInGroupItem_GeneralValidationTrueAdditionalValidationContainsMessage_CreatesDisabledItemAndSetMessageInTooltip()
{
// Setup
var calculation = new TestCalculation();
var calculationGroup = new CalculationGroup
{
Children =
{
calculation
}
};
var failureMechanism = new TestFailureMechanism(new[]
{
calculation
});
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism);
const string errorMessage = "Additional check failed.";
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => errorMessage);
// Assert
Assert.AreEqual("Alles be&rekenen", toolStripItem.Text);
Assert.AreEqual(errorMessage, toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
}
[Test]
public void CreatePerformAllCalculationsInGroupItem_GeneralValidationFalseAdditionalValidationContainsMessage_CreatesDisabledItemAndSetGeneralValidationMessageTooltip()
{
// Setup
var failureMechanism = new TestFailureMechanism(Enumerable.Empty());
var calculationGroup = new CalculationGroup();
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism);
const string errorMessage = "Additional check failed.";
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, null, context => errorMessage);
// Assert
Assert.AreEqual("Alles be&rekenen", toolStripItem.Text);
Assert.AreEqual("Er zijn geen berekeningen om uit te voeren.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
}
[Test]
public void CreatePerformAllCalculationsInGroupItem_PerformClickOnCreatedItem_PerformAllCalculationMethodPerformed()
{
// Setup
var calculation = new TestCalculation();
var failureMechanism = new TestFailureMechanism(new[]
{
calculation
});
var counter = 0;
var calculationGroup = new CalculationGroup
{
Children =
{
calculation
}
};
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism);
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInGroupItem(calculationGroup, calculationGroupContext, (group, context) => counter++, context => null);
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreEqual(1, counter);
}
#endregion
#region CreateValidateAllCalculationsInGroupItem
[Test]
public void CreateValidateAllCalculationsInGroupItem_GeneralValidationTrueAdditionalValidationNull_CreatesEnabledItem()
{
// Setup
var calculation = new TestCalculation();
var calculationGroup = new CalculationGroup
{
Children =
{
calculation
}
};
var failureMechanism = new TestFailureMechanism(new[]
{
calculation
});
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism);
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateAllCalculationsInGroupItem(calculationGroupContext, null, context => null);
// Assert
Assert.AreEqual("Alles &valideren", toolStripItem.Text);
Assert.AreEqual("Valideer alle berekeningen binnen deze berekeningsmap.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ValidateAllIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
}
[Test]
public void CreateValidateAllCalculationsInGroupItem_GeneralValidationFalseAdditionalValidationNull_CreatesDisabledItemAndSetGeneralValidationMessageTooltip()
{
// Setup
var failureMechanism = new TestFailureMechanism(Enumerable.Empty());
var nestedGroup = new CalculationGroup();
var calculationGroup = new CalculationGroup
{
Children =
{
nestedGroup
}
};
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism);
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateAllCalculationsInGroupItem(calculationGroupContext, null, context => null);
// Assert
Assert.AreEqual("Alles &valideren", toolStripItem.Text);
Assert.AreEqual("Er zijn geen berekeningen om te valideren.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ValidateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
}
[Test]
public void CreateValidateAllCalculationsInGroupItem_GeneralValidationTrueAdditionalValidationContainsMessage_CreatesDisabledItemAndSetMessageInTooltip()
{
// Setup
var calculation = new TestCalculation();
var calculationGroup = new CalculationGroup
{
Children =
{
calculation
}
};
var failureMechanism = new TestFailureMechanism(new[]
{
calculation
});
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism);
const string errorMessage = "Additional check failed.";
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateAllCalculationsInGroupItem(calculationGroupContext, null, context => errorMessage);
// Assert
Assert.AreEqual("Alles &valideren", toolStripItem.Text);
Assert.AreEqual(errorMessage, toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ValidateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
}
[Test]
public void CreateValidateAllCalculationsInGroupItem_GeneralValidationFalseAdditionalValidationContainsMessage_CreatesDisabledItemAndSetGeneralValidationMessageTooltip()
{
// Setup
var failureMechanism = new TestFailureMechanism(Enumerable.Empty());
var calculationGroup = new CalculationGroup();
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism);
const string errorMessage = "Additional check failed.";
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateAllCalculationsInGroupItem(calculationGroupContext, null, context => errorMessage);
// Assert
Assert.AreEqual("Alles &valideren", toolStripItem.Text);
Assert.AreEqual("Er zijn geen berekeningen om te valideren.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ValidateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
}
[Test]
public void CreateValidateAllCalculationsInGroupItem_PerformClickOnCreatedItem_PerformAllCalculationMethodPerformed()
{
// Setup
var calculation = new TestCalculation();
var failureMechanism = new TestFailureMechanism(new[]
{
calculation
});
var counter = 0;
var calculationGroup = new CalculationGroup
{
Children =
{
calculation
}
};
var calculationGroupContext = new TestCalculationGroupContext(calculationGroup, failureMechanism);
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateAllCalculationsInGroupItem(
calculationGroupContext,
context => counter++,
context => null);
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreEqual(1, counter);
}
#endregion
#region CreatePerformAllCalculationInFailureMechanismItem
[Test]
public void CreatePerformAllCalculationsInFailureMechanismItem_GeneralValidationTrueAdditionalValidationNull_CreatesEnabledItem()
{
// Setup
var mocks = new MockRepository();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var calculation = new TestCalculation();
var failureMechanism = new TestFailureMechanism(new[]
{
calculation
});
var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock);
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, null, context => null);
// Assert
Assert.AreEqual("Alles be&rekenen", toolStripItem.Text);
Assert.AreEqual("Voer alle berekeningen binnen dit toetsspoor uit.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreatePerformAllCalculationsInFailureMechanismItem_GeneralValidationFalseAdditionalValidationNull_CreatesDisabledItemAndSetGeneralValidationMessageTooltip()
{
// Setup
var mocks = new MockRepository();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var failureMechanism = new TestFailureMechanism(Enumerable.Empty());
var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock);
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, null, context => null);
// Assert
Assert.AreEqual("Alles be&rekenen", toolStripItem.Text);
Assert.AreEqual("Er zijn geen berekeningen om uit te voeren.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreatePerformAllCalculationsInFailureMechanismItem_GeneralValidationTrueAdditionalValidationContainsMessage_CreatesDisabledItemAndSetMessageInTooltip()
{
// Setup
var mocks = new MockRepository();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var calculation = new TestCalculation();
var failureMechanism = new TestFailureMechanism(new[]
{
calculation
});
var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock);
const string errorMessage = "Additional check failed.";
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, null, context => errorMessage);
// Assert
Assert.AreEqual("Alles be&rekenen", toolStripItem.Text);
Assert.AreEqual(errorMessage, toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreatePerformAllCalculationsInFailureMechanismItem_GeneralValidationFalseAdditionalValidationContainsMessage_CreatesDisabledItemAndSetGeneralValidationMessageTooltip()
{
// Setup
var mocks = new MockRepository();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var failureMechanism = new TestFailureMechanism(Enumerable.Empty());
var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock);
const string errorMessage = "Additional check failed.";
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, null, context => errorMessage);
// Assert
Assert.AreEqual("Alles be&rekenen", toolStripItem.Text);
Assert.AreEqual("Er zijn geen berekeningen om uit te voeren.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.CalculateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreatePerformAllCalculationsInFailureMechanismItem_PerformClickOnCreatedItem_PerformAllCalculationMethodPerformed()
{
// Setup
var mocks = new MockRepository();
var calculationMock = mocks.StrictMock();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var counter = 0;
var failureMechanism = new TestFailureMechanism(new[]
{
calculationMock
});
var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock);
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreatePerformAllCalculationsInFailureMechanismItem(failureMechanismContext, fmContext => counter++, context => null);
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreEqual(1, counter);
mocks.VerifyAll();
}
#endregion
#region CreateValidateAllCalculationsInFailureMechanismItem
[Test]
public void CreateValidateAllCalculationsInFailureMechanismItem_GeneralValidationTrueAdditionalValidationNull_CreatesEnabledItem()
{
// Setup
var mocks = new MockRepository();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var calculation = new TestCalculation();
var failureMechanism = new TestFailureMechanism(new[]
{
calculation
});
var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock);
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateAllCalculationsInFailureMechanismItem(
failureMechanismContext,
null,
fm => null);
// Assert
Assert.AreEqual("Alles &valideren", toolStripItem.Text);
Assert.AreEqual("Valideer alle berekeningen binnen dit toetsspoor.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ValidateAllIcon, toolStripItem.Image);
Assert.IsTrue(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateValidateAllCalculationsInFailureMechanismItem_GeneralValidationFalseAdditionalValidationNull_CreatesDisabledItemAndSetGeneralValidationMessageTooltip()
{
// Setup
var mocks = new MockRepository();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var failureMechanism = new TestFailureMechanism(Enumerable.Empty());
var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock);
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateAllCalculationsInFailureMechanismItem(failureMechanismContext, null, fm => null);
// Assert
Assert.AreEqual("Alles &valideren", toolStripItem.Text);
Assert.AreEqual("Er zijn geen berekeningen om te valideren.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ValidateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateValidateAllCalculationsInFailureMechanismItem_GeneralValidationTrueAdditionalValidationContainsMessage_CreatesDisabledItemAndSetMessageInTooltip()
{
// Setup
var mocks = new MockRepository();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var calculation = new TestCalculation();
var failureMechanism = new TestFailureMechanism(new[]
{
calculation
});
var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock);
const string errorMessage = "Additional check failed.";
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateAllCalculationsInFailureMechanismItem(
failureMechanismContext,
null,
fm => errorMessage);
// Assert
Assert.AreEqual("Alles &valideren", toolStripItem.Text);
Assert.AreEqual(errorMessage, toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ValidateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateValidateAllCalculationsInFailureMechanismItem_GeneralValidationFalseAdditionalValidationContainsMessage_CreatesDisabledItemAndSetGeneralValidationMessageTooltip()
{
// Setup
var mocks = new MockRepository();
var assessmentSectionMock = mocks.StrictMock();
mocks.ReplayAll();
var failureMechanism = new TestFailureMechanism(Enumerable.Empty());
var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock);
const string errorMessage = "Additional check failed.";
// Call
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateAllCalculationsInFailureMechanismItem(
failureMechanismContext,
null,
fm => errorMessage);
// Assert
Assert.AreEqual("Alles &valideren", toolStripItem.Text);
Assert.AreEqual("Er zijn geen berekeningen om te valideren.", toolStripItem.ToolTipText);
TestHelper.AssertImagesAreEqual(RingtoetsFormsResources.ValidateAllIcon, toolStripItem.Image);
Assert.IsFalse(toolStripItem.Enabled);
mocks.VerifyAll();
}
[Test]
public void CreateValidateAllCalculationsInFailureMechanismItem_PerformClickOnCreatedItem_PerformAllCalculationMethodPerformed()
{
// Setup
var mocks = new MockRepository();
var assessmentSectionMock = mocks.StrictMock();
var calculationMock = mocks.StrictMock();
mocks.ReplayAll();
var counter = 0;
var failureMechanism = new TestFailureMechanism(new[]
{
calculationMock
});
var failureMechanismContext = new TestFailureMechanismContext(failureMechanism, assessmentSectionMock);
StrictContextMenuItem toolStripItem = RingtoetsContextMenuItemFactory.CreateValidateAllCalculationsInFailureMechanismItem(
failureMechanismContext,
fm => counter++,
fm => null);
// Call
toolStripItem.PerformClick();
// Assert
Assert.AreEqual(1, counter);
mocks.VerifyAll();
}
#endregion
#region Nested types
private class TestFailureMechanismContext : FailureMechanismContext
{
public TestFailureMechanismContext(IFailureMechanism wrappedFailureMechanism, IAssessmentSection parent) :
base(wrappedFailureMechanism, parent) {}
}
private class TestCalculationGroupContext : Observable, ICalculationContext
{
public TestCalculationGroupContext(CalculationGroup wrappedData, IFailureMechanism failureMechanism)
{
WrappedData = wrappedData;
FailureMechanism = failureMechanism;
}
public CalculationGroup WrappedData { get; }
public IFailureMechanism FailureMechanism { get; }
}
private class TestCalculationContext : Observable, ICalculationContext
{
public TestCalculationContext(TestCalculation wrappedData, IFailureMechanism failureMechanism)
{
WrappedData = wrappedData;
FailureMechanism = failureMechanism;
}
public TestCalculation WrappedData { get; }
public IFailureMechanism FailureMechanism { get; }
}
private class TestCalculation : Observable, ICalculation
{
public TestCalculation()
{
Name = "Nieuwe berekening";
}
public string Name { get; set; }
public Comment Comments { get; private set; }
public bool HasOutput
{
get
{
return false;
}
}
public void ClearOutput() {}
}
public interface ICalculationInputWithForeshoreProfile : ICalculationInput, IHasForeshoreProfile {}
#endregion
}
}