Index: Core/Common/test/Core.Common.Controls.TreeView.Test/TreeNodeInfoTest.cs =================================================================== diff -u -rf7f58324728d778611e81aec9f56fdc0669b5df5 -rf53409d55a702234dee65ac510f1dce4ef2e1e3d --- Core/Common/test/Core.Common.Controls.TreeView.Test/TreeNodeInfoTest.cs (.../TreeNodeInfoTest.cs) (revision f7f58324728d778611e81aec9f56fdc0669b5df5) +++ Core/Common/test/Core.Common.Controls.TreeView.Test/TreeNodeInfoTest.cs (.../TreeNodeInfoTest.cs) (revision f53409d55a702234dee65ac510f1dce4ef2e1e3d) @@ -2,6 +2,7 @@ using System.Drawing; using System.Windows.Forms; using NUnit.Framework; +using Rhino.Mocks; namespace Core.Common.Controls.TreeView.Test { @@ -131,28 +132,26 @@ public void SimpleProperties_GenericTreeNodeInfoSetNewValues_GetNewlySetValues() { // Setup - var treeNodeInfo = new TreeNodeInfo(); - var tagType = typeof(int); - Func text = o => ""; - Func foreColor = o => Color.Azure; - Func image = o => new Bitmap(16, 16); - Func contextMenuStrip = (o1, o2, tvc) => new ContextMenuStrip(); - Func ensureVisibleOnCreate = o => true; - Func childNodeObjects = o => new object[0]; - Func canRename = (o1, o2) => true; - Action onNodeRenamed = (o, newName) => { }; - Func canRemove = (o1, o2) => true; - Action onNodeRemoved = (o1, o2) => { }; - Func canCheck = o => true; - Func isChecked = o => true; - Action onNodeChecked = (o1, o2) => { }; - Func canDrag = (o1, o2) => true; + var treeNodeInfo = new TreeNodeInfo(); + Func text = o => ""; + Func foreColor = o => Color.Azure; + Func image = o => new Bitmap(16, 16); + Func contextMenuStrip = (o1, o2, tvc) => new ContextMenuStrip(); + Func ensureVisibleOnCreate = o => true; + Func childNodeObjects = o => new object[0]; + Func canRename = (o1, o2) => true; + Action onNodeRenamed = (o, newName) => { }; + Func canRemove = (o1, o2) => true; + Action onNodeRemoved = (o1, o2) => { }; + Func canCheck = o => true; + Func isChecked = o => true; + Action onNodeChecked = (o1, o2) => { }; + Func canDrag = (o1, o2) => true; Func canDrop = (o1, o2) => true; Func canInsert = (o1, o2) => true; Action onDrop = (o1, o2, o3, index, tvc) => { }; // Call - treeNodeInfo.TagType = tagType; treeNodeInfo.Text = text; treeNodeInfo.ForeColor = foreColor; treeNodeInfo.Image = image; @@ -172,7 +171,7 @@ treeNodeInfo.OnDrop = onDrop; // Assert - Assert.AreEqual(tagType, treeNodeInfo.TagType); + Assert.AreEqual(typeof(int), treeNodeInfo.TagType); Assert.AreEqual(text, treeNodeInfo.Text); Assert.AreEqual(foreColor, treeNodeInfo.ForeColor); Assert.AreEqual(image, treeNodeInfo.Image); @@ -191,5 +190,116 @@ Assert.AreEqual(canInsert, treeNodeInfo.CanInsert); Assert.AreEqual(onDrop, treeNodeInfo.OnDrop); } + + [Test] + public void ImplicitOperator_WithNoMethodsSet_InfoFullyConverted() + { + var genericTreeNodeInfo = new TreeNodeInfo(); + + // Precondition + Assert.IsInstanceOf>(genericTreeNodeInfo); + + // Call + TreeNodeInfo treeNodeInfo = genericTreeNodeInfo; + + // Assert + Assert.AreEqual(typeof(int), treeNodeInfo.TagType); + Assert.IsNull(treeNodeInfo.Text); + Assert.IsNull(treeNodeInfo.ForeColor); + Assert.IsNull(treeNodeInfo.Image); + Assert.IsNull(treeNodeInfo.ContextMenuStrip); + Assert.IsNull(treeNodeInfo.EnsureVisibleOnCreate); + Assert.IsNull(treeNodeInfo.ChildNodeObjects); + Assert.IsNull(treeNodeInfo.CanRename); + Assert.IsNull(treeNodeInfo.OnNodeRenamed); + Assert.IsNull(treeNodeInfo.CanRemove); + Assert.IsNull(treeNodeInfo.OnNodeRemoved); + Assert.IsNull(treeNodeInfo.CanCheck); + Assert.IsNull(treeNodeInfo.IsChecked); + Assert.IsNull(treeNodeInfo.OnNodeChecked); + Assert.IsNull(treeNodeInfo.CanDrag); + Assert.IsNull(treeNodeInfo.CanDrop); + Assert.IsNull(treeNodeInfo.CanInsert); + Assert.IsNull(treeNodeInfo.OnDrop); + } + + [Test] + public void ImplicitOperator_WithAllMethodsSet_InfoFullyConverted() + { + // Setup + var mocks = new MockRepository(); + var treeViewControl = mocks.StrictMock(); + + mocks.ReplayAll(); + + var onDropCounter = 0; + var onNodeRenamedCounter = 0; + var onNodeRemovedCounter = 0; + var onNodeCheckedCounter = 0; + + var genericTreeNodeInfo = new TreeNodeInfo + { + Text = o => "text", + ForeColor = o => Color.Azure, + Image = o => new Bitmap(16, 16), + ContextMenuStrip = (o1, o2, tvc) => new ContextMenuStrip + { + Items = + { + new ToolStripButton() + } + }, + EnsureVisibleOnCreate = o => true, + ChildNodeObjects = o => new[] + { + new object() + }, + CanRename = (o1, o2) => true, + OnNodeRenamed = (o, newName) => { onNodeRenamedCounter++; }, + CanRemove = (o1, o2) => true, + OnNodeRemoved = (o1, o2) => { onNodeRemovedCounter++; }, + CanCheck = o => true, + IsChecked = o => true, + OnNodeChecked = (o1, o2) => { onNodeCheckedCounter++; }, + CanDrag = (o1, o2) => true, + CanDrop = (o1, o2) => true, + CanInsert = (o1, o2) => true, + OnDrop = (o1, o2, o3, index, tvc) => { onDropCounter++; } + }; + + // Precondition + Assert.IsInstanceOf>(genericTreeNodeInfo); + + // Call + TreeNodeInfo treeNodeInfo = genericTreeNodeInfo; + + // Assert + Assert.AreEqual(typeof(int), treeNodeInfo.TagType); + Assert.AreEqual("text", treeNodeInfo.Text(0)); + Assert.AreEqual(Color.Azure, treeNodeInfo.ForeColor(0)); + Assert.AreEqual(16, treeNodeInfo.Image(0).Height); + Assert.AreEqual(1, treeNodeInfo.ContextMenuStrip(0, 1, treeViewControl).Items.Count); + Assert.IsTrue(treeNodeInfo.EnsureVisibleOnCreate(0)); + Assert.AreEqual(1, treeNodeInfo.ChildNodeObjects(0).Length); + Assert.IsTrue(treeNodeInfo.CanRename(0, 1)); + Assert.IsTrue(treeNodeInfo.CanRemove(0, 1)); + Assert.IsTrue(treeNodeInfo.CanCheck(0)); + Assert.IsTrue(treeNodeInfo.IsChecked(0)); + Assert.IsTrue(treeNodeInfo.CanDrag(0, 1)); + Assert.IsTrue(treeNodeInfo.CanDrop(0, 1)); + Assert.IsTrue(treeNodeInfo.CanInsert(0, 1)); + + treeNodeInfo.OnNodeRenamed(0, "newName"); + Assert.AreEqual(1, onNodeRenamedCounter); + + treeNodeInfo.OnNodeRemoved(0, 1); + Assert.AreEqual(1, onNodeRemovedCounter); + + treeNodeInfo.OnNodeChecked(0, 1); + Assert.AreEqual(1, onNodeCheckedCounter); + + treeNodeInfo.OnDrop(0, 1, 2, 3, treeViewControl); + Assert.AreEqual(1, onDropCounter); + } } -} +} \ No newline at end of file