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();