Index: Core/Common/src/Core.Common.Gui/Forms/MainWindow/MainWindow.xaml.cs =================================================================== diff -u -r770547be3030f73473282742f9a63ca6805ff74b -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Core/Common/src/Core.Common.Gui/Forms/MainWindow/MainWindow.xaml.cs (.../MainWindow.xaml.cs) (revision 770547be3030f73473282742f9a63ca6805ff74b) +++ Core/Common/src/Core.Common.Gui/Forms/MainWindow/MainWindow.xaml.cs (.../MainWindow.xaml.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -233,7 +233,7 @@ { if ((propertyGrid == null) || (propertyGrid.IsDisposed)) { - propertyGrid = new PropertyGridView.PropertyGridView(Gui); + propertyGrid = new PropertyGridView.PropertyGridView(Gui, Gui); } propertyGrid.Text = Properties.Resources.Properties_Title; Index: Core/Common/src/Core.Common.Gui/Forms/PropertyGridView/PropertyGridView.cs =================================================================== diff -u -r71dede5dbf330ad9b3f552c5bfd09f7b09b3e14c -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Core/Common/src/Core.Common.Gui/Forms/PropertyGridView/PropertyGridView.cs (.../PropertyGridView.cs) (revision 71dede5dbf330ad9b3f552c5bfd09f7b09b3e14c) +++ Core/Common/src/Core.Common.Gui/Forms/PropertyGridView/PropertyGridView.cs (.../PropertyGridView.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -17,17 +17,19 @@ /// private delegate void ArgumentlessDelegate(); + private readonly IApplicationSelection applicationSelection; private readonly IGui gui; private IObservable observable; - public PropertyGridView(IGui gui) + public PropertyGridView(IGui gui, IApplicationSelection applicationSelection) { HideTabsButton(); FixDescriptionArea(); TranslateToolTips(); PropertySort = PropertySort.Categorized; + this.applicationSelection = applicationSelection; this.gui = gui; gui.SelectionChanged += GuiSelectionChanged; @@ -66,9 +68,9 @@ protected override void Dispose(bool disposing) { - if (gui != null) + if (applicationSelection != null) { - gui.SelectionChanged -= GuiSelectionChanged; + applicationSelection.SelectionChanged -= GuiSelectionChanged; } if (observable != null) @@ -86,7 +88,7 @@ observable.Detach(this); } - var selection = gui.Selection; + var selection = applicationSelection.Selection; if (selection == null) { SelectedObject = null; Index: Core/Common/src/Core.Common.Gui/RingtoetsGui.cs =================================================================== diff -u -r54693eb17dc16b9d1fd390842c05b2ad823ab97b -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Core/Common/src/Core.Common.Gui/RingtoetsGui.cs (.../RingtoetsGui.cs) (revision 54693eb17dc16b9d1fd390842c05b2ad823ab97b) +++ Core/Common/src/Core.Common.Gui/RingtoetsGui.cs (.../RingtoetsGui.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -40,7 +40,7 @@ { private static readonly ILog log = LogManager.GetLogger(typeof(RingtoetsGui)); - private static RingtoetsGui instance; + private static bool isAlreadyRunningInstanceOfIGui; private static string instanceCreationStackTrace; private AvalonDockDockingManager toolWindowViewsDockingManager; @@ -53,16 +53,16 @@ public RingtoetsGui(ApplicationCore applicationCore = null, GuiCoreSettings fixedSettings = null) { // error detection code, make sure we use only a single instance of RingtoetsGui at a time - if (instance != null) + if (isAlreadyRunningInstanceOfIGui) { - instance = null; // reset to that the consequent creations won't fail. + isAlreadyRunningInstanceOfIGui = false; // reset to that the consequent creations won't fail. throw new InvalidOperationException(Resources.RingtoetsGui_Only_a_single_instance_of_Ringtoets_is_allowed_at_the_same_time_per_process_Make_sure_that_the_previous_instance_was_disposed_correctly_stack_trace + instanceCreationStackTrace); } ApplicationCore = applicationCore ?? new ApplicationCore(); FixedSettings = fixedSettings ?? new GuiCoreSettings(); - instance = this; + isAlreadyRunningInstanceOfIGui = true; instanceCreationStackTrace = new StackTrace().ToString(); ViewPropertyEditor.Gui = this; @@ -309,7 +309,7 @@ GC.Collect(); instanceCreationStackTrace = ""; - instance = null; + isAlreadyRunningInstanceOfIGui = false; } private void DeactivatePlugin(GuiPlugin plugin) Index: Core/Plugins/src/Core.Plugins.OxyPlot/Commands/OpenChartViewCommand.cs =================================================================== diff -u -r74cd1965818ae9b23da6cad8776b7da2868be4a7 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Core/Plugins/src/Core.Plugins.OxyPlot/Commands/OpenChartViewCommand.cs (.../OpenChartViewCommand.cs) (revision 74cd1965818ae9b23da6cad8776b7da2868be4a7) +++ Core/Plugins/src/Core.Plugins.OxyPlot/Commands/OpenChartViewCommand.cs (.../OpenChartViewCommand.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; + +using Core.Common.Controls.Commands; using Core.Common.Gui; using Core.Components.Charting.Data; using Core.Plugins.OxyPlot.Forms; @@ -10,8 +12,15 @@ /// /// This class describes the command for opening a with some arbitrary data. /// - public class OpenChartViewCommand : IGuiCommand { + public class OpenChartViewCommand : ICommand + { + private readonly IDocumentViewController documentViewController; + public OpenChartViewCommand(IDocumentViewController documentViewController) + { + this.documentViewController = documentViewController; + } + public bool Enabled { get @@ -28,8 +37,6 @@ } } - public IGui Gui { get; set; } - public void Execute(params object[] arguments) { var line = new LineData(new Collection> @@ -60,7 +67,7 @@ new Tuple(0.5, 1.6), new Tuple(1.0, 2.1) }); - Gui.DocumentViewsResolver.OpenViewForData(new ChartDataCollection( new List { area, clearArea, line, points })); + documentViewController.DocumentViewsResolver.OpenViewForData(new ChartDataCollection(new List { area, clearArea, line, points })); } } } \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.OxyPlot/OxyPlotGuiPlugin.cs =================================================================== diff -u -r74cd1965818ae9b23da6cad8776b7da2868be4a7 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Core/Plugins/src/Core.Plugins.OxyPlot/OxyPlotGuiPlugin.cs (.../OxyPlotGuiPlugin.cs) (revision 74cd1965818ae9b23da6cad8776b7da2868be4a7) +++ Core/Plugins/src/Core.Plugins.OxyPlot/OxyPlotGuiPlugin.cs (.../OxyPlotGuiPlugin.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -34,7 +34,7 @@ public override void Activate() { legendController = CreateLegendController(this); - chartingRibbon = CreateRibbon(legendController); + chartingRibbon = CreateRibbon(legendController, Gui); legendController.ToggleLegend(); Gui.ActiveViewChanged += GuiOnActiveViewChanged; @@ -96,12 +96,13 @@ /// /// The to use for the /// . + /// The controller for Document Views. /// A new instance. - private static ChartingRibbon CreateRibbon(LegendController legendController) + private static ChartingRibbon CreateRibbon(LegendController legendController, IDocumentViewController documentViewController) { return new ChartingRibbon { - OpenChartViewCommand = new OpenChartViewCommand(), + OpenChartViewCommand = new OpenChartViewCommand(documentViewController), ToggleLegendViewCommand = new ToggleLegendViewCommand(legendController) }; } Index: Core/Plugins/test/Core.Plugins.OxyPlot.Test/ChartingRibbonTest.cs =================================================================== diff -u -r18a617da943368e8294aa31528d2e2379d7318cc -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Core/Plugins/test/Core.Plugins.OxyPlot.Test/ChartingRibbonTest.cs (.../ChartingRibbonTest.cs) (revision 18a617da943368e8294aa31528d2e2379d7318cc) +++ Core/Plugins/test/Core.Plugins.OxyPlot.Test/ChartingRibbonTest.cs (.../ChartingRibbonTest.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -1,5 +1,7 @@ using System.Linq; using System.Windows; + +using Core.Common.Gui; using Core.Components.Charting; using Core.Plugins.OxyPlot.Commands; using Core.Plugins.OxyPlot.Legend; @@ -32,8 +34,13 @@ public void Commands_CommandsAssigned_ReturnsAssignedCommands() { // Setup - using(var oxyPlotGuiPlugin = new OxyPlotGuiPlugin()) { - var openChartViewCommand = new OpenChartViewCommand(); + var mocks = new MockRepository(); + var documentViewController = mocks.Stub(); + mocks.ReplayAll(); + + using(var oxyPlotGuiPlugin = new OxyPlotGuiPlugin()) + { + var openChartViewCommand = new OpenChartViewCommand(documentViewController); var toggleLegendViewCommand = new ToggleLegendViewCommand(new LegendController(oxyPlotGuiPlugin)); var ribbon = new ChartingRibbon { @@ -47,6 +54,7 @@ // Assert CollectionAssert.AreEqual(new ICommand[]{openChartViewCommand, toggleLegendViewCommand}, commands); } + mocks.VerifyAll(); } [Test] Index: Core/Plugins/test/Core.Plugins.OxyPlot.Test/Commands/OpenChartViewCommandTest.cs =================================================================== diff -u -r03d5df1364557b6f4a184908affb7754e58b3fa4 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Core/Plugins/test/Core.Plugins.OxyPlot.Test/Commands/OpenChartViewCommandTest.cs (.../OpenChartViewCommandTest.cs) (revision 03d5df1364557b6f4a184908affb7754e58b3fa4) +++ Core/Plugins/test/Core.Plugins.OxyPlot.Test/Commands/OpenChartViewCommandTest.cs (.../OpenChartViewCommandTest.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -1,9 +1,11 @@ using Core.Common.Gui; using Core.Plugins.OxyPlot.Commands; + using NUnit.Framework; + using Rhino.Mocks; -namespace Core.Plugins.OxyPlot.Test +namespace Core.Plugins.OxyPlot.Test.Commands { [TestFixture] public class OpenChartViewCommandTest @@ -13,15 +15,14 @@ { // Setup var mocks = new MockRepository(); - var guiMock = mocks.StrictMock(); + var guiMock = mocks.StrictMock(); var viewResolverMock = mocks.StrictMock(); guiMock.Expect(g => g.DocumentViewsResolver).Return(viewResolverMock); viewResolverMock.Expect(vr => vr.OpenViewForData(null)).IgnoreArguments().Return(true); mocks.ReplayAll(); - var command = new OpenChartViewCommand(); - command.Gui = guiMock; + var command = new OpenChartViewCommand(guiMock); // Call command.Execute(); @@ -34,20 +35,36 @@ public void Enabled_Always_ReturnsTrue() { // Setup - var command = new OpenChartViewCommand(); + var mocks = new MockRepository(); + var documentViewControler = mocks.Stub(); + mocks.ReplayAll(); - // Call & Assert - Assert.IsTrue(command.Enabled); + var command = new OpenChartViewCommand(documentViewControler); + + // Call + var isEnabled = command.Enabled; + + // Assert + Assert.IsTrue(isEnabled); + mocks.VerifyAll(); } [Test] public void Checked_Always_ReturnsFalse() { // Setup - var command = new OpenChartViewCommand(); + var mocks = new MockRepository(); + var documentViewController = mocks.Stub(); + mocks.ReplayAll(); - // Call & Assert - Assert.IsFalse(command.Checked); + var command = new OpenChartViewCommand(documentViewController); + + // Call + var isChecked = command.Checked; + + // Assert + Assert.IsFalse(isChecked); + mocks.VerifyAll(); } } } \ No newline at end of file Index: Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDikeAssessmentSectionCommand.cs =================================================================== diff -u -rdbf6ecaa927e26f430d7c73290df7e825ec04744 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDikeAssessmentSectionCommand.cs (.../AddNewDemoDikeAssessmentSectionCommand.cs) (revision dbf6ecaa927e26f430d7c73290df7e825ec04744) +++ Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDikeAssessmentSectionCommand.cs (.../AddNewDemoDikeAssessmentSectionCommand.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -1,6 +1,8 @@ using System; using System.IO; using System.Linq; + +using Core.Common.Controls.Commands; using Core.Common.Gui; using Core.Common.Utils.Reflection; using Ringtoets.Integration.Data; @@ -12,8 +14,15 @@ /// /// Command that adds a new with demo data to the project tree. /// - public class AddNewDemoDikeAssessmentSectionCommand : IGuiCommand + public class AddNewDemoDikeAssessmentSectionCommand : ICommand { + private readonly IProjectOwner projectOwner; + + public AddNewDemoDikeAssessmentSectionCommand(IProjectOwner projectOwner) + { + this.projectOwner = projectOwner; + } + public bool Enabled { get @@ -30,11 +39,9 @@ } } - public IGui Gui { get; set; } - public void Execute(params object[] arguments) { - var project = Gui.Project; + var project = projectOwner.Project; project.Items.Add(CreateNewDemoAssessmentSection()); project.NotifyObservers(); } Index: Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDuneAssessmentSectionCommand.cs =================================================================== diff -u -rdbf6ecaa927e26f430d7c73290df7e825ec04744 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDuneAssessmentSectionCommand.cs (.../AddNewDemoDuneAssessmentSectionCommand.cs) (revision dbf6ecaa927e26f430d7c73290df7e825ec04744) +++ Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDuneAssessmentSectionCommand.cs (.../AddNewDemoDuneAssessmentSectionCommand.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -1,13 +1,21 @@ -using Core.Common.Gui; +using Core.Common.Controls.Commands; +using Core.Common.Gui; using Ringtoets.Integration.Data; namespace Demo.Ringtoets.Commands { /// /// Command that adds a new with demo data to the project tree. /// - public class AddNewDemoDuneAssessmentSectionCommand : IGuiCommand + public class AddNewDemoDuneAssessmentSectionCommand : ICommand { + private readonly IProjectOwner projectOwner; + + public AddNewDemoDuneAssessmentSectionCommand(IProjectOwner projectOwner) + { + this.projectOwner = projectOwner; + } + public bool Enabled { get @@ -24,11 +32,9 @@ } } - public IGui Gui { get; set; } - public void Execute(params object[] arguments) { - var project = Gui.Project; + var project = projectOwner.Project; project.Items.Add(CreateNewDemoAssessmentSection()); project.NotifyObservers(); } Index: Demo/Ringtoets/src/Demo.Ringtoets/Commands/OpenMapViewCommand.cs =================================================================== diff -u -rd182ae6d1a6590c4b52b17fd1f59c5b7c3780b48 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Demo/Ringtoets/src/Demo.Ringtoets/Commands/OpenMapViewCommand.cs (.../OpenMapViewCommand.cs) (revision d182ae6d1a6590c4b52b17fd1f59c5b7c3780b48) +++ Demo/Ringtoets/src/Demo.Ringtoets/Commands/OpenMapViewCommand.cs (.../OpenMapViewCommand.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; + +using Core.Common.Controls.Commands; using Core.Common.Gui; using Core.Components.DotSpatial.Data; using Core.Plugins.DotSpatial.Forms; @@ -9,8 +11,15 @@ /// /// The command for opening a with some arbitrary data. /// - public class OpenMapViewCommand : IGuiCommand + public class OpenMapViewCommand : ICommand { + private readonly IDocumentViewController documentViewController; + + public OpenMapViewCommand(IDocumentViewController documentViewController) + { + this.documentViewController = documentViewController; + } + public bool Enabled { get @@ -27,8 +36,6 @@ } } - public IGui Gui { get; set; } - public void Execute(params object[] arguments) { var data = new MapData(); @@ -52,7 +59,7 @@ } } - Gui.DocumentViewsResolver.OpenViewForData(data); + documentViewController.DocumentViewsResolver.OpenViewForData(data); } } } \ No newline at end of file Index: Demo/Ringtoets/src/Demo.Ringtoets/GUIs/DemoProjectGuiPlugin.cs =================================================================== diff -u -rd0615029ee52b3dbe0eda73c8cf9ba40e4353ee4 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Demo/Ringtoets/src/Demo.Ringtoets/GUIs/DemoProjectGuiPlugin.cs (.../DemoProjectGuiPlugin.cs) (revision d0615029ee52b3dbe0eda73c8cf9ba40e4353ee4) +++ Demo/Ringtoets/src/Demo.Ringtoets/GUIs/DemoProjectGuiPlugin.cs (.../DemoProjectGuiPlugin.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -12,7 +12,7 @@ { get { - return new Ribbons.RingtoetsDemoProjectRibbon(); + return new Ribbons.RingtoetsDemoProjectRibbon(Gui, Gui); } } } Index: Demo/Ringtoets/src/Demo.Ringtoets/Ribbons/RingtoetsDemoProjectRibbon.xaml.cs =================================================================== diff -u -rd182ae6d1a6590c4b52b17fd1f59c5b7c3780b48 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Demo/Ringtoets/src/Demo.Ringtoets/Ribbons/RingtoetsDemoProjectRibbon.xaml.cs (.../RingtoetsDemoProjectRibbon.xaml.cs) (revision d182ae6d1a6590c4b52b17fd1f59c5b7c3780b48) +++ Demo/Ringtoets/src/Demo.Ringtoets/Ribbons/RingtoetsDemoProjectRibbon.xaml.cs (.../RingtoetsDemoProjectRibbon.xaml.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Windows; using Core.Common.Controls.Commands; +using Core.Common.Gui; using Core.Common.Gui.Forms; using Demo.Ringtoets.Commands; using Fluent; @@ -14,13 +15,13 @@ { private readonly ICommand addNewDikeAssessmentSection, addNewDuneAssessmentSection, openMapViewCommand; - public RingtoetsDemoProjectRibbon() + public RingtoetsDemoProjectRibbon(IProjectOwner projectOwner, IDocumentViewController documentViewController) { InitializeComponent(); - addNewDikeAssessmentSection = new AddNewDemoDikeAssessmentSectionCommand(); - addNewDuneAssessmentSection = new AddNewDemoDuneAssessmentSectionCommand(); - openMapViewCommand = new OpenMapViewCommand(); + addNewDikeAssessmentSection = new AddNewDemoDikeAssessmentSectionCommand(projectOwner); + addNewDuneAssessmentSection = new AddNewDemoDuneAssessmentSectionCommand(projectOwner); + openMapViewCommand = new OpenMapViewCommand(documentViewController); } public IEnumerable Commands Index: Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs =================================================================== diff -u -rdbf6ecaa927e26f430d7c73290df7e825ec04744 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs (.../AddNewDemoDikeAssessmentSectionCommandTest.cs) (revision dbf6ecaa927e26f430d7c73290df7e825ec04744) +++ Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs (.../AddNewDemoDikeAssessmentSectionCommandTest.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -1,7 +1,7 @@ using System.Linq; using Core.Common.Base; using Core.Common.Base.Data; -using Core.Common.Base.Plugin; +using Core.Common.Controls.Commands; using Core.Common.Gui; using Demo.Ringtoets.Commands; using NUnit.Framework; @@ -19,40 +19,38 @@ [Test] public void DefaultConstructor_ExpectedValues() { + // Setup + var mocks = new MockRepository(); + var projectOwner = mocks.Stub(); + mocks.ReplayAll(); + // Call - var command = new AddNewDemoDikeAssessmentSectionCommand(); + var command = new AddNewDemoDikeAssessmentSectionCommand(projectOwner); // Assert - Assert.IsInstanceOf(command); + Assert.IsInstanceOf(command); Assert.IsTrue(command.Enabled); Assert.IsFalse(command.Checked); - Assert.IsNull(command.Gui); + mocks.VerifyAll(); } [Test] public void Execute_GuiIsProperlyInitialized_AddNewDikeAssessmentSectionWithDemoDataToRootProject() { // Setup + var project = new Project(); + var mocks = new MockRepository(); - var guiMock = mocks.Stub(); + var projectOwnerStub = mocks.Stub(); + projectOwnerStub.Project = project; - var applicationCore = new ApplicationCore(); - Expect.Call(guiMock.ApplicationCore).Return(applicationCore).Repeat.Any(); - var observerMock = mocks.StrictMock(); observerMock.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); - var project = new Project(); + var command = new AddNewDemoDikeAssessmentSectionCommand(projectOwnerStub); - guiMock.Project = project; - - var command = new AddNewDemoDikeAssessmentSectionCommand - { - Gui = guiMock - }; - project.Attach(observerMock); // Call Index: Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/AddNewDemoDuneAssessmentSectionCommandTest.cs =================================================================== diff -u -rdbf6ecaa927e26f430d7c73290df7e825ec04744 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/AddNewDemoDuneAssessmentSectionCommandTest.cs (.../AddNewDemoDuneAssessmentSectionCommandTest.cs) (revision dbf6ecaa927e26f430d7c73290df7e825ec04744) +++ Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/AddNewDemoDuneAssessmentSectionCommandTest.cs (.../AddNewDemoDuneAssessmentSectionCommandTest.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -1,6 +1,6 @@ using Core.Common.Base; using Core.Common.Base.Data; -using Core.Common.Base.Plugin; +using Core.Common.Controls.Commands; using Core.Common.Gui; using Demo.Ringtoets.Commands; using NUnit.Framework; @@ -13,42 +13,40 @@ public class AddNewDemoDuneAssessmentSectionCommandTest { [Test] - public void DefaultConstructor_ExpectedValues() + public void ParameteredConstructor_ExpectedValues() { + // Setup + var mocks = new MockRepository(); + var projectOwner = mocks.Stub(); + mocks.ReplayAll(); + // Call - var command = new AddNewDemoDuneAssessmentSectionCommand(); + var command = new AddNewDemoDuneAssessmentSectionCommand(projectOwner); // Assert - Assert.IsInstanceOf(command); + Assert.IsInstanceOf(command); Assert.IsTrue(command.Enabled); Assert.IsFalse(command.Checked); - Assert.IsNull(command.Gui); + mocks.VerifyAll(); } [Test] public void Execute_GuiIsProperlyInitialized_AddNewDuneAssessmentSectionWithDemoDataToRootProject() { // Setup + var project = new Project(); + var mocks = new MockRepository(); - var guiMock = mocks.Stub(); + var projectOwnerStub = mocks.Stub(); + projectOwnerStub.Project = project; - var applicationCore = new ApplicationCore(); - Expect.Call(guiMock.ApplicationCore).Return(applicationCore).Repeat.Any(); - var observerMock = mocks.StrictMock(); observerMock.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); - var project = new Project(); + var command = new AddNewDemoDuneAssessmentSectionCommand(projectOwnerStub); - guiMock.Project = project; - - var command = new AddNewDemoDuneAssessmentSectionCommand - { - Gui = guiMock - }; - project.Attach(observerMock); // Call Index: Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/OpenMapViewCommandTest.cs =================================================================== diff -u -r61a6a8a9c4f009fef0e5fe130f167bd09d5573a3 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/OpenMapViewCommandTest.cs (.../OpenMapViewCommandTest.cs) (revision 61a6a8a9c4f009fef0e5fe130f167bd09d5573a3) +++ Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/OpenMapViewCommandTest.cs (.../OpenMapViewCommandTest.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -1,4 +1,5 @@ -using Core.Common.Gui; +using Core.Common.Controls.Commands; +using Core.Common.Gui; using Core.Components.DotSpatial.Data; using Demo.Ringtoets.Commands; using NUnit.Framework; @@ -10,34 +11,36 @@ public class OpenMapViewCommandTest { [Test] - public void DefaultConstructor_DefaultValues() + public void ParameteredConstructor_DefaultValues() { + // Setup + var mocks = new MockRepository(); + var documentViewController = mocks.Stub(); + mocks.ReplayAll(); + // Call - var command = new OpenMapViewCommand(); + var command = new OpenMapViewCommand(documentViewController); // Assert - Assert.IsInstanceOf(command); + Assert.IsInstanceOf(command); Assert.IsTrue(command.Enabled); Assert.IsFalse(command.Checked); - Assert.IsNull(command.Gui); + mocks.VerifyAll();; } [Test] public void Execute_Always_OpensViewForMapData() { // Setup var mocks = new MockRepository(); - var guiMock = mocks.StrictMock(); + var documentViewControllerMock = mocks.StrictMock(); var viewResolverMock = mocks.StrictMock(); - guiMock.Expect(g => g.DocumentViewsResolver).Return(viewResolverMock); + documentViewControllerMock.Expect(g => g.DocumentViewsResolver).Return(viewResolverMock); viewResolverMock.Expect(vr => vr.OpenViewForData(Arg.Matches(md => md.IsValid()), Arg.Matches(b => b == false))).Return(true); mocks.ReplayAll(); - var command = new OpenMapViewCommand - { - Gui = guiMock - }; + var command = new OpenMapViewCommand(documentViewControllerMock); // Call command.Execute(); @@ -49,21 +52,33 @@ [Test] public void Enabled_Always_ReturnsTrue() { + // Setup + var mocks = new MockRepository(); + var documentViewController = mocks.Stub(); + mocks.ReplayAll(); + // Call - var command = new OpenMapViewCommand(); + var command = new OpenMapViewCommand(documentViewController); // Assert Assert.IsTrue(command.Enabled); + mocks.VerifyAll(); } [Test] public void Checked_Always_ReturnsFalse() { + // Setup + var mocks = new MockRepository(); + var documentViewController = mocks.Stub(); + mocks.ReplayAll(); + // Call - var command = new OpenMapViewCommand(); + var command = new OpenMapViewCommand(documentViewController); // Assert Assert.IsFalse(command.Checked); + mocks.VerifyAll(); } } } \ No newline at end of file Index: Demo/Ringtoets/test/Demo.Ringtoets.Test/Ribbons/RingtoestDemoProjectRibbonTest.cs =================================================================== diff -u -r61a6a8a9c4f009fef0e5fe130f167bd09d5573a3 -rf9058d5293ecb785069c5b6b4c554dc6800ee771 --- Demo/Ringtoets/test/Demo.Ringtoets.Test/Ribbons/RingtoestDemoProjectRibbonTest.cs (.../RingtoestDemoProjectRibbonTest.cs) (revision 61a6a8a9c4f009fef0e5fe130f167bd09d5573a3) +++ Demo/Ringtoets/test/Demo.Ringtoets.Test/Ribbons/RingtoestDemoProjectRibbonTest.cs (.../RingtoestDemoProjectRibbonTest.cs) (revision f9058d5293ecb785069c5b6b4c554dc6800ee771) @@ -19,37 +19,58 @@ [RequiresSTA] public void DefaultContructor_CreatesCommands() { + // Setup + var mocks = new MockRepository(); + var projectOwner = mocks.Stub(); + var documentViewController = mocks.Stub(); + mocks.ReplayAll(); + // Call - var ribbon = new RingtoetsDemoProjectRibbon(); + var ribbon = new RingtoetsDemoProjectRibbon(projectOwner, documentViewController); var commands = ribbon.Commands.ToArray(); // Assert CollectionAssert.IsNotEmpty(commands); CollectionAssert.AllItemsAreInstancesOfType(commands, typeof(ICommand)); CollectionAssert.AllItemsAreUnique(commands); + mocks.VerifyAll(); } [Test] [RequiresSTA] public void DefaultConstructor_Always_CreatesControl() { + // Setup + var mocks = new MockRepository(); + var projectOwner = mocks.Stub(); + var documentViewController = mocks.Stub(); + mocks.ReplayAll(); + // Call - var ribbon = new RingtoetsDemoProjectRibbon(); + var ribbon = new RingtoetsDemoProjectRibbon(projectOwner, documentViewController); // Assert Assert.IsNotNull(ribbon); Assert.IsInstanceOf(ribbon.GetRibbonControl()); + mocks.VerifyAll(); } [Test] [RequiresSTA] public void IsContextualTabVisible_Always_ReturnsFalse() { + // Setup + var mocks = new MockRepository(); + var projectOwnerStub = mocks.Stub(); + var documentViewController = mocks.Stub(); + mocks.ReplayAll(); + // Call - var ribbon = new RingtoetsDemoProjectRibbon(); + var ribbon = new RingtoetsDemoProjectRibbon(projectOwnerStub, documentViewController); // Assert Assert.IsFalse(ribbon.IsContextualTabVisible(null, null)); + mocks.VerifyAll(); } [Test] @@ -59,20 +80,22 @@ // Setup var mocks = new MockRepository(); var viewResolver = mocks.StrictMock(); - viewResolver.Expect(vr => vr.OpenViewForData(Arg.Matches(md => md.IsValid()), Arg.Matches(b => b == false))).Return(true); + viewResolver.Expect(vr => vr.OpenViewForData(Arg.Matches(md => md.IsValid()), + Arg.Matches(b => b == false))) + .Return(true); - var gui = mocks.StrictMock(); - gui.Expect(g => g.DocumentViewsResolver).Return(viewResolver); - + var projectOwner = mocks.Stub(); + var documentViewController = mocks.Stub(); + documentViewController.Expect(dvc => dvc.DocumentViewsResolver).Return(viewResolver); + mocks.ReplayAll(); - var ribbon = new RingtoetsDemoProjectRibbon(); - ribbon.Commands.OfType().First().Gui = gui; + var ribbon = new RingtoetsDemoProjectRibbon(projectOwner, documentViewController); var button = ribbon.GetRibbonControl().FindName("OpenMapViewButton") as Button; // Precondition - Assert.IsNotNull((object) button, "Ribbon should have an open map view button"); + Assert.IsNotNull(button, "Ribbon should have an open map view button"); // Call button.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));