Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Data/ClosingStructuresFailureMechanism.cs
===================================================================
diff -u -rfbf9eca188c20c352a702ee20c183e5dc3c7acf1 -rf994b1077b45f107c38c87b94ddeb5e91e1f95fe
--- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Data/ClosingStructuresFailureMechanism.cs (.../ClosingStructuresFailureMechanism.cs) (revision fbf9eca188c20c352a702ee20c183e5dc3c7acf1)
+++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Data/ClosingStructuresFailureMechanism.cs (.../ClosingStructuresFailureMechanism.cs) (revision f994b1077b45f107c38c87b94ddeb5e91e1f95fe)
@@ -62,7 +62,7 @@
public GeneralClosingStructuresInput GeneralInput { get; private set; }
///
- /// Gets the closing structure within the scope of the closing structure failure mechanism
+ /// Gets the available closing structures for this instance
///
public ObservableList ClosingStructures { get; private set; }
Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/PresentationObjects/ClosingStructureContext.cs
===================================================================
diff -u -rfbf9eca188c20c352a702ee20c183e5dc3c7acf1 -rf994b1077b45f107c38c87b94ddeb5e91e1f95fe
--- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/PresentationObjects/ClosingStructureContext.cs (.../ClosingStructureContext.cs) (revision fbf9eca188c20c352a702ee20c183e5dc3c7acf1)
+++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/PresentationObjects/ClosingStructureContext.cs (.../ClosingStructureContext.cs) (revision f994b1077b45f107c38c87b94ddeb5e91e1f95fe)
@@ -27,8 +27,17 @@
namespace Ringtoets.ClosingStructures.Forms.PresentationObjects
{
+ ///
+ /// The presentation object for
+ ///
public class ClosingStructureContext : ObservableWrappedObjectContextBase>
{
+ ///
+ /// Creates an instance of
+ ///
+ /// The wrapped containing
+ /// The assessment section which the closing structures belong to
+ /// Thrown when any of the input arguments are null
public ClosingStructureContext(ObservableList closingStructures, IAssessmentSection assessmentSection)
: base(closingStructures)
{
@@ -40,6 +49,9 @@
AssessmentSection = assessmentSection;
}
+ ///
+ /// Gets the assessment section of this instance
+ ///
public IAssessmentSection AssessmentSection { get; private set; }
}
}
Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/PresentationObjects/ClosingStructureContextTest.cs
===================================================================
diff -u -rfbf9eca188c20c352a702ee20c183e5dc3c7acf1 -rf994b1077b45f107c38c87b94ddeb5e91e1f95fe
--- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/PresentationObjects/ClosingStructureContextTest.cs (.../ClosingStructureContextTest.cs) (revision fbf9eca188c20c352a702ee20c183e5dc3c7acf1)
+++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/PresentationObjects/ClosingStructureContextTest.cs (.../ClosingStructureContextTest.cs) (revision f994b1077b45f107c38c87b94ddeb5e91e1f95fe)
@@ -34,11 +34,11 @@
public class ClosingStructureContextTest
{
[Test]
- public void ParameteredConstructor_DefaultValues()
+ public void ParameteredConstructor_ExpectedValues()
{
// Setup
var mocks = new MockRepository();
- var assessmentSectionMock = mocks.StrictMock();
+ var assessmentSectionMock = mocks.Stub();
mocks.ReplayAll();
var closingStructures = new ObservableList();
Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Ringtoets.ClosingStructures.Forms.Test.csproj
===================================================================
diff -u -re8162b5b22781fbe2258f99aa208e38f3ead9133 -rf994b1077b45f107c38c87b94ddeb5e91e1f95fe
--- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Ringtoets.ClosingStructures.Forms.Test.csproj (.../Ringtoets.ClosingStructures.Forms.Test.csproj) (revision e8162b5b22781fbe2258f99aa208e38f3ead9133)
+++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Ringtoets.ClosingStructures.Forms.Test.csproj (.../Ringtoets.ClosingStructures.Forms.Test.csproj) (revision f994b1077b45f107c38c87b94ddeb5e91e1f95fe)
@@ -62,6 +62,7 @@
+
Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/TreeNodeInfos/ClosingStructureContextTreeNodeInfoTest.cs
===================================================================
diff -u
--- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/TreeNodeInfos/ClosingStructureContextTreeNodeInfoTest.cs (revision 0)
+++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/TreeNodeInfos/ClosingStructureContextTreeNodeInfoTest.cs (revision f994b1077b45f107c38c87b94ddeb5e91e1f95fe)
@@ -0,0 +1,233 @@
+// 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 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 General Public License for more details.
+//
+// You should have received a copy of the GNU 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.Drawing;
+using System.Linq;
+using Core.Common.Base;
+using Core.Common.Controls.TreeView;
+using Core.Common.Gui;
+using Core.Common.Gui.ContextMenu;
+using Core.Common.TestUtil;
+using NUnit.Framework;
+using Rhino.Mocks;
+using Ringtoets.ClosingStructures.Data;
+using Ringtoets.ClosingStructures.Forms.PresentationObjects;
+using Ringtoets.ClosingStructures.Plugin;
+using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.Common.Forms.Properties;
+
+namespace Ringtoets.ClosingStructures.Forms.Test.TreeNodeInfos
+{
+ class ClosingStructureContextTreeNodeInfoTest
+ {
+ private ClosingStructuresPlugin plugin;
+ private TreeNodeInfo info;
+
+ [SetUp]
+ public void SetUp()
+ {
+ plugin = new ClosingStructuresPlugin();
+ info = plugin.GetTreeNodeInfos().First(tni => tni.TagType == typeof(ClosingStructureContext));
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ plugin.Dispose();
+ }
+
+ [Test]
+ public void Initialized_Always_ExpectedPropertiesSet()
+ {
+ // Assert
+ Assert.AreEqual(typeof(ClosingStructureContext), info.TagType);
+ Assert.IsNotNull(info.Text);
+ Assert.IsNotNull(info.Image);
+ Assert.IsNotNull(info.ForeColor);
+ Assert.IsNotNull(info.ChildNodeObjects);
+ Assert.IsNotNull(info.ContextMenuStrip);
+ Assert.IsNull(info.EnsureVisibleOnCreate);
+ Assert.IsNull(info.CanRename);
+ Assert.IsNull(info.OnNodeRenamed);
+ Assert.IsNull(info.CanRemove);
+ Assert.IsNull(info.OnNodeRemoved);
+ Assert.IsNull(info.CanCheck);
+ Assert.IsNull(info.IsChecked);
+ Assert.IsNull(info.OnNodeChecked);
+ Assert.IsNull(info.CanDrag);
+ Assert.IsNull(info.CanDrop);
+ Assert.IsNull(info.CanInsert);
+ Assert.IsNull(info.OnDrop);
+ }
+
+ [Test]
+ public void Text_Always_ReturnExpectedText()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ var closingStructures = new ObservableList();
+
+ var closingStructureContext = new ClosingStructureContext(closingStructures, assessmentSection);
+
+ // Call
+ string text = info.Text(closingStructureContext);
+
+ // Assert
+ const string expectedText = "Kunstwerken";
+ Assert.AreEqual(expectedText, text);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void Image_Always_ReturnExpectedImage()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ var closingStructures = new ObservableList();
+
+ var closingStructureContext = new ClosingStructureContext(closingStructures, assessmentSection);
+
+ // Call
+ Image image = info.Image(closingStructureContext);
+
+ // Assert
+ TestHelper.AssertImagesAreEqual(Resources.GeneralFolderIcon, image);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void ForeColor_CollectionHasElementsEmpty_ReturnControlText()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var asssessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ var closingStructures = new ObservableList
+ {
+ CreateClosingStructure()
+ };
+
+ // Precondition
+ CollectionAssert.IsNotEmpty(closingStructures);
+
+ var context = new ClosingStructureContext(closingStructures, asssessmentSection);
+
+ // Call
+ Color color = info.ForeColor(context);
+
+ // Assert
+ Assert.AreEqual(Color.FromKnownColor(KnownColor.ControlText), color);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void ChildNodeObjects_Always_ReturnDikeProfiles()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ ClosingStructure closingStructure1 = CreateClosingStructure();
+ ClosingStructure closingStructure2 = CreateClosingStructure();
+ var closingStructures = new ObservableList
+ {
+ closingStructure1,
+ closingStructure2
+ };
+
+ var heightStructureContext = new ClosingStructureContext(closingStructures, assessmentSection);
+
+ // Call
+ var children = info.ChildNodeObjects(heightStructureContext);
+
+ // Assert
+ Assert.AreEqual(2, children.Length);
+ Assert.AreSame(closingStructure1, children.ElementAt(0));
+ Assert.AreSame(closingStructure2, children.ElementAt(1));
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void ForeColor_CollectionIsEmpty_ReturnGrayText()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var asssessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ var closingStructures = new ObservableList();
+
+ // Precondition
+ CollectionAssert.IsEmpty(closingStructures);
+
+ var context = new ClosingStructureContext(closingStructures, asssessmentSection);
+
+ // Call
+ Color color = info.ForeColor(context);
+
+ // Assert
+ Assert.AreEqual(Color.FromKnownColor(KnownColor.GrayText), color);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void ContextMenuStrip_Always_CallsBuilder()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var menuBuilderMock = mocks.StrictMock();
+ menuBuilderMock.Expect(mb => mb.AddImportItem()).Return(menuBuilderMock);
+ menuBuilderMock.Expect(mb => mb.AddSeparator()).Return(menuBuilderMock);
+ menuBuilderMock.Expect(mb => mb.AddCollapseAllItem()).Return(menuBuilderMock);
+ menuBuilderMock.Expect(mb => mb.AddExpandAllItem()).Return(menuBuilderMock);
+ menuBuilderMock.Expect(mb => mb.Build()).Return(null);
+
+ using (var treeViewControl = new TreeViewControl())
+ {
+ var gui = mocks.Stub();
+ gui.Stub(g => g.Get(null, treeViewControl)).Return(menuBuilderMock);
+
+ mocks.ReplayAll();
+
+ plugin.Gui = gui;
+
+ // Call
+ info.ContextMenuStrip(null, null, treeViewControl);
+ }
+ // Assert
+ mocks.VerifyAll();
+ }
+
+ private static ClosingStructure CreateClosingStructure()
+ {
+ // Creation of closing structure object will be defined by issue WTI-590
+ return null;
+ }
+ }
+}