public void CreateDeleteItem_DependingOnCanRemoveNodeForData_ItemWithDeleteFunctionWillBeEnabled(bool canDelete)
        {
            // Setup
            var treeViewControl = mocks.StrictMock <TreeViewControl>();

            var nodeData = new object();

            treeViewControl.Expect(tvc => tvc.CanRemoveNodeForData(nodeData)).Return(canDelete);

            if (canDelete)
            {
                treeViewControl.Expect(tvc => tvc.TryRemoveNodeForData(nodeData));
            }

            mocks.ReplayAll();

            var factory = new TreeViewContextMenuItemFactory(nodeData, treeViewControl);

            // Call
            ToolStripItem item = factory.CreateDeleteItem();

            item.PerformClick();

            // Assert
            Assert.AreEqual("Verwij&deren...", item.Text);
            Assert.AreEqual("Verwijder dit element uit de boom.", item.ToolTipText);
            TestHelper.AssertImagesAreEqual(Resources.DeleteIcon, item.Image);
            Assert.AreEqual(canDelete, item.Enabled);

            mocks.VerifyAll();
        }
        public void CreateRenameItem_DependingOnCanRenameNodeForData_ItemWithDeleteFunctionWillBeEnabled(bool canRename)
        {
            // Setup
            var dataObject      = new object();
            var treeViewControl = mocks.StrictMock <TreeViewControl>();

            treeViewControl.Expect(tvc => tvc.CanRenameNodeForData(dataObject)).Return(canRename);

            if (canRename)
            {
                treeViewControl.Expect(tvc => tvc.TryRenameNodeForData(dataObject));
            }

            mocks.ReplayAll();

            var factory = new TreeViewContextMenuItemFactory(dataObject, treeViewControl);

            // Call
            ToolStripItem item = factory.CreateRenameItem();

            item.PerformClick();

            // Assert
            Assert.AreEqual("&Hernoemen", item.Text);
            Assert.AreEqual("Wijzig de naam van dit element.", item.ToolTipText);
            TestHelper.AssertImagesAreEqual(Resources.RenameIcon, item.Image);
            Assert.AreEqual(canRename, item.Enabled);

            mocks.VerifyAll();
        }
        public void CreateCollapseAllItem_DependingOnCanExpandOrCollapseForData_ItemWithCollapseFunctionWillBeEnabled(bool hasChildren)
        {
            // Setup
            const string dataObject        = "string";
            var          treeNodeInfo      = new TreeNodeInfo <string>();
            var          childTreeNodeInfo = new TreeNodeInfo <object>();
            var          treeViewControl   = new TreeViewControl();

            if (hasChildren)
            {
                treeNodeInfo.ChildNodeObjects = o => new object[]
                {
                    10.0
                };
            }

            var factory = new TreeViewContextMenuItemFactory(dataObject, treeViewControl);

            treeViewControl.RegisterTreeNodeInfo(treeNodeInfo);
            treeViewControl.RegisterTreeNodeInfo(childTreeNodeInfo);
            treeViewControl.Data = dataObject;

            // Call
            ToolStripItem item = factory.CreateCollapseAllItem();

            item.PerformClick();

            // Assert
            Assert.AreEqual("Alles i&nklappen", item.Text);
            Assert.AreEqual("Klap dit element en alle onderliggende elementen in.", item.ToolTipText);
            TestHelper.AssertImagesAreEqual(Resources.CollapseAllIcon, item.Image);
            Assert.AreEqual(hasChildren, item.Enabled);
        }
        public void CreateDeleteChildrenItem_DependingOnCanRemoveChildNodesOfData_ItemWithDeleteChildrenFunctionWillBeEnabled(bool canDelete)
        {
            // Setup
            var nodeData        = new object();
            var treeViewControl = mocks.StrictMock <TreeViewControl>();

            treeViewControl.Expect(tvc => tvc.CanRemoveChildNodesOfData(nodeData)).Return(canDelete).Repeat.AtLeastOnce();

            if (canDelete)
            {
                treeViewControl.Expect(tvc => tvc.TryRemoveChildNodesOfData(nodeData));
            }

            mocks.ReplayAll();

            var factory = new TreeViewContextMenuItemFactory(nodeData, treeViewControl);

            // Call
            ToolStripItem item = factory.CreateDeleteChildrenItem();

            item.PerformClick();

            // Assert
            Assert.AreEqual("Ma&p leegmaken...", item.Text);
            string expectedTooltip = canDelete
                                         ? "Verwijder alle onderliggende elementen van dit element."
                                         : "Er zijn geen onderliggende elementen om te verwijderen.";

            Assert.AreEqual(expectedTooltip, item.ToolTipText);
            TestHelper.AssertImagesAreEqual(Resources.DeleteChildrenIcon, item.Image);
            Assert.AreEqual(canDelete, item.Enabled);

            mocks.VerifyAll();
        }