Index: Core/Common/src/Core.Common.Controls.TreeView/TreeViewNodePresenterBase.cs
===================================================================
diff -u -r8cae5d69ac2d4cf678486ac2b457c0dfe97089d5 -r84e26203964272f09063fc39791d875e6bd291e1
--- Core/Common/src/Core.Common.Controls.TreeView/TreeViewNodePresenterBase.cs (.../TreeViewNodePresenterBase.cs) (revision 8cae5d69ac2d4cf678486ac2b457c0dfe97089d5)
+++ Core/Common/src/Core.Common.Controls.TreeView/TreeViewNodePresenterBase.cs (.../TreeViewNodePresenterBase.cs) (revision 84e26203964272f09063fc39791d875e6bd291e1)
@@ -34,37 +34,9 @@
throw new InvalidOperationException(Resources.TreeViewNodePresenterBase_OnNodeRenamed_OnNodeRenamed_must_be_implemented_in_derived_class);
}
- ///
- /// Returns the default drag operation based on pressed control keys and allowed operations
- /// It can be used as replacement for the implementation for TreeViewNodePresenterBase<T>::.
- ///
- public static DragOperations GetDefaultDropOperation(ITreeView treeView, object item, ITreeNode sourceNode, ITreeNode targetNode, DragOperations validOperations)
+ public static DragOperations GetDefaultDropOperation(DragOperations validOperation)
{
- if (null != sourceNode)
- {
- //TreeNode nodeDragging = (TreeNode)sourceNode;
- if (sourceNode.TreeView == treeView)
- {
- // if the user is not forcing an operation using the keyboard default to move within treeview
- if ((0 == (Control.ModifierKeys & Keys.Modifiers)) && DragOperations.Move == validOperations)
- {
- return DragOperations.Move;
- }
- }
- }
-
- if (((Control.ModifierKeys & Keys.Shift) == Keys.Shift) && DragOperations.Move == validOperations)
- {
- return DragOperations.Move;
- }
-
- // do not return bitwise operation, preference here is disputable
- if (DragOperations.Move == validOperations)
- {
- return DragOperations.Move;
- }
-
- return DragOperations.None;
+ return DragOperations.Move == validOperation ? DragOperations.Move : DragOperations.None;
}
public virtual void OnDragDrop(object item, object itemParent, T target,
Index: Core/Plugins/src/Core.Plugins.CommonTools.Gui/Forms/Charting/ChartTreeNodePresenter.cs
===================================================================
diff -u -r8cae5d69ac2d4cf678486ac2b457c0dfe97089d5 -r84e26203964272f09063fc39791d875e6bd291e1
--- Core/Plugins/src/Core.Plugins.CommonTools.Gui/Forms/Charting/ChartTreeNodePresenter.cs (.../ChartTreeNodePresenter.cs) (revision 8cae5d69ac2d4cf678486ac2b457c0dfe97089d5)
+++ Core/Plugins/src/Core.Plugins.CommonTools.Gui/Forms/Charting/ChartTreeNodePresenter.cs (.../ChartTreeNodePresenter.cs) (revision 84e26203964272f09063fc39791d875e6bd291e1)
@@ -44,7 +44,7 @@
{
if (item is IChartSeries)
{
- return GetDefaultDropOperation(TreeView, item, sourceNode, targetNode, validOperations);
+ return GetDefaultDropOperation(validOperations);
}
return base.CanDrop(item, sourceNode, targetNode, validOperations);
Index: Core/Plugins/src/Core.Plugins.SharpMapGis.Gui/Forms/MapLegendView/MapTreeViewNodePresenter.cs
===================================================================
diff -u -r8cae5d69ac2d4cf678486ac2b457c0dfe97089d5 -r84e26203964272f09063fc39791d875e6bd291e1
--- Core/Plugins/src/Core.Plugins.SharpMapGis.Gui/Forms/MapLegendView/MapTreeViewNodePresenter.cs (.../MapTreeViewNodePresenter.cs) (revision 8cae5d69ac2d4cf678486ac2b457c0dfe97089d5)
+++ Core/Plugins/src/Core.Plugins.SharpMapGis.Gui/Forms/MapLegendView/MapTreeViewNodePresenter.cs (.../MapTreeViewNodePresenter.cs) (revision 84e26203964272f09063fc39791d875e6bd291e1)
@@ -75,7 +75,7 @@
{
if (item is Layer)
{
- return GetDefaultDropOperation(TreeView, item, sourceNode, targetNode, validOperations);
+ return GetDefaultDropOperation(validOperations);
}
return DragOperations.None;
Index: Core/Plugins/src/Core.Plugins.SharpMapGis.Gui/NodePresenters/MapProjectTreeViewNodePresenter.cs
===================================================================
diff -u -r8cae5d69ac2d4cf678486ac2b457c0dfe97089d5 -r84e26203964272f09063fc39791d875e6bd291e1
--- Core/Plugins/src/Core.Plugins.SharpMapGis.Gui/NodePresenters/MapProjectTreeViewNodePresenter.cs (.../MapProjectTreeViewNodePresenter.cs) (revision 8cae5d69ac2d4cf678486ac2b457c0dfe97089d5)
+++ Core/Plugins/src/Core.Plugins.SharpMapGis.Gui/NodePresenters/MapProjectTreeViewNodePresenter.cs (.../MapProjectTreeViewNodePresenter.cs) (revision 84e26203964272f09063fc39791d875e6bd291e1)
@@ -36,7 +36,7 @@
{
if (item is ILayer)
{
- return GetDefaultDropOperation(TreeView, item, sourceNode, targetNode, validOperations);
+ return GetDefaultDropOperation(validOperations);
}
return DragOperations.None;
Index: Core/Plugins/test/Core.Plugins.CommonTools.Gui.Test/Forms/Charting/ChartSeriesTreeNodePresenterTest.cs
===================================================================
diff -u -rb40c560c540f62ae34260f1aade4d5ec15a45ca2 -r84e26203964272f09063fc39791d875e6bd291e1
--- Core/Plugins/test/Core.Plugins.CommonTools.Gui.Test/Forms/Charting/ChartSeriesTreeNodePresenterTest.cs (.../ChartSeriesTreeNodePresenterTest.cs) (revision b40c560c540f62ae34260f1aade4d5ec15a45ca2)
+++ Core/Plugins/test/Core.Plugins.CommonTools.Gui.Test/Forms/Charting/ChartSeriesTreeNodePresenterTest.cs (.../ChartSeriesTreeNodePresenterTest.cs) (revision 84e26203964272f09063fc39791d875e6bd291e1)
@@ -65,7 +65,7 @@
nodePresenter.OnNodeRenamed(chartSeries, newName);
// Assert
- Assert.AreSame(newName, chartSeries.Title);
+ Assert.AreEqual(newName, chartSeries.Title);
}
[Test]
Index: Core/Plugins/test/Core.Plugins.CommonTools.Gui.Test/Forms/Charting/ChartTreeNodePresenterTest.cs
===================================================================
diff -u -rb0ebc3d3a65294faaf85d5f3b8f612efe61c5915 -r84e26203964272f09063fc39791d875e6bd291e1
--- Core/Plugins/test/Core.Plugins.CommonTools.Gui.Test/Forms/Charting/ChartTreeNodePresenterTest.cs (.../ChartTreeNodePresenterTest.cs) (revision b0ebc3d3a65294faaf85d5f3b8f612efe61c5915)
+++ Core/Plugins/test/Core.Plugins.CommonTools.Gui.Test/Forms/Charting/ChartTreeNodePresenterTest.cs (.../ChartTreeNodePresenterTest.cs) (revision 84e26203964272f09063fc39791d875e6bd291e1)
@@ -1,7 +1,12 @@
-using System.Collections;
+using System;
+using System.Collections;
+using System.Linq;
using Core.Common.Controls.Charting;
+using Core.Common.Controls.Charting.Series;
using Core.Common.Controls.TreeView;
+using Core.Common.TestUtil;
using Core.Plugins.CommonTools.Gui.Forms.Charting;
+using Core.Plugins.CommonTools.Gui.Properties;
using NUnit.Framework;
using Rhino.Mocks;
@@ -11,25 +16,114 @@
public class ChartTreeNodePresenterTest
{
[Test]
- public void CanInsert_TreeViewHasSorter_ReturnFalse()
+ public void DefaultConstructor_Always_PropertiesSet()
{
+ // Call
+ var nodePresenter = new ChartTreeNodePresenter();
+
+ // Assert
+ Assert.IsInstanceOf>(nodePresenter);
+ }
+
+ [Test]
+ public void CanRenameNode_Always_ReturnsTrue()
+ {
// Setup
+ var nodePresenter = new ChartTreeNodePresenter();
+
+ // Call
+ var result = nodePresenter.CanRenameNode(null);
+
+ // Assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ [TestCase("Some name")]
+ [TestCase("")]
+ public void UpdateNode_NoKnownSeriesType_PropertiesSetImageNull(string title)
+ {
+ // Setup
+ var nodePresenter = new ChartTreeNodePresenter();
+ var node = new TreeNode(null);
+ var chart = new Chart
+ {
+ Title = title,
+ };
+
+ // Call
+ nodePresenter.UpdateNode(null, node, chart);
+
+ // Assert
+ Assert.AreEqual(string.IsNullOrEmpty(title) ? Resources.ChartTreeNodePresenter_UpdateNode_Chart : title, node.Text);
+ TestHelper.AssertImagesAreEqual(Resources.Chart, node.Image);
+ Assert.AreSame(chart, node.Tag);
+ }
+
+ [Test]
+ public void OnNodeRenamed_NoChartSeries_DoesNotThrow()
+ {
+ // Setup
+ var nodePresenter = new ChartTreeNodePresenter();
+
+ // Call
+ TestDelegate testDelegate = () => nodePresenter.OnNodeRenamed(null, string.Empty);
+
+ // Assert
+ Assert.DoesNotThrow(testDelegate);
+ }
+
+ [Test]
+ public void OnNodeRenamed_NewNodeName_ChartSeriesTitleSetToNodeName()
+ {
+ // Setup
+ var nodePresenter = new ChartTreeNodePresenter();
+ var name = "";
+ var newName = "";
+ var chart = new Chart
+ {
+ Title = name
+ };
+
+ // Call
+ nodePresenter.OnNodeRenamed(chart, newName);
+
+ // Assert
+ Assert.AreEqual(newName, chart.Title);
+ }
+
+ [Test]
+ public void GetChildNodeObjects_Always_ReturnsSeries()
+ {
+ // Setup
var mocks = new MockRepository();
- var sourceNode = mocks.Stub();
- var targetNode = mocks.Stub();
+ var nodePresenter = new ChartTreeNodePresenter();
+ var chart = mocks.StrictMock();
+ chart.Expect(c => c.Series).Return(Enumerable.Empty());
- var treeView = mocks.Stub();
+ mocks.ReplayAll();
- var chart = mocks.Stub();
+ // Call
+ var result = nodePresenter.GetChildNodeObjects(chart);
- treeView.TreeViewNodeSorter = mocks.Stub();
+ // Assert
+ mocks.VerifyAll();
+ }
+ [Test]
+ public void CanInsert_TreeViewHasSorter_ReturnFalse()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var treeView = mocks.StrictMock();
+ treeView.Expect(tv => tv.TreeViewNodeSorter).Return(mocks.Stub());
+
mocks.ReplayAll();
- var nodePresenter = new ChartTreeNodePresenter() { TreeView = treeView };
+ var nodePresenter = new ChartTreeNodePresenter { TreeView = treeView };
// Call
- var insertionAllowed = nodePresenter.CanInsert(chart, sourceNode, targetNode);
+ var insertionAllowed = nodePresenter.CanInsert(null, null, null);
// Assert
Assert.IsFalse(insertionAllowed);
@@ -41,26 +135,107 @@
{
// Setup
var mocks = new MockRepository();
- var sourceNode = mocks.Stub();
- var targetNode = mocks.Stub();
+ var treeView = mocks.StrictMock();
+ treeView.Expect(tv => tv.TreeViewNodeSorter).Return(null);
- var treeView = mocks.Stub();
+ mocks.ReplayAll();
- var chart = mocks.Stub();
+ var nodePresenter = new ChartTreeNodePresenter { TreeView = treeView };
+ // Call
+ var insertionAllowed = nodePresenter.CanInsert(null, null, null);
+
+ // Assert
+ Assert.IsTrue(insertionAllowed);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ [TestCase(DragOperations.Move)]
+ [TestCase(DragOperations.None)]
+ public void CanDrop_ItemNotIChartSeries_ReturnsNone(DragOperations validOperation)
+ {
+ // Setup
+ var nodePresenter = new ChartTreeNodePresenter();
+
+ // Call
+ var result = nodePresenter.CanDrop(new object(), null, null, validOperation);
+
+ // Assert
+ Assert.AreEqual(DragOperations.None, result);
+ }
+
+ [Test]
+ [TestCase(DragOperations.Move)]
+ [TestCase(DragOperations.None)]
+ public void CanDrop_ItemIChartSeries_ReturnsValidOperation(DragOperations validOperation)
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var nodePresenter = new ChartTreeNodePresenter();
+ var chartSeries = mocks.StrictMock();
+
mocks.ReplayAll();
- // Precondition
- Assert.IsNull(treeView.TreeViewNodeSorter);
+ // Call
+ var result = nodePresenter.CanDrop(chartSeries, null, null, validOperation);
- var nodePresenter = new ChartTreeNodePresenter() { TreeView = treeView };
+ // Assert
+ Assert.AreEqual(validOperation, result);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ [TestCase(DragOperations.Move)]
+ [TestCase(DragOperations.None)]
+ public void OnDragDrop_ChartSeriesItemIChartParent_RemovesAndInserts(DragOperations operation)
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var nodePresenter = new ChartTreeNodePresenter();
+ var series = new TestChartSeries();
+ var random = new Random(21);
+ var position = random.Next();
+
+ var parent = mocks.StrictMock();
+ var target = mocks.StrictMock();
+ parent.Expect(p => p.RemoveChartSeries(series)).Return(true);
+ target.Expect(t => t.InsertChartSeries(series, position));
+
+ mocks.ReplayAll();
+
// Call
- var insertionAllowed = nodePresenter.CanInsert(chart, sourceNode, targetNode);
+ nodePresenter.OnDragDrop(series, parent, target, operation, position);
// Assert
- Assert.IsTrue(insertionAllowed);
mocks.VerifyAll();
}
+
+ [Test]
+ [TestCase(DragOperations.Move)]
+ [TestCase(DragOperations.None)]
+ public void OnDragDrop_ChartSeriesItemObjectParent_RemovesAndInserts(DragOperations operation)
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var nodePresenter = new ChartTreeNodePresenter();
+ var series = new TestChartSeries();
+ var random = new Random(21);
+ var position = random.Next();
+
+ var parent = new object();
+ var target = mocks.StrictMock();
+ target.Expect(p => p.RemoveChartSeries(series)).Return(true);
+ target.Expect(t => t.InsertChartSeries(series, position));
+
+ mocks.ReplayAll();
+
+ // Call
+ nodePresenter.OnDragDrop(series, parent, target, operation, position);
+
+ // Assert
+ mocks.VerifyAll();
+ }
}
}
\ No newline at end of file