Index: Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Plugin.Test/Riskeer.WaveImpactAsphaltCover.Plugin.Test.csproj =================================================================== diff -u -rff17ab3ba4ca3b023d39ea040af408a69b4865cb -rf63eb14799651b570b390e0f0d4055e2afd0d60e --- Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Plugin.Test/Riskeer.WaveImpactAsphaltCover.Plugin.Test.csproj (.../Riskeer.WaveImpactAsphaltCover.Plugin.Test.csproj) (revision ff17ab3ba4ca3b023d39ea040af408a69b4865cb) +++ Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Plugin.Test/Riskeer.WaveImpactAsphaltCover.Plugin.Test.csproj (.../Riskeer.WaveImpactAsphaltCover.Plugin.Test.csproj) (revision f63eb14799651b570b390e0f0d4055e2afd0d60e) @@ -54,9 +54,6 @@ 1.0.16 - - 3.6.1 - 1.0.117 Index: Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Plugin.Test/TreeNodeInfos/WaveImpactAsphaltCoverCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r9339a780307cdb21ebe38cbd3aa8811e2c98d980 -rf63eb14799651b570b390e0f0d4055e2afd0d60e --- Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Plugin.Test/TreeNodeInfos/WaveImpactAsphaltCoverCalculationGroupContextTreeNodeInfoTest.cs (.../WaveImpactAsphaltCoverCalculationGroupContextTreeNodeInfoTest.cs) (revision 9339a780307cdb21ebe38cbd3aa8811e2c98d980) +++ Riskeer/WaveImpactAsphaltCover/test/Riskeer.WaveImpactAsphaltCover.Plugin.Test/TreeNodeInfos/WaveImpactAsphaltCoverCalculationGroupContextTreeNodeInfoTest.cs (.../WaveImpactAsphaltCoverCalculationGroupContextTreeNodeInfoTest.cs) (revision f63eb14799651b570b390e0f0d4055e2afd0d60e) @@ -38,7 +38,7 @@ using Core.Gui.TestUtil.ContextMenu; using NUnit.Extensions.Forms; using NUnit.Framework; -using Rhino.Mocks; +using NSubstitute; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Calculation; using Riskeer.Common.Data.Contribution; @@ -84,7 +84,6 @@ private const int contextMenuClearOutputIndexNestedGroup = 14; private IGui gui; - private MockRepository mocks; private WaveImpactAsphaltCoverPlugin plugin; private TreeNodeInfo info; @@ -97,7 +96,6 @@ public void Initialized_Always_ExpectedPropertiesSet() { // Setup - mocks.ReplayAll(); // Assert Assert.IsNotNull(info.Text); @@ -124,8 +122,7 @@ public void Text_Always_ReturnGroupName() { // Setup - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); + var assessmentSection = Substitute.For(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); var context = new WaveImpactAsphaltCoverCalculationGroupContext(failureMechanism.CalculationsGroup, @@ -144,8 +141,7 @@ public void Image_Always_ReturnCalculationGroupIcon() { // Setup - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); + var assessmentSection = Substitute.For(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); var context = new WaveImpactAsphaltCoverCalculationGroupContext(failureMechanism.CalculationsGroup, @@ -164,8 +160,7 @@ public void ChildNodeObjects_EmptyGroup_ReturnEmpty() { // Setup - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); + var assessmentSection = Substitute.For(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); @@ -185,8 +180,7 @@ public void ChildNodeObjects_GroupWithChildren_ReturnChildren() { // Setup - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); + var assessmentSection = Substitute.For(); var childGroup = new CalculationGroup(); var calculationItem = new WaveImpactAsphaltCoverWaveConditionsCalculation(); @@ -225,51 +219,60 @@ // Setup var group = new CalculationGroup(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + IAssessmentSection assessmentSection = new AssessmentSectionStub(); var groupContext = new WaveImpactAsphaltCoverCalculationGroupContext(group, null, failureMechanism, assessmentSection); - var menuBuilder = mocks.StrictMock(); - using (mocks.Ordered()) - { - menuBuilder.Expect(mb => mb.AddImportItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddExportItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddDeleteChildrenItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCollapseAllItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddExpandAllItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddPropertiesItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.Build()).Return(null); - } + var menuBuilder = Substitute.For(); + menuBuilder.AddImportItem().Returns(menuBuilder); + menuBuilder.AddExportItem().Returns(menuBuilder); + menuBuilder.AddSeparator().Returns(menuBuilder); + menuBuilder.AddCustomItem(Arg.Any()).Returns(menuBuilder); + menuBuilder.AddRenameItem().Returns(menuBuilder); + menuBuilder.AddDeleteItem().Returns(menuBuilder); + menuBuilder.AddDeleteChildrenItem().Returns(menuBuilder); + menuBuilder.AddCollapseAllItem().Returns(menuBuilder); + menuBuilder.AddExpandAllItem().Returns(menuBuilder); + menuBuilder.AddPropertiesItem().Returns(menuBuilder); + menuBuilder.Build().Returns((ContextMenuStrip) null); using (var treeViewControl = new TreeViewControl()) { - gui.Stub(g => g.Get(groupContext, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(groupContext, treeViewControl).Returns(menuBuilder); + gui.ViewCommands.Returns(Substitute.For()); + gui.MainWindow.Returns(Substitute.For()); + // Call info.ContextMenuStrip(groupContext, null, treeViewControl); } // Assert - // Assert expectancies called in TearDown() + Received.InOrder(() => + { + menuBuilder.AddImportItem(); + menuBuilder.AddExportItem(); + menuBuilder.AddSeparator(); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddSeparator(); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddSeparator(); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddSeparator(); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddSeparator(); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddDeleteChildrenItem(); + menuBuilder.AddSeparator(); + menuBuilder.AddCollapseAllItem(); + menuBuilder.AddExpandAllItem(); + menuBuilder.AddSeparator(); + menuBuilder.AddPropertiesItem(); + menuBuilder.Build(); + }); } [Test] @@ -278,7 +281,7 @@ // Setup var group = new CalculationGroup(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + IAssessmentSection assessmentSection = new AssessmentSectionStub(); var groupContext = new WaveImpactAsphaltCoverCalculationGroupContext(group, null, failureMechanism, @@ -288,11 +291,10 @@ using (var treeViewControl = new TreeViewControl()) { - gui.Stub(g => g.Get(groupContext, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(groupContext, treeViewControl).Returns(menuBuilder); + gui.ViewCommands.Returns(Substitute.For()); + gui.MainWindow.Returns(Substitute.For()); + // Call using (ContextMenuStrip menu = info.ContextMenuStrip(groupContext, null, treeViewControl)) { @@ -343,7 +345,7 @@ var group = new CalculationGroup(); var parentGroup = new CalculationGroup(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + IAssessmentSection assessmentSection = new AssessmentSectionStub(); var groupContext = new WaveImpactAsphaltCoverCalculationGroupContext(group, parentGroup, failureMechanism, @@ -353,45 +355,53 @@ failureMechanism, assessmentSection); - var menuBuilder = mocks.StrictMock(); - using (mocks.Ordered()) - { - menuBuilder.Expect(mb => mb.AddImportItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddExportItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddRenameItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddDeleteItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddCollapseAllItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddExpandAllItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.AddPropertiesItem()).Return(menuBuilder); - menuBuilder.Expect(mb => mb.Build()).Return(null); - } + var menuBuilder = Substitute.For(); + menuBuilder.AddImportItem().Returns(menuBuilder); + menuBuilder.AddExportItem().Returns(menuBuilder); + menuBuilder.AddSeparator().Returns(menuBuilder); + menuBuilder.AddCustomItem(Arg.Any()).Returns(menuBuilder); + menuBuilder.AddRenameItem().Returns(menuBuilder); + menuBuilder.AddDeleteItem().Returns(menuBuilder); + menuBuilder.AddCollapseAllItem().Returns(menuBuilder); + menuBuilder.AddExpandAllItem().Returns(menuBuilder); + menuBuilder.AddPropertiesItem().Returns(menuBuilder); + menuBuilder.Build().Returns((ContextMenuStrip) null); using (var treeViewControl = new TreeViewControl()) { - gui.Stub(cmp => cmp.Get(groupContext, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(groupContext, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); + // Call info.ContextMenuStrip(groupContext, parentGroupContext, treeViewControl); } // Assert - // Assert expectancies called in TearDown() + Received.InOrder(() => + { + menuBuilder.AddImportItem(); + menuBuilder.AddExportItem(); + menuBuilder.AddSeparator(); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddSeparator(); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddSeparator(); + menuBuilder.AddRenameItem(); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddSeparator(); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddSeparator(); + menuBuilder.AddCustomItem(Arg.Any()); + menuBuilder.AddDeleteItem(); + menuBuilder.AddSeparator(); + menuBuilder.AddCollapseAllItem(); + menuBuilder.AddExpandAllItem(); + menuBuilder.AddSeparator(); + menuBuilder.AddPropertiesItem(); + menuBuilder.Build(); + }); } [Test] @@ -401,7 +411,7 @@ var group = new CalculationGroup(); var parentGroup = new CalculationGroup(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + IAssessmentSection assessmentSection = new AssessmentSectionStub(); var groupContext = new WaveImpactAsphaltCoverCalculationGroupContext(group, parentGroup, failureMechanism, @@ -415,10 +425,9 @@ using (var treeViewControl = new TreeViewControl()) { - gui.Stub(g => g.Get(groupContext, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(groupContext, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); + // Call using (ContextMenuStrip menu = info.ContextMenuStrip(groupContext, parentGroupContext, treeViewControl)) { @@ -465,7 +474,7 @@ public void ContextMenuStrip_WithoutParentNodeWithoutHydraulicLocationsDefaultBehavior_ReturnContextMenuWithoutRenameRemove() { // Setup - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + IAssessmentSection assessmentSection = new AssessmentSectionStub(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); @@ -474,16 +483,16 @@ failureMechanism, assessmentSection); - var applicationFeatureCommandHandler = mocks.Stub(); - var importCommandHandler = mocks.StrictMock(); - importCommandHandler.Expect(ich => ich.GetSupportedImportInfos(nodeData)).Return(new[] + var applicationFeatureCommandHandler = Substitute.For(); + var importCommandHandler = Substitute.For(); + importCommandHandler.GetSupportedImportInfos(nodeData).Returns(new[] { new ImportInfo() }); - var exportCommandHandler = mocks.StrictMock(); - exportCommandHandler.Expect(ech => ech.CanExportFrom(nodeData)).Return(true); - var updateCommandHandler = mocks.StrictMock(); - var viewCommandsHandler = mocks.StrictMock(); + var exportCommandHandler = Substitute.For(); + exportCommandHandler.CanExportFrom(nodeData).Returns(true); + var updateCommandHandler = Substitute.For(); + var viewCommandsHandler = Substitute.For(); using (var treeViewControl = new TreeViewControl()) { var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, @@ -494,11 +503,10 @@ nodeData, treeViewControl); - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.ViewCommands.Returns(Substitute.For()); + gui.MainWindow.Returns(Substitute.For()); + // Call using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControl)) { @@ -560,15 +568,17 @@ CoreGuiResources.PropertiesHS, false); } + + exportCommandHandler.Received().CanExportFrom(nodeData); } } [Test] public void ContextMenuStrip_WithoutParentNodeWithHydraulicLocationsDefaultBehavior_ReturnContextMenuWithoutRenameRemove() { // Setup - var assessmentSection = mocks.Stub(); - assessmentSection.Stub(a => a.HydraulicBoundaryData).Return(new HydraulicBoundaryData + var assessmentSection = Substitute.For(); + assessmentSection.HydraulicBoundaryData.Returns(new HydraulicBoundaryData { HydraulicBoundaryDatabases = { @@ -589,16 +599,16 @@ failureMechanism, assessmentSection); - var applicationFeatureCommandHandler = mocks.Stub(); - var importCommandHandler = mocks.StrictMock(); - importCommandHandler.Expect(ich => ich.GetSupportedImportInfos(nodeData)).Return(new[] + var applicationFeatureCommandHandler = Substitute.For(); + var importCommandHandler = Substitute.For(); + importCommandHandler.GetSupportedImportInfos(nodeData).Returns(new[] { new ImportInfo() }); - var exportCommandHandler = mocks.StrictMock(); - exportCommandHandler.Expect(ech => ech.CanExportFrom(nodeData)).Return(true); - var updateCommandHandler = mocks.StrictMock(); - var viewCommandsHandler = mocks.StrictMock(); + var exportCommandHandler = Substitute.For(); + exportCommandHandler.CanExportFrom(nodeData).Returns(true); + var updateCommandHandler = Substitute.For(); + var viewCommandsHandler = Substitute.For(); using (var treeViewControl = new TreeViewControl()) { var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, @@ -609,11 +619,10 @@ nodeData, treeViewControl); - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.ViewCommands.Returns(Substitute.For()); + gui.MainWindow.Returns(Substitute.For()); + // Call using (ContextMenuStrip menu = info.ContextMenuStrip(nodeData, null, treeViewControl)) { @@ -676,6 +685,9 @@ CoreGuiResources.PropertiesHS, false); } + + importCommandHandler.Received().GetSupportedImportInfos(nodeData); + exportCommandHandler.Received().CanExportFrom(nodeData); } } @@ -688,7 +700,7 @@ var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); var group = new CalculationGroup(); failureMechanism.CalculationsGroup.Children.Add(group); - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + IAssessmentSection assessmentSection = new AssessmentSectionStub(); var nodeData = new WaveImpactAsphaltCoverCalculationGroupContext(group, failureMechanism.CalculationsGroup, failureMechanism, @@ -700,10 +712,9 @@ var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); + // Call using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, parentNodeData, treeViewControl)) { @@ -724,8 +735,8 @@ public void ContextMenuStrip_AllRequiredInputSet_CalculateAllAndValidateAllEnabled(bool usePreprocessorClosure) { // Setup - var assessmentSection = mocks.Stub(); - assessmentSection.Stub(a => a.HydraulicBoundaryData).Return(new HydraulicBoundaryData()); + var assessmentSection = Substitute.For(); + assessmentSection.HydraulicBoundaryData.Returns(new HydraulicBoundaryData()); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); var group = new CalculationGroup(); @@ -744,10 +755,9 @@ { var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); + // Call using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, parentNodeData, treeViewControl)) { @@ -791,10 +801,9 @@ using (var treeViewControl = new TreeViewControl()) { - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, parentNodeData, treeViewControl)) { // Call @@ -821,10 +830,8 @@ var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); IAssessmentSection assessmentSection = CreateAssessmentSectionWithHydraulicBoundaryOutput(); - var observerA = mocks.StrictMock(); - observerA.Expect(o => o.UpdateObserver()); - var observerB = mocks.StrictMock(); - observerB.Expect(o => o.UpdateObserver()); + var observerA = Substitute.For(); + var observerB = Substitute.For(); HydraulicBoundaryLocation hydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryData.GetLocations().First(); @@ -857,29 +864,26 @@ using (var treeViewControl = new TreeViewControl()) { - IMainWindow mainWindow = MainWindowTestHelper.CreateMainWindowStub(mocks); + IMainWindow mainWindow = MainWindowTestHelper.CreateMainWindowStub(); - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mainWindow); + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(mainWindow); int nrOfCalculators = failureMechanism.Calculations .Cast() .Sum(c => c.InputParameters.GetWaterLevels(WaveConditionsInputHelper.GetAssessmentLevel(c.InputParameters, assessmentSection)).Count()); - var calculatorFactory = mocks.Stub(); - calculatorFactory.Expect(cf => cf.CreateWaveConditionsCosineCalculator(Arg.Is.NotNull)) - .WhenCalled(invocation => + var calculatorFactory = Substitute.For(); + calculatorFactory.CreateWaveConditionsCosineCalculator(Arg.Any()) + .Returns(callInfo => { HydraRingCalculationSettingsTestHelper.AssertHydraRingCalculationSettings( HydraulicBoundaryCalculationSettingsFactory.CreateSettings( assessmentSection.HydraulicBoundaryData, hydraulicBoundaryLocation), - (HydraRingCalculationSettings) invocation.Arguments[0]); - }) - .Return(new TestWaveConditionsCosineCalculator()) - .Repeat - .Times(nrOfCalculators); - mocks.ReplayAll(); - + (HydraRingCalculationSettings) callInfo[0]); + return new TestWaveConditionsCosineCalculator(); + }); + using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, parentNodeData, treeViewControl)) { @@ -903,6 +907,9 @@ }); Assert.AreEqual(3, calculationA.Output.Items.Count()); Assert.AreEqual(3, calculationB.Output.Items.Count()); + observerA.Received().UpdateObserver(); + observerB.Received().UpdateObserver(); + calculatorFactory.Received(nrOfCalculators).CreateWaveConditionsCosineCalculator(Arg.Any()); } } } @@ -912,8 +919,7 @@ { // Setup var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub( - failureMechanism, mocks, validHrdFilePath); + IAssessmentSection assessmentSection = new AssessmentSectionStub(); var group = new CalculationGroup(); @@ -931,12 +937,11 @@ using (var treeViewControl = new TreeViewControl()) { - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); - var calculatorFactory = mocks.Stub(); - mocks.ReplayAll(); - + var calculatorFactory = Substitute.For(); + using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, parentNodeData, treeViewControl)) { @@ -954,8 +959,7 @@ { // Setup var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub( - failureMechanism, mocks, validHrdFilePath); + IAssessmentSection assessmentSection = CreateAssessmentSectionWithHydraulicBoundaryOutput(); HydraulicBoundaryLocation hydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryData.GetLocations().First(); @@ -979,12 +983,11 @@ using (var treeViewControl = new TreeViewControl()) { - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); - var calculatorFactory = mocks.Stub(); - mocks.ReplayAll(); - + var calculatorFactory = Substitute.For(); + using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, parentNodeData, treeViewControl)) { @@ -1004,16 +1007,10 @@ { // Setup var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub( - failureMechanism, mocks, validHrdFilePath); + IAssessmentSection assessmentSection = CreateAssessmentSectionWithHydraulicBoundaryOutput(); - var observerA = mocks.StrictMock(); - var observerB = mocks.StrictMock(); - if (confirm) - { - observerA.Expect(o => o.UpdateObserver()); - observerB.Expect(o => o.UpdateObserver()); - } + var observerA = Substitute.For(); + var observerB = Substitute.For(); HydraulicBoundaryLocation hydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryData.GetLocations().First(); @@ -1054,12 +1051,11 @@ using (var treeViewControl = new TreeViewControl()) { - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); - var calculatorFactory = mocks.Stub(); - mocks.ReplayAll(); - + var calculatorFactory = Substitute.For(); + using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) using (ContextMenuStrip contextMenu = info.ContextMenuStrip(nodeData, parentNodeData, treeViewControl)) { @@ -1071,6 +1067,8 @@ { Assert.IsNull(calculationA.Output); Assert.IsNull(calculationB.Output); + observerA.Received().UpdateObserver(); + observerB.Received().UpdateObserver(); } } } @@ -1082,7 +1080,7 @@ // Setup using (var treeViewControl = new TreeViewControl()) { - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + IAssessmentSection assessmentSection = new AssessmentSectionStub(); var group = new CalculationGroup(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); @@ -1099,12 +1097,10 @@ var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); - var observer = mocks.StrictMock(); - observer.Expect(o => o.UpdateObserver()); - mocks.ReplayAll(); + var observer = Substitute.For(); var calculationItem = new CalculationGroup { @@ -1128,6 +1124,7 @@ Assert.IsInstanceOf(newlyAddedItem); Assert.AreEqual("Nieuwe map (1)", newlyAddedItem.Name, "An item with the same name default name already exists, therefore '(1)' needs to be appended."); + observer.Received().UpdateObserver(); } } } @@ -1157,16 +1154,14 @@ { Name = "Nieuwe berekening" }; - var observer = mocks.StrictMock(); - observer.Expect(o => o.UpdateObserver()); + var observer = Substitute.For(); using (var treeViewControl = new TreeViewControl()) { - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.ViewCommands).Return(mocks.Stub()); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.ViewCommands.Returns(Substitute.For()); + gui.MainWindow.Returns(Substitute.For()); + group.Children.Add(calculationItem); nodeData.Attach(observer); @@ -1187,6 +1182,7 @@ Assert.AreEqual("Nieuwe berekening (1)", newlyAddedItem.Name, "An item with the same name default name already exists, therefore '(1)' needs to be appended."); Assert.AreEqual(GetWaterLevelTypeFromNormativeProbabilityType(normativeProbabilityType), newCalculationItem.InputParameters.WaterLevelType); + observer.Received().UpdateObserver(); } } } @@ -1236,22 +1232,20 @@ } }; - var observer = mocks.StrictMock(); - observer.Expect(o => o.UpdateObserver()); + var observer = Substitute.For(); var nodeData = new WaveImpactAsphaltCoverCalculationGroupContext(group, null, failureMechanism, assessmentSection); var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); - var viewCommands = mocks.StrictMock(); + var viewCommands = Substitute.For(); - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - gui.Stub(g => g.ViewCommands).Return(viewCommands); + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); + gui.ViewCommands.Returns(viewCommands); - mocks.ReplayAll(); - + nodeData.Attach(observer); HydraulicBoundaryLocationSelectionDialog dialog = null; @@ -1288,6 +1282,7 @@ WaveConditionsInput secondCalculationInput = secondCalculation.InputParameters; Assert.AreSame(hydraulicBoundaryLocation2, secondCalculationInput.HydraulicBoundaryLocation); Assert.AreEqual(expectedWaveConditionsInputWaterLevelType, secondCalculationInput.WaterLevelType); + observer.Received().UpdateObserver(); } } @@ -1299,9 +1294,9 @@ { var group = new CalculationGroup(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - var assessmentSection = mocks.Stub(); + var assessmentSection = Substitute.For(); - assessmentSection.Stub(a => a.HydraulicBoundaryData).Return(new HydraulicBoundaryData + assessmentSection.HydraulicBoundaryData.Returns(new HydraulicBoundaryData { HydraulicBoundaryDatabases = { @@ -1315,21 +1310,20 @@ } }); - var observer = mocks.StrictMock(); + var observer = Substitute.For(); var nodeData = new WaveImpactAsphaltCoverCalculationGroupContext(group, null, failureMechanism, assessmentSection); var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); - var viewCommands = mocks.StrictMock(); + var viewCommands = Substitute.For(); - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - gui.Stub(g => g.ViewCommands).Return(viewCommands); + gui.Get(nodeData, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); + gui.ViewCommands.Returns(viewCommands); - mocks.ReplayAll(); - + nodeData.Attach(observer); HydraulicBoundaryLocationSelectionDialog dialog = null; @@ -1357,11 +1351,9 @@ public void OnNodeRemoved_ParentIsCalculationGroupContainingGroup_RemoveGroupAndNotifyObservers() { // Setup - var observer = mocks.StrictMock(); - observer.Expect(o => o.UpdateObserver()); + var observer = Substitute.For(); - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); + var assessmentSection = Substitute.For(); var group = new CalculationGroup(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); @@ -1386,14 +1378,15 @@ // Assert CollectionAssert.DoesNotContain(failureMechanism.CalculationsGroup.Children, group); + observer.Received().UpdateObserver(); } [Test] public void GivenCalculationWithoutOutput_ThenClearOutputItemDisabled() { // Given var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + IAssessmentSection assessmentSection = new AssessmentSectionStub(); var context = new WaveImpactAsphaltCoverCalculationGroupContext(failureMechanism.CalculationsGroup, null, @@ -1402,12 +1395,12 @@ using (var treeViewControl = new TreeViewControl()) { - var appFeatureCommandHandler = mocks.Stub(); - var importHandler = mocks.Stub(); - importHandler.Stub(ih => ih.GetSupportedImportInfos(context)).Return(Array.Empty()); - var exportHandler = mocks.Stub(); - var updateHandler = mocks.Stub(); - var viewCommands = mocks.Stub(); + var appFeatureCommandHandler = Substitute.For(); + var importHandler = Substitute.For(); + importHandler.GetSupportedImportInfos(context).Returns(Array.Empty()); + var exportHandler = Substitute.For(); + var updateHandler = Substitute.For(); + var viewCommands = Substitute.For(); var menuBuilder = new ContextMenuBuilder(appFeatureCommandHandler, importHandler, exportHandler, @@ -1416,11 +1409,10 @@ context, treeViewControl); - gui.Stub(g => g.ViewCommands).Return(viewCommands); - gui.Stub(g => g.Get(context, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.ViewCommands.Returns(viewCommands); + gui.Get(context, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); + // When using (ContextMenuStrip contextMenu = info.ContextMenuStrip(context, null, treeViewControl)) { @@ -1438,8 +1430,7 @@ public void GivenCalculationWithOutput_WhenClearingOutput_ThenClearOutput() { // Given - var observer = mocks.Stub(); - observer.Expect(o => o.UpdateObserver()); + var observer = Substitute.For(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); failureMechanism.CalculationsGroup.Attach(observer); @@ -1451,12 +1442,12 @@ using (var treeViewControl = new TreeViewControl()) { - var appFeatureCommandHandler = mocks.Stub(); - var importHandler = mocks.Stub(); - importHandler.Stub(ih => ih.GetSupportedImportInfos(context)).Return(Array.Empty()); - var exportHandler = mocks.Stub(); - var updateHandler = mocks.Stub(); - var viewCommands = mocks.Stub(); + var appFeatureCommandHandler = Substitute.For(); + var importHandler = Substitute.For(); + importHandler.GetSupportedImportInfos(context).Returns(Array.Empty()); + var exportHandler = Substitute.For(); + var updateHandler = Substitute.For(); + var viewCommands = Substitute.For(); var menuBuilder = new ContextMenuBuilder(appFeatureCommandHandler, importHandler, exportHandler, @@ -1465,11 +1456,10 @@ context, treeViewControl); - gui.Stub(g => g.ViewCommands).Return(viewCommands); - gui.Stub(g => g.Get(context, treeViewControl)).Return(menuBuilder); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.ViewCommands.Returns(viewCommands); + gui.Get(context, treeViewControl).Returns(menuBuilder); + gui.MainWindow.Returns(Substitute.For()); + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(context, null, treeViewControl)) { // When @@ -1479,7 +1469,7 @@ // Then Assert.AreEqual(1, failureMechanism.CalculationsGroup.Children.Count); Assert.IsInstanceOf(failureMechanism.CalculationsGroup.Children[0]); - // Check expectancies in TearDown() + observer.Received().UpdateObserver(); } } } @@ -1488,7 +1478,7 @@ public void ContextMenuStrip_CalculationGroupWithCalculationWithForeshoreProfileAndInputOutOfSync_ContextMenuItemUpdateForeshoreProfilesEnabledAndToolTipSet() { // Setup - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + IAssessmentSection assessmentSection = new AssessmentSectionStub(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); var calculation = new WaveImpactAsphaltCoverWaveConditionsCalculation { @@ -1512,10 +1502,9 @@ using (var treeViewControl = new TreeViewControl()) { - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(nodeData, treeViewControl).Returns(new CustomItemsOnlyContextMenuBuilder()); + gui.MainWindow.Returns(Substitute.For()); + calculation.InputParameters.UseBreakWater = true; // Call @@ -1535,11 +1524,10 @@ public void GivenCalculationWithoutOutputAndWithInputOutOfSync_WhenUpdateForeshoreProfilesClicked_ThenNoInquiryAndCalculationUpdatedAndInputObserverNotified() { // Given - var calculationObserver = mocks.StrictMock(); - var calculationInputObserver = mocks.StrictMock(); - calculationInputObserver.Expect(o => o.UpdateObserver()); + var calculationObserver = Substitute.For(); + var calculationInputObserver = Substitute.For(); - IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mocks); + IAssessmentSection assessmentSection = new AssessmentSectionStub(); var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); var calculation = new WaveImpactAsphaltCoverWaveConditionsCalculation @@ -1567,10 +1555,9 @@ using (var treeViewControl = new TreeViewControl()) { - gui.Stub(g => g.Get(nodeData, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - gui.Stub(g => g.MainWindow).Return(mocks.Stub()); - mocks.ReplayAll(); - + gui.Get(nodeData, treeViewControl).Returns(new CustomItemsOnlyContextMenuBuilder()); + gui.MainWindow.Returns(Substitute.For()); + calculation.InputParameters.UseBreakWater = false; using (ContextMenuStrip contextMenuStrip = info.ContextMenuStrip(nodeData, null, treeViewControl)) @@ -1580,14 +1567,15 @@ // Then Assert.IsTrue(calculation.InputParameters.IsForeshoreProfileInputSynchronized); + calculationInputObserver.Received().UpdateObserver(); + calculationObserver.DidNotReceive().UpdateObserver(); } } } public override void Setup() { - mocks = new MockRepository(); - gui = mocks.Stub(); + gui = Substitute.For(); plugin = new WaveImpactAsphaltCoverPlugin { Gui = gui @@ -1598,7 +1586,6 @@ public override void TearDown() { plugin.Dispose(); - mocks.VerifyAll(); base.TearDown(); }