Index: Core/Common/src/Core.Common.Base/Core.Common.Base.csproj
===================================================================
diff -u -rdaf4bf00e8ea376485f54faa2fee8497607ddfb0 -rb45253e05c4d283273a39672c5ca8aaf1b398d71
--- Core/Common/src/Core.Common.Base/Core.Common.Base.csproj (.../Core.Common.Base.csproj) (revision daf4bf00e8ea376485f54faa2fee8497607ddfb0)
+++ Core/Common/src/Core.Common.Base/Core.Common.Base.csproj (.../Core.Common.Base.csproj) (revision b45253e05c4d283273a39672c5ca8aaf1b398d71)
@@ -88,6 +88,7 @@
Properties\GlobalAssembly.cs
+
Index: Core/Common/src/Core.Common.Base/Data/Project.cs
===================================================================
diff -u -r4512af7782ee31b36941bb280b54d9da2953dd71 -rb45253e05c4d283273a39672c5ca8aaf1b398d71
--- Core/Common/src/Core.Common.Base/Data/Project.cs (.../Project.cs) (revision 4512af7782ee31b36941bb280b54d9da2953dd71)
+++ Core/Common/src/Core.Common.Base/Data/Project.cs (.../Project.cs) (revision b45253e05c4d283273a39672c5ca8aaf1b398d71)
@@ -20,7 +20,6 @@
// All rights reserved.
using System.Collections.Generic;
-
using Core.Common.Base.Properties;
using Core.Common.Base.Storage;
Index: Core/Common/src/Core.Common.Base/Data/ProjectComparer.cs
===================================================================
diff -u
--- Core/Common/src/Core.Common.Base/Data/ProjectComparer.cs (revision 0)
+++ Core/Common/src/Core.Common.Base/Data/ProjectComparer.cs (revision b45253e05c4d283273a39672c5ca8aaf1b398d71)
@@ -0,0 +1,50 @@
+// Copyright (C) Stichting Deltares 2016. 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 Lesser 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 Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser 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.Linq;
+
+namespace Core.Common.Base.Data
+{
+ ///
+ /// This class can be used to compare objects.
+ ///
+ public static class ProjectComparer
+ {
+ ///
+ /// Checks if is equal to a new instance of .
+ ///
+ /// to check.
+ /// True if is equal to a new instance of , false otherwise.
+ public static bool EqualsToNew(Project other)
+ {
+ var newProject = new Project();
+ return Equals(newProject, other);
+ }
+
+ private static bool Equals(Project x, Project y)
+ {
+ return string.Equals(x.Name, y.Name) &&
+ string.Equals(x.Description, y.Description) &&
+ x.StorageId == y.StorageId &&
+ x.Items.SequenceEqual(y.Items);
+ }
+ }
+}
\ No newline at end of file
Index: Core/Common/src/Core.Common.Gui/Commands/StorageCommandHandler.cs
===================================================================
diff -u -r276383b754de8eafea064dd780e118d922379d76 -rb45253e05c4d283273a39672c5ca8aaf1b398d71
--- Core/Common/src/Core.Common.Gui/Commands/StorageCommandHandler.cs (.../StorageCommandHandler.cs) (revision 276383b754de8eafea064dd780e118d922379d76)
+++ Core/Common/src/Core.Common.Gui/Commands/StorageCommandHandler.cs (.../StorageCommandHandler.cs) (revision b45253e05c4d283273a39672c5ca8aaf1b398d71)
@@ -78,7 +78,7 @@
public bool ContinueIfHasChanges()
{
var project = projectOwner.Project;
- if (project == null || project.Equals(new Project()) || !projectPersistor.HasChanges(project))
+ if (project == null || ProjectComparer.EqualsToNew(project) || !projectPersistor.HasChanges(project))
{
return true;
}
Index: Core/Common/test/Core.Common.Base.Test/Core.Common.Base.Test.csproj
===================================================================
diff -u -rdaf4bf00e8ea376485f54faa2fee8497607ddfb0 -rb45253e05c4d283273a39672c5ca8aaf1b398d71
--- Core/Common/test/Core.Common.Base.Test/Core.Common.Base.Test.csproj (.../Core.Common.Base.Test.csproj) (revision daf4bf00e8ea376485f54faa2fee8497607ddfb0)
+++ Core/Common/test/Core.Common.Base.Test/Core.Common.Base.Test.csproj (.../Core.Common.Base.Test.csproj) (revision b45253e05c4d283273a39672c5ca8aaf1b398d71)
@@ -86,6 +86,7 @@
+
@@ -116,6 +117,9 @@
+
+ Copying.Lesser.licenseheader
+
Index: Core/Common/test/Core.Common.Base.Test/Data/ProjectComparerTest.cs
===================================================================
diff -u
--- Core/Common/test/Core.Common.Base.Test/Data/ProjectComparerTest.cs (revision 0)
+++ Core/Common/test/Core.Common.Base.Test/Data/ProjectComparerTest.cs (revision b45253e05c4d283273a39672c5ca8aaf1b398d71)
@@ -0,0 +1,105 @@
+// Copyright (C) Stichting Deltares 2016. 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 Lesser 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 Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser 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 Core.Common.Base.Data;
+using NUnit.Framework;
+
+namespace Core.Common.Base.Test.Data
+{
+ [TestFixture]
+ public class ProjectComparerTest
+ {
+ [Test]
+ public void EqualsToNew_NewProject_ReturnsTrue()
+ {
+ // Setup
+ Project newProject = new Project();
+
+ // Call
+ bool result = ProjectComparer.EqualsToNew(newProject);
+
+ // Assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void EqualsToNew_ProjectNameChanged_ReturnsFalse()
+ {
+ // Setup
+ Project newProject = new Project
+ {
+ Name = ""
+ };
+
+ // Call
+ bool result = ProjectComparer.EqualsToNew(newProject);
+
+ // Assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void EqualsToNew_ProjectDescriptionChanged_ReturnsFalse()
+ {
+ // Setup
+ Project newProject = new Project
+ {
+ Description = ""
+ };
+
+ // Call
+ bool result = ProjectComparer.EqualsToNew(newProject);
+
+ // Assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void EqualsToNew_ProjectStorageIdChanged_ReturnsFalse()
+ {
+ // Setup
+ Project newProject = new Project
+ {
+ StorageId = 1L
+ };
+
+ // Call
+ bool result = ProjectComparer.EqualsToNew(newProject);
+
+ // Assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void EqualsToNew_ProjectItemsChanged_ReturnsFalse()
+ {
+ // Setup
+ Project newProject = new Project();
+ newProject.Items.Add(new object());
+
+ // Call
+ bool result = ProjectComparer.EqualsToNew(newProject);
+
+ // Assert
+ Assert.IsFalse(result);
+ }
+ }
+}
\ No newline at end of file
Index: Core/Common/test/Core.Common.Gui.Test/Commands/StorageCommandHandlerTest.cs
===================================================================
diff -u -r276383b754de8eafea064dd780e118d922379d76 -rb45253e05c4d283273a39672c5ca8aaf1b398d71
--- Core/Common/test/Core.Common.Gui.Test/Commands/StorageCommandHandlerTest.cs (.../StorageCommandHandlerTest.cs) (revision 276383b754de8eafea064dd780e118d922379d76)
+++ Core/Common/test/Core.Common.Gui.Test/Commands/StorageCommandHandlerTest.cs (.../StorageCommandHandlerTest.cs) (revision b45253e05c4d283273a39672c5ca8aaf1b398d71)
@@ -533,8 +533,6 @@
var toolViewController = mocks.Stub();
var projectMock = mocks.StrictMock();
var projectStorageMock = mocks.Stub();
- projectStorageMock.Expect(p => p.HasChanges(null)).IgnoreArguments().Return(false);
-
var projectOwnerMock = mocks.Stub();
projectOwnerMock.Project = projectMock;
mocks.ReplayAll();
@@ -561,6 +559,7 @@
var mainWindowController = mocks.Stub();
var toolViewController = mocks.Stub();
var projectMock = mocks.StrictMock();
+ projectMock.StorageId = 1234L;
var projectStorageMock = mocks.Stub();
projectStorageMock.Expect(p => p.HasChanges(null)).IgnoreArguments().Return(true);
@@ -601,6 +600,7 @@
var mainWindowController = mocks.Stub();
var toolViewController = mocks.Stub();
var projectMock = mocks.StrictMock();
+ projectMock.StorageId = 1234L;
var projectStorageMock = mocks.Stub();
projectStorageMock.Expect(p => p.HasChanges(null)).IgnoreArguments().Return(true);
@@ -641,7 +641,7 @@
var mainWindowController = mocks.Stub();
var toolViewController = mocks.Stub();
var projectMock = mocks.StrictMock();
-
+ projectMock.StorageId = 1234L;
var projectFilePath = "some path";
var projectStorageMock = mocks.Stub();