Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs
===================================================================
diff -u -ra65bc56647a666fad39e7fe48fbce3a5c040dfee -r11ba203152ddf37106da76d9a38d4ffd771026dd
--- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision a65bc56647a666fad39e7fe48fbce3a5c040dfee)
+++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/IntegrationTests/StorageSqLiteIntegrationTest.cs (.../StorageSqLiteIntegrationTest.cs) (revision 11ba203152ddf37106da76d9a38d4ffd771026dd)
@@ -2,8 +2,10 @@
using System.IO;
using System.Linq;
using Core.Common.Base.Data;
+using Core.Common.Base.Plugin;
using Core.Common.Gui;
using Core.Common.Gui.Forms.MainWindow;
+using Core.Common.Gui.Settings;
using Core.Common.TestUtil;
using NUnit.Framework;
using Ringtoets.Integration.Data;
@@ -108,7 +110,7 @@
var testFile = Path.Combine(testDataPath, "ValidRingtoetsDatabase.rtd");
var projectStore = new StorageSqLite();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
// Call
Action action = () => gui.Run(testFile);
@@ -136,7 +138,7 @@
var testFile = "SomeFile";
var projectStore = new StorageSqLite();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
// Call
Action action = () => gui.Run(testFile);
@@ -168,7 +170,7 @@
// Setup
var projectStore = new StorageSqLite();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
// Call
Action action = () => gui.Run(testFile);
Index: Core/Common/src/Core.Common.Gui/RingtoetsGui.cs
===================================================================
diff -u -r8facffc48a20cd49759e32aea1ecc100047c68a2 -r11ba203152ddf37106da76d9a38d4ffd771026dd
--- Core/Common/src/Core.Common.Gui/RingtoetsGui.cs (.../RingtoetsGui.cs) (revision 8facffc48a20cd49759e32aea1ecc100047c68a2)
+++ Core/Common/src/Core.Common.Gui/RingtoetsGui.cs (.../RingtoetsGui.cs) (revision 11ba203152ddf37106da76d9a38d4ffd771026dd)
@@ -57,7 +57,7 @@
namespace Core.Common.Gui
{
///
- /// Gui class provides graphical user functionality for a given IApplication.
+ /// Gui class provides graphical user functionality for the application.
///
public class RingtoetsGui : IGui
{
@@ -73,19 +73,45 @@
private bool runFinished;
private bool isExiting;
- public RingtoetsGui(IMainWindow mainWindow, IStoreProject projectStore, ApplicationCore applicationCore = null, GuiCoreSettings fixedSettings = null)
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The main window.
+ /// The project store.
+ /// The application core.
+ /// The fixed settings.
+ /// When another
+ /// instance is running.
+ /// When any parameter is null.
+ public RingtoetsGui(IMainWindow mainWindow, IStoreProject projectStore, ApplicationCore applicationCore, GuiCoreSettings fixedSettings)
{
// error detection code, make sure we use only a single instance of RingtoetsGui at a time
if (isAlreadyRunningInstanceOfIGui)
{
- isAlreadyRunningInstanceOfIGui = false; // reset to that the consequent creations won't fail.
+ isAlreadyRunningInstanceOfIGui = false; // reset to that the consecutive 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);
}
+ if (mainWindow == null)
+ {
+ throw new ArgumentNullException("mainWindow");
+ }
+ if (projectStore == null)
+ {
+ throw new ArgumentNullException("projectStore");
+ }
+ if (applicationCore == null)
+ {
+ throw new ArgumentNullException("applicationCore");
+ }
+ if (fixedSettings == null)
+ {
+ throw new ArgumentNullException("fixedSettings");
+ }
MainWindow = mainWindow;
Storage = projectStore;
- ApplicationCore = applicationCore ?? new ApplicationCore();
- FixedSettings = fixedSettings ?? new GuiCoreSettings();
+ ApplicationCore = applicationCore;
+ FixedSettings = fixedSettings;
isAlreadyRunningInstanceOfIGui = true;
instanceCreationStackTrace = new StackTrace().ToString();
@@ -894,13 +920,13 @@
public event EventHandler ActiveViewChanged;
- public bool IsViewRemoveOnItemDeleteSuspended { get; set; }
-
public IView ActiveView
{
get
{
- return DocumentViews.ActiveView;
+ return documentViews != null ?
+ DocumentViews.ActiveView :
+ null;
}
}
Index: Core/Common/test/Core.Common.Gui.Test/RingtoetsGuiTests.cs
===================================================================
diff -u -re4ee8a21ab07f3446dc417e50574b6bc6106f460 -r11ba203152ddf37106da76d9a38d4ffd771026dd
--- Core/Common/test/Core.Common.Gui.Test/RingtoetsGuiTests.cs (.../RingtoetsGuiTests.cs) (revision e4ee8a21ab07f3446dc417e50574b6bc6106f460)
+++ Core/Common/test/Core.Common.Gui.Test/RingtoetsGuiTests.cs (.../RingtoetsGuiTests.cs) (revision 11ba203152ddf37106da76d9a38d4ffd771026dd)
@@ -1,13 +1,20 @@
using System;
+using System.Collections.Specialized;
+using System.Configuration;
using System.Linq;
+using System.Windows.Forms;
using Core.Common.Base.Plugin;
using Core.Common.Base.Storage;
using Core.Common.Controls.TreeView;
+using Core.Common.Gui.Commands;
using Core.Common.Gui.Forms.MainWindow;
using Core.Common.Gui.Forms.MessageWindow;
using Core.Common.Gui.Plugin;
+using Core.Common.Gui.Settings;
using Core.Common.Gui.Test.Forms.ViewManager;
+using Core.Common.Gui.Theme;
+using Core.Common.TestUtil;
using NUnit.Framework;
@@ -19,22 +26,167 @@
public class RingtoetsGuiTests
{
private MessageWindowLogAppender originalAppender;
+ private IViewCommands originalViewPropertyEditor;
[SetUp]
public void SetUp()
{
originalAppender = MessageWindowLogAppender.Instance;
MessageWindowLogAppender.Instance = new MessageWindowLogAppender();
+
+ originalViewPropertyEditor = ViewPropertyEditor.ViewCommands;
}
[TearDown]
public void TearDown()
{
MessageWindowLogAppender.Instance = originalAppender;
+ ViewPropertyEditor.ViewCommands = originalViewPropertyEditor;
}
[Test]
[STAThread]
+ public void ParameteredConstructor_ValidArguments_ExpectedValues()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var projectStore = mocks.Stub();
+ mocks.ReplayAll();
+
+ var applicationCore = new ApplicationCore();
+ var guiCoreSettings = new GuiCoreSettings();
+
+ // Call
+ using (var mainWindow = new MainWindow())
+ using (var gui = new RingtoetsGui(mainWindow, projectStore, applicationCore, guiCoreSettings))
+ {
+ // Assert
+ Assert.AreSame(applicationCore, gui.ApplicationCore);
+ Assert.AreEqual(null, gui.PropertyResolver);
+ Assert.AreSame(projectStore, gui.Storage);
+
+ Assert.AreEqual(null, gui.ProjectFilePath);
+ Assert.AreEqual(null, gui.Project);
+
+ Assert.AreEqual(null, gui.Selection);
+
+ Assert.IsInstanceOf(gui.ProjectCommands);
+ Assert.IsInstanceOf(gui.StorageCommands);
+ Assert.IsInstanceOf(gui.ViewCommands);
+ Assert.AreEqual(null, gui.ApplicationCommands);
+
+ Assert.AreEqual(null, gui.ActiveView);
+ Assert.AreEqual(null, gui.DocumentViews);
+ Assert.AreEqual(null, gui.DocumentViewsResolver);
+
+ AssertDefaultUserSettings(gui.UserSettings);
+ Assert.AreSame(guiCoreSettings, gui.FixedSettings);
+
+ CollectionAssert.IsEmpty(gui.Plugins);
+
+ Assert.AreEqual(mainWindow, gui.MainWindow);
+
+ Assert.AreEqual(null, gui.ToolWindowViews);
+
+ Assert.AreSame(ViewPropertyEditor.ViewCommands, gui.ViewCommands);
+
+ Assert.IsTrue(Application.RenderWithVisualStyles);
+ }
+ mocks.VerifyAll();
+ }
+
+ private static void AssertDefaultUserSettings(SettingsBase settings)
+ {
+ Assert.IsNotNull(settings);
+ Assert.AreEqual(15, settings.Properties.Count);
+ var mruList = (StringCollection)settings["mruList"];
+ CollectionAssert.IsEmpty(mruList);
+ var defaultViewDataTypes = (StringCollection)settings["defaultViewDataTypes"];
+ CollectionAssert.IsEmpty(defaultViewDataTypes);
+ var defaultViews = (StringCollection)settings["defaultViews"];
+ CollectionAssert.IsEmpty(defaultViews);
+ var lastVisitedPath = (string)settings["lastVisitedPath"];
+ Assert.AreEqual(string.Empty, lastVisitedPath);
+ var isMainWindowFullScreen = (bool)settings["MainWindow_FullScreen"];
+ Assert.IsFalse(isMainWindowFullScreen);
+ var x = (int)settings["MainWindow_X"];
+ Assert.AreEqual(50, x);
+ var y = (int)settings["MainWindow_Y"];
+ Assert.AreEqual(50, y);
+ var width = (int)settings["MainWindow_Width"];
+ Assert.AreEqual(1024, width);
+ var height = (int)settings["MainWindow_Height"];
+ Assert.AreEqual(768, height);
+ var startPageName = (string)settings["startPageName"];
+ Assert.AreEqual("Startpagina", startPageName);
+ var showStartPage = (bool)settings["showStartPage"];
+ Assert.IsTrue(showStartPage);
+ var showSplashScreen = (bool)settings["showSplashScreen"];
+ Assert.IsTrue(showSplashScreen);
+ var showHiddenDataItems = (bool)settings["showHiddenDataItems"];
+ Assert.IsFalse(showHiddenDataItems);
+ var colorTheme = (ColorTheme)settings["colorTheme"];
+ Assert.AreEqual(ColorTheme.Generic, colorTheme);
+ }
+
+ [Test]
+ [STAThread]
+ [TestCase(0)]
+ [TestCase(1)]
+ [TestCase(2)]
+ [TestCase(3)]
+ public void ParameteredConstructor_SomeArgumentIsNull_ThrowArgumentNullException(int nullArgumentIndex)
+ {
+ // Setup
+ var mocks = new MockRepository();
+ IStoreProject projectStore = nullArgumentIndex == 1 ? null : mocks.Stub();
+ mocks.ReplayAll();
+
+ ApplicationCore applicationCore = nullArgumentIndex == 2 ? null : new ApplicationCore();
+ GuiCoreSettings guiCoreSettings = nullArgumentIndex == 3 ? null : new GuiCoreSettings();
+
+ // Call
+ using (var mainWindow = new MainWindow())
+
+ {
+ // Call
+ TestDelegate call = () => new RingtoetsGui(nullArgumentIndex == 0 ? null : mainWindow, projectStore, applicationCore, guiCoreSettings);
+
+ // Assert
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, "Value cannot be null.");
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ [STAThread]
+ [ExpectedException(typeof(InvalidOperationException))]
+ public void Constructor_ConstuctedAfterAnotherInstanceHasBeenCreated_ThrowInvalidOperationException()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var projectStore = mocks.Stub();
+ mocks.ReplayAll();
+
+ var applicationCore = new ApplicationCore();
+ var guiCoreSettings = new GuiCoreSettings();
+
+ // Call
+ using (var mainWindow = new MainWindow())
+ using (var gui = new RingtoetsGui(mainWindow, projectStore, applicationCore, guiCoreSettings))
+ {
+ // Call
+ using (var gui2 = new RingtoetsGui(mainWindow, projectStore, applicationCore, guiCoreSettings))
+ {
+ // Assert
+ Assert.Fail("Expected an InvalidOperationException to be thrown.");
+ }
+ }
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ [STAThread]
public void DisposingGuiDisposesApplication()
{
// Setup
@@ -44,7 +196,7 @@
applicationCore.Expect(ac => ac.Dispose());
mocks.ReplayAll();
- var gui = new RingtoetsGui(new MainWindow(), projectStore, applicationCore);
+ var gui = new RingtoetsGui(new MainWindow(), projectStore, applicationCore, new GuiCoreSettings());
// Call
gui.Dispose();
@@ -65,7 +217,7 @@
projectStore.Expect(ps => ps.LoadProject(testFile));
mocks.ReplayAll();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
// Call
gui.Run(testFile);
@@ -84,7 +236,7 @@
var projectStore = mocks.Stub();
mocks.ReplayAll();
- using (new RingtoetsGui(new MainWindow(), projectStore))
+ using (new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
Assert.NotNull(ViewPropertyEditor.ViewCommands);
}
@@ -100,7 +252,7 @@
var projectStore = mocks.Stub();
mocks.ReplayAll();
- using (var ringtoetsGui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var ringtoetsGui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
var rootData = new object();
@@ -139,7 +291,7 @@
plugin2.Stub(p => p.Deactivate());
mocks.ReplayAll();
- using (var ringtoetsGui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var ringtoetsGui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
ringtoetsGui.Plugins.Add(plugin1);
ringtoetsGui.Plugins.Add(plugin2);
@@ -191,7 +343,7 @@
plugin2.Stub(p => p.Deactivate());
mocks.ReplayAll();
- using (var ringtoetsGui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var ringtoetsGui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
ringtoetsGui.Plugins.Add(plugin1);
ringtoetsGui.Plugins.Add(plugin2);
@@ -218,7 +370,7 @@
var projectStore = mocks.Stub();
mocks.ReplayAll();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
gui.Run();
@@ -251,7 +403,7 @@
var projectStore = mocks.Stub();
mocks.ReplayAll();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
// Call
var result = gui.GetTreeNodeInfos();
@@ -299,7 +451,7 @@
pluginC.Stub(p => p.Deactivate());
mocks.ReplayAll();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
gui.Plugins.Add(pluginA);
gui.Plugins.Add(pluginB);
Index: Core/Common/test/Core.Common.Integration.Test/Ringtoets/Application.Ringtoets/RingtoetsGuiIntegrationTest.cs
===================================================================
diff -u -rd52ae535aea52b4e43aa6837305502e6cd911a92 -r11ba203152ddf37106da76d9a38d4ffd771026dd
--- Core/Common/test/Core.Common.Integration.Test/Ringtoets/Application.Ringtoets/RingtoetsGuiIntegrationTest.cs (.../RingtoetsGuiIntegrationTest.cs) (revision d52ae535aea52b4e43aa6837305502e6cd911a92)
+++ Core/Common/test/Core.Common.Integration.Test/Ringtoets/Application.Ringtoets/RingtoetsGuiIntegrationTest.cs (.../RingtoetsGuiIntegrationTest.cs) (revision 11ba203152ddf37106da76d9a38d4ffd771026dd)
@@ -1,8 +1,10 @@
using System.Windows.Controls;
+using Core.Common.Base.Plugin;
using Core.Common.Base.Storage;
using Core.Common.Gui;
using Core.Common.Gui.Forms.MainWindow;
+using Core.Common.Gui.Settings;
using Core.Common.TestUtil;
using Core.Plugins.ProjectExplorer;
using NUnit.Framework;
@@ -30,7 +32,7 @@
var projectStore = mocks.Stub();
mocks.ReplayAll();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
var applicationCore = gui.ApplicationCore;
@@ -57,7 +59,7 @@
var projectStore = mocks.Stub();
mocks.ReplayAll();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
gui.Plugins.Add(new ProjectExplorerGuiPlugin());
gui.Run();
@@ -77,7 +79,7 @@
var projectStore = mocks.Stub();
mocks.ReplayAll();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
gui.Run();
int callCount = 0;
@@ -93,7 +95,7 @@
var projectStore = mocks.Stub();
mocks.ReplayAll();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
var applicationCore = gui.ApplicationCore;
Index: Core/Plugins/test/Core.Plugins.DotSpatial.Test/DotSpatialGuiPluginTest.cs
===================================================================
diff -u -rd212065881d696420fd33c789c917501e09c7fc0 -r11ba203152ddf37106da76d9a38d4ffd771026dd
--- Core/Plugins/test/Core.Plugins.DotSpatial.Test/DotSpatialGuiPluginTest.cs (.../DotSpatialGuiPluginTest.cs) (revision d212065881d696420fd33c789c917501e09c7fc0)
+++ Core/Plugins/test/Core.Plugins.DotSpatial.Test/DotSpatialGuiPluginTest.cs (.../DotSpatialGuiPluginTest.cs) (revision 11ba203152ddf37106da76d9a38d4ffd771026dd)
@@ -1,11 +1,14 @@
using System;
using System.Linq;
using System.Windows;
+
+using Core.Common.Base.Plugin;
using Core.Common.Base.Storage;
using Core.Common.Controls.Views;
using Core.Common.Gui;
using Core.Common.Gui.Forms.MainWindow;
using Core.Common.Gui.Plugin;
+using Core.Common.Gui.Settings;
using Core.Common.Test.TestObjects;
using Core.Components.DotSpatial;
using Core.Components.DotSpatial.Data;
@@ -127,7 +130,7 @@
var projectStore = mocks.Stub();
mocks.ReplayAll();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
var plugin = new DotSpatialGuiPlugin();
var testMapView = new TestMapView();
Index: Core/Plugins/test/Core.Plugins.OxyPlot.Test/OxyPlotGuiPluginTest.cs
===================================================================
diff -u -r67980a5c3c5cb71c185278e849b123e7f92990eb -r11ba203152ddf37106da76d9a38d4ffd771026dd
--- Core/Plugins/test/Core.Plugins.OxyPlot.Test/OxyPlotGuiPluginTest.cs (.../OxyPlotGuiPluginTest.cs) (revision 67980a5c3c5cb71c185278e849b123e7f92990eb)
+++ Core/Plugins/test/Core.Plugins.OxyPlot.Test/OxyPlotGuiPluginTest.cs (.../OxyPlotGuiPluginTest.cs) (revision 11ba203152ddf37106da76d9a38d4ffd771026dd)
@@ -2,12 +2,14 @@
using System.Linq;
using System.Windows;
+using Core.Common.Base.Plugin;
using Core.Common.Base.Storage;
using Core.Common.Controls.Views;
using Core.Common.Gui;
using Core.Common.Gui.Forms.MainWindow;
using Core.Common.Gui.Forms.ViewManager;
using Core.Common.Gui.Plugin;
+using Core.Common.Gui.Settings;
using Core.Components.Charting;
using Core.Components.Charting.Data;
using Core.Components.Charting.TestUtil;
@@ -127,7 +129,7 @@
var projectStore = mocks.Stub();
mocks.ReplayAll();
- using (var gui = new RingtoetsGui(new MainWindow(), projectStore))
+ using (var gui = new RingtoetsGui(new MainWindow(), projectStore, new ApplicationCore(), new GuiCoreSettings()))
{
var plugin = new OxyPlotGuiPlugin();
var testChartView = new TestChartView();