Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2128 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
37 changed files with 1784 additions and 226 deletions
After Width: | Height: | Size: 783 B |
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using ICSharpCode.Core; |
||||
|
||||
namespace ICSharpCode.XmlEditor |
||||
{ |
||||
/// <summary>
|
||||
/// Adds a new comment to the selected element.
|
||||
/// </summary>
|
||||
public class AddChildCommentCommand : AbstractMenuCommand |
||||
{ |
||||
public override void Run() |
||||
{ |
||||
XmlTreeViewContainerControl view = Owner as XmlTreeViewContainerControl; |
||||
if (view != null) { |
||||
view.AppendChildComment(); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using ICSharpCode.Core; |
||||
|
||||
namespace ICSharpCode.XmlEditor |
||||
{ |
||||
/// <summary>
|
||||
/// Inserts a new comment node after the selected node.
|
||||
/// </summary>
|
||||
public class InsertCommentAfterCommand : AbstractMenuCommand |
||||
{ |
||||
public override void Run() |
||||
{ |
||||
XmlTreeViewContainerControl view = Owner as XmlTreeViewContainerControl; |
||||
if (view != null) { |
||||
view.InsertCommentAfter(); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using ICSharpCode.Core; |
||||
|
||||
namespace ICSharpCode.XmlEditor |
||||
{ |
||||
/// <summary>
|
||||
/// Inserts a new comment node before the selected node.
|
||||
/// </summary>
|
||||
public class InsertCommentBeforeCommand : AbstractMenuCommand |
||||
{ |
||||
public override void Run() |
||||
{ |
||||
XmlTreeViewContainerControl view = Owner as XmlTreeViewContainerControl; |
||||
if (view != null) { |
||||
view.InsertCommentBefore(); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using ICSharpCode.Core; |
||||
|
||||
namespace ICSharpCode.XmlEditor |
||||
{ |
||||
/// <summary>
|
||||
/// Removes the currently selected comment node from the XML tree.
|
||||
/// </summary>
|
||||
public class RemoveCommentCommand : AbstractMenuCommand |
||||
{ |
||||
public override void Run() |
||||
{ |
||||
XmlTreeViewContainerControl view = Owner as XmlTreeViewContainerControl; |
||||
if (view != null) { |
||||
view.RemoveComment(); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Xml; |
||||
using ICSharpCode.SharpDevelop.Gui; |
||||
|
||||
namespace ICSharpCode.XmlEditor |
||||
{ |
||||
/// <summary>
|
||||
/// Base class for XmlTextTreeNodes and XmlCommentTreeNodes
|
||||
/// </summary>
|
||||
public abstract class XmlCharacterDataTreeNode : ExtTreeNode |
||||
{ |
||||
XmlCharacterData characterData; |
||||
|
||||
public XmlCharacterDataTreeNode(XmlCharacterData characterData) |
||||
{ |
||||
this.characterData = characterData; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Updates the display text based on changes in the
|
||||
/// XmlCharacterData's InnerText associated with this node.
|
||||
/// </summary>
|
||||
public void Update() |
||||
{ |
||||
Text = GetDisplayText(characterData.InnerText); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the text to display for this tree node.
|
||||
/// </summary>
|
||||
/// <remarks>If the text is a single line then it is returned, but
|
||||
/// trimmed. If the text has multiple lines then the first line that
|
||||
/// is not empty is returned. This line may have "..." appended to indicate
|
||||
/// there is more text for this node that is not being displayed. The
|
||||
/// "..." will be appended only if there are multiple lines containing
|
||||
/// text.</remarks>
|
||||
static string GetDisplayText(string s) |
||||
{ |
||||
string[] lines = s.Trim().Split('\n'); |
||||
for (int i = 0; i < lines.Length; ++i) { |
||||
string line = lines[i].Trim(); |
||||
if (line.Length > 0) { |
||||
if (lines.Length == 1) { |
||||
return line; |
||||
} else { |
||||
return String.Concat(line, "..."); |
||||
} |
||||
} |
||||
} |
||||
return String.Empty; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Xml; |
||||
using ICSharpCode.SharpDevelop.Gui; |
||||
|
||||
namespace ICSharpCode.XmlEditor |
||||
{ |
||||
/// <summary>
|
||||
/// Represents an xml comment in the tree.
|
||||
/// </summary>
|
||||
public class XmlCommentTreeNode : XmlCharacterDataTreeNode |
||||
{ |
||||
public const string XmlCommentTreeNodeImageKey = "XmlCommentTreeNodeImage"; |
||||
|
||||
XmlComment comment; |
||||
|
||||
public XmlCommentTreeNode(XmlComment comment) |
||||
: base(comment) |
||||
{ |
||||
this.comment = comment; |
||||
ImageKey = XmlCommentTreeNodeImageKey; |
||||
SelectedImageKey = ImageKey; |
||||
Update(); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the XmlComment associated with this tree node.
|
||||
/// </summary>
|
||||
public XmlComment XmlComment { |
||||
get { |
||||
return comment; |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,281 @@
@@ -0,0 +1,281 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Windows.Forms; |
||||
using System.Xml; |
||||
using ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.XmlEditor; |
||||
using NUnit.Framework; |
||||
using XmlEditor.Tests.Utils; |
||||
|
||||
namespace XmlEditor.Tests.Tree |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the display of XmlComment nodes in the Xml Tree
|
||||
/// and the removal and addition of new xml comment nodes.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class EditCommentNodesInTreeControlTestFixture |
||||
{ |
||||
XmlDocument doc; |
||||
DerivedXmlTreeViewContainerControl treeViewContainer; |
||||
XmlTreeViewControl treeView; |
||||
XmlCommentTreeNode rootCommentTreeNode; |
||||
XmlComment rootCommentNode; |
||||
XmlCommentTreeNode childCommentTreeNode; |
||||
XmlComment childCommentNode; |
||||
XmlElementTreeNode childElementTreeNode; |
||||
XmlElement childElement; |
||||
XmlElementTreeNode rootElementTreeNode; |
||||
XmlElement rootElement; |
||||
|
||||
[SetUp] |
||||
public void SetUp() |
||||
{ |
||||
XmlCompletionDataProvider completionDataProvider = new XmlCompletionDataProvider(new XmlSchemaCompletionDataCollection(), null, String.Empty); |
||||
treeViewContainer = new DerivedXmlTreeViewContainerControl(); |
||||
treeViewContainer.LoadXml("<!-- Root comment --><root><!-- Child comment --><child></child></root>", completionDataProvider); |
||||
|
||||
doc = treeViewContainer.Document; |
||||
treeView = treeViewContainer.TreeView; |
||||
|
||||
// Get the root comment node in the tree.
|
||||
rootCommentNode = (XmlComment)doc.FirstChild; |
||||
rootCommentTreeNode = treeView.Nodes[0] as XmlCommentTreeNode; |
||||
|
||||
// Get the child comment node in the tree.
|
||||
rootElementTreeNode = (XmlElementTreeNode)treeView.Nodes[1]; |
||||
rootElementTreeNode.Expanding(); |
||||
rootElement = rootElementTreeNode.XmlElement; |
||||
|
||||
childCommentTreeNode = rootElementTreeNode.Nodes[0] as XmlCommentTreeNode; |
||||
childCommentNode = (XmlComment)rootElementTreeNode.XmlElement.FirstChild; |
||||
|
||||
childElementTreeNode = rootElementTreeNode.Nodes[1] as XmlElementTreeNode; |
||||
childElement = childElementTreeNode.XmlElement; |
||||
} |
||||
|
||||
[TearDown] |
||||
public void TearDown() |
||||
{ |
||||
if (treeViewContainer != null) { |
||||
treeViewContainer.Dispose(); |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Should have an xml element and xml comment as root
|
||||
/// nodes in the XmlTreeViewControl.
|
||||
/// </summary>
|
||||
[Test] |
||||
public void TwoRootNodes() |
||||
{ |
||||
Assert.AreEqual(2, treeView.Nodes.Count); |
||||
} |
||||
|
||||
[Test] |
||||
public void RootCommentNodeExists() |
||||
{ |
||||
Assert.IsNotNull(rootCommentTreeNode); |
||||
} |
||||
|
||||
[Test] |
||||
public void RootCommentNodeText() |
||||
{ |
||||
Assert.AreEqual("Root comment", rootCommentTreeNode.Text); |
||||
} |
||||
|
||||
[Test] |
||||
public void RootCommentXmlNode() |
||||
{ |
||||
Assert.AreSame(rootCommentNode, rootCommentTreeNode.XmlComment); |
||||
} |
||||
|
||||
[Test] |
||||
public void ChildCommentNodeExists() |
||||
{ |
||||
Assert.IsNotNull(childCommentTreeNode); |
||||
} |
||||
|
||||
[Test] |
||||
public void ChildCommentNodeText() |
||||
{ |
||||
Assert.AreEqual("Child comment", childCommentTreeNode.Text); |
||||
} |
||||
|
||||
[Test] |
||||
public void ChildCommentXmlNode() |
||||
{ |
||||
Assert.AreSame(childCommentNode, childCommentTreeNode.XmlComment); |
||||
} |
||||
|
||||
[Test] |
||||
public void CommentTextChanged() |
||||
{ |
||||
// Select the comment node.
|
||||
treeView.SelectedNode = rootCommentTreeNode; |
||||
|
||||
string newText = "changed text"; |
||||
treeViewContainer.TextContent = newText; |
||||
|
||||
treeViewContainer.CallTextBoxTextChanged(); |
||||
|
||||
Assert.AreEqual(newText, rootCommentTreeNode.XmlComment.InnerText); |
||||
Assert.AreEqual(newText, rootCommentTreeNode.Text, "Tree node text should be updated with new XmlComment's inner text"); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Updates the comment node when no text node is selected in the
|
||||
/// tree.
|
||||
/// </summary>
|
||||
[Test] |
||||
public void UpdateCommentNodeText() |
||||
{ |
||||
treeView.SelectedNode = null; |
||||
|
||||
rootCommentNode.InnerText = "New value"; |
||||
treeView.UpdateComment(rootCommentNode); |
||||
Assert.AreEqual("New value", rootCommentTreeNode.Text); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Tests that when the XmlTreeView's UpdateCommentNode method
|
||||
/// is called we do not get a null exception if the
|
||||
/// text node cannot be found in the tree.
|
||||
/// </summary>
|
||||
[Test] |
||||
public void UpdateUnknownTextNodeText() |
||||
{ |
||||
// Select the root comment node.
|
||||
treeView.SelectedNode = rootCommentTreeNode; |
||||
|
||||
XmlComment comment = doc.CreateComment(String.Empty); |
||||
treeView.UpdateComment(comment); |
||||
} |
||||
|
||||
[Test] |
||||
public void UpdateChildCommentNodeText() |
||||
{ |
||||
treeView.SelectedNode = null; |
||||
|
||||
childCommentNode.InnerText = "New value"; |
||||
treeView.UpdateComment(childCommentNode); |
||||
Assert.AreEqual("New value", childCommentTreeNode.Text); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Makes sure that nothing happens if we try to add a text
|
||||
/// node to the currently selected element node when there
|
||||
/// is no selected element node.
|
||||
/// </summary>
|
||||
[Test] |
||||
public void AddChildCommentNodeWhenNoElementSelected() |
||||
{ |
||||
treeView.SelectedNode = null; |
||||
XmlComment newCommentNode = doc.CreateComment(String.Empty); |
||||
treeView.AppendChildComment(newCommentNode); |
||||
|
||||
Assert.IsFalse(treeViewContainer.IsDirty); |
||||
} |
||||
|
||||
[Test] |
||||
public void RemoveCommentWhenNoNodeSelected() |
||||
{ |
||||
treeView.SelectedNode = null; |
||||
treeView.RemoveComment(rootCommentNode); |
||||
|
||||
Assert.AreEqual(1, treeView.Nodes.Count); |
||||
Assert.IsInstanceOfType(typeof(XmlElementTreeNode), treeView.Nodes[0]); |
||||
} |
||||
|
||||
[Test] |
||||
public void RemoveUnknownCommentNode() |
||||
{ |
||||
treeView.SelectedNode = rootCommentTreeNode; |
||||
XmlComment newCommentNode = doc.CreateComment(String.Empty); |
||||
treeView.RemoveComment(newCommentNode); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentBeforeRootComment() |
||||
{ |
||||
treeView.SelectedNode = rootCommentTreeNode; |
||||
XmlComment newCommentNode = doc.CreateComment(String.Empty); |
||||
treeView.InsertCommentBefore(newCommentNode); |
||||
|
||||
XmlCommentTreeNode commentNode = treeView.Nodes[0] as XmlCommentTreeNode; |
||||
XmlCommentTreeNode originalCommentNode = treeView.Nodes[1] as XmlCommentTreeNode; |
||||
Assert.AreEqual(3, treeView.Nodes.Count); |
||||
Assert.AreEqual(String.Empty, commentNode.Text); |
||||
Assert.AreEqual(newCommentNode, commentNode.XmlComment); |
||||
Assert.AreSame(rootCommentTreeNode, originalCommentNode); |
||||
Assert.IsNull(commentNode.Parent); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentBeforeChildElement() |
||||
{ |
||||
treeView.SelectedNode = childElementTreeNode; |
||||
XmlComment newCommentNode = doc.CreateComment(String.Empty); |
||||
treeView.InsertCommentBefore(newCommentNode); |
||||
|
||||
XmlCommentTreeNode commentNode = childElementTreeNode.PrevNode as XmlCommentTreeNode; |
||||
Assert.AreEqual(String.Empty, commentNode.Text); |
||||
Assert.AreEqual(newCommentNode, commentNode.XmlComment); |
||||
Assert.IsNotNull(commentNode.Parent); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentBeforeWhenNothingSelected() |
||||
{ |
||||
treeView.SelectedNode = null; |
||||
XmlComment newCommentNode = doc.CreateComment(String.Empty); |
||||
treeView.InsertCommentBefore(newCommentNode); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentAfterRootComment() |
||||
{ |
||||
treeView.SelectedNode = rootCommentTreeNode; |
||||
XmlComment newCommentNode = doc.CreateComment(String.Empty); |
||||
treeView.InsertCommentAfter(newCommentNode); |
||||
|
||||
XmlCommentTreeNode commentNode = treeView.Nodes[1] as XmlCommentTreeNode; |
||||
XmlCommentTreeNode originalCommentNode = treeView.Nodes[0] as XmlCommentTreeNode; |
||||
Assert.AreEqual(3, treeView.Nodes.Count); |
||||
Assert.AreEqual(String.Empty, commentNode.Text); |
||||
Assert.AreEqual(newCommentNode, commentNode.XmlComment); |
||||
Assert.AreSame(rootCommentTreeNode, originalCommentNode); |
||||
Assert.IsNull(commentNode.Parent); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentAfterChildElement() |
||||
{ |
||||
treeView.SelectedNode = childElementTreeNode; |
||||
XmlComment newCommentNode = doc.CreateComment(String.Empty); |
||||
treeView.InsertCommentAfter(newCommentNode); |
||||
|
||||
XmlCommentTreeNode commentNode = childElementTreeNode.NextNode as XmlCommentTreeNode; |
||||
Assert.AreEqual(String.Empty, commentNode.Text); |
||||
Assert.AreEqual(newCommentNode, commentNode.XmlComment); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertElementAfterWhenCommentSelected() |
||||
{ |
||||
treeView.SelectedNode = childCommentTreeNode; |
||||
XmlElement element = doc.CreateElement("new"); |
||||
treeView.InsertElementAfter(element); |
||||
|
||||
XmlElementTreeNode node = childCommentTreeNode.NextNode as XmlElementTreeNode; |
||||
Assert.AreEqual("new", node.Text); |
||||
Assert.AreEqual(element, node.XmlElement); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,362 @@
@@ -0,0 +1,362 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Xml; |
||||
using ICSharpCode.XmlEditor; |
||||
using NUnit.Framework; |
||||
|
||||
namespace XmlEditor.Tests.Tree |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the XmlTreeEditor when editing xml comments.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class EditCommentNodesTestFixture : XmlTreeViewTestFixtureBase |
||||
{ |
||||
XmlComment rootComment; |
||||
XmlElement childElement; |
||||
|
||||
[SetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
base.InitFixture(); |
||||
rootComment = (XmlComment)mockXmlTreeView.Document.FirstChild; |
||||
childElement = (XmlElement)mockXmlTreeView.Document.SelectSingleNode("root/child"); |
||||
mockXmlTreeView.SelectedComment = rootComment; |
||||
editor.SelectedNodeChanged(); |
||||
} |
||||
|
||||
[Test] |
||||
public void IsViewShowingText() |
||||
{ |
||||
Assert.AreEqual(" Root comment ", mockXmlTreeView.TextContent); |
||||
} |
||||
|
||||
[Test] |
||||
public void AttributesClearedAfterCommentSelected() |
||||
{ |
||||
mockXmlTreeView.SelectedComment = null; |
||||
mockXmlTreeView.SelectedElement = mockXmlTreeView.Document.DocumentElement; |
||||
editor.SelectedNodeChanged(); |
||||
Assert.IsTrue(mockXmlTreeView.AttributesDisplayed.Count > 0); |
||||
|
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedComment = rootComment; |
||||
editor.SelectedNodeChanged(); |
||||
Assert.IsFalse(mockXmlTreeView.AttributesDisplayed.Count > 0); |
||||
} |
||||
|
||||
[Test] |
||||
public void CommentTextChanged() |
||||
{ |
||||
mockXmlTreeView.TextContent = "new value"; |
||||
editor.TextContentChanged(); |
||||
|
||||
Assert.AreEqual("new value", rootComment.InnerText); |
||||
} |
||||
|
||||
[Test] |
||||
public void IsDirtyAfterTextChanged() |
||||
{ |
||||
editor.TextContentChanged(); |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Check that the Xml tree editor calls the XmlTreeView's
|
||||
/// UpdateCommentNode method.
|
||||
/// </summary>
|
||||
[Test] |
||||
public void TreeNodeTextUpdated() |
||||
{ |
||||
mockXmlTreeView.TextContent = "new value"; |
||||
editor.TextContentChanged(); |
||||
|
||||
Assert.AreEqual(1, mockXmlTreeView.CommentNodesUpdated.Count); |
||||
Assert.AreEqual(rootComment, mockXmlTreeView.CommentNodesUpdated[0]); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddChildCommentNodeWhenNothingSelected() |
||||
{ |
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedComment = null; |
||||
mockXmlTreeView.IsDirty = false; |
||||
editor.AppendChildComment(); |
||||
Assert.IsFalse(mockXmlTreeView.IsDirty); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddChildCommentToChildElement() |
||||
{ |
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedComment = null; |
||||
mockXmlTreeView.SelectedElement = childElement; |
||||
editor.AppendChildComment(); |
||||
|
||||
// The second child node should be the comment.
|
||||
// The first child is the existing text node.
|
||||
XmlComment comment = childElement.ChildNodes[1] as XmlComment; |
||||
Assert.AreEqual(2, childElement.ChildNodes.Count); |
||||
Assert.IsNotNull(comment); |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
Assert.AreEqual(1, mockXmlTreeView.ChildCommentNodesAdded.Count); |
||||
} |
||||
|
||||
[Test] |
||||
public void RemoveComment() |
||||
{ |
||||
mockXmlTreeView.SelectedComment = rootComment; |
||||
editor.RemoveComment(); |
||||
|
||||
Assert.AreEqual(1, mockXmlTreeView.CommentNodesRemoved.Count); |
||||
Assert.AreSame(rootComment, mockXmlTreeView.CommentNodesRemoved[0]); |
||||
Assert.AreEqual(1, mockXmlTreeView.Document.ChildNodes.Count); |
||||
Assert.IsInstanceOfType(typeof(XmlElement), mockXmlTreeView.Document.FirstChild); |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
} |
||||
|
||||
[Test] |
||||
public void RemoveCommentWhenNoNodeSelected() |
||||
{ |
||||
mockXmlTreeView.SelectedComment = null; |
||||
editor.RemoveComment(); |
||||
|
||||
Assert.IsFalse(mockXmlTreeView.IsDirty); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentBeforeWhenNoNodeSelected() |
||||
{ |
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedComment = null; |
||||
|
||||
editor.InsertCommentBefore(); |
||||
|
||||
Assert.IsFalse(mockXmlTreeView.IsDirty); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentBeforeComment() |
||||
{ |
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedComment = rootComment; |
||||
|
||||
editor.InsertCommentBefore(); |
||||
|
||||
XmlNode parentNode = rootComment.ParentNode; |
||||
XmlComment comment = (XmlComment)parentNode.FirstChild; |
||||
XmlComment secondComment = parentNode.ChildNodes[1] as XmlComment; |
||||
|
||||
Assert.AreEqual(String.Empty, comment.InnerText); |
||||
Assert.AreSame(rootComment, secondComment); |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
Assert.AreEqual(1, mockXmlTreeView.CommentNodesInsertedBefore.Count); |
||||
Assert.AreSame(comment, mockXmlTreeView.CommentNodesInsertedBefore[0]); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentBeforeElement() |
||||
{ |
||||
XmlDocument doc = mockXmlTreeView.Document; |
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedElement = doc.DocumentElement; |
||||
mockXmlTreeView.SelectedComment = null; |
||||
|
||||
editor.InsertCommentBefore(); |
||||
|
||||
XmlComment comment = (XmlComment)doc.DocumentElement.PreviousSibling; |
||||
XmlComment originalComment = (XmlComment)comment.PreviousSibling; |
||||
|
||||
Assert.AreEqual(String.Empty, comment.InnerText); |
||||
Assert.AreSame(rootComment, originalComment); |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
Assert.AreEqual(1, mockXmlTreeView.CommentNodesInsertedBefore.Count); |
||||
Assert.AreSame(comment, mockXmlTreeView.CommentNodesInsertedBefore[0]); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentBeforeTextNode() |
||||
{ |
||||
XmlText textNode = (XmlText)mockXmlTreeView.Document.SelectSingleNode("/root/child/text()"); |
||||
mockXmlTreeView.SelectedTextNode = textNode; |
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedComment = null; |
||||
|
||||
editor.InsertCommentBefore(); |
||||
|
||||
XmlComment comment = (XmlComment)textNode.PreviousSibling; |
||||
|
||||
Assert.AreEqual(String.Empty, comment.InnerText); |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
Assert.AreEqual(1, mockXmlTreeView.CommentNodesInsertedBefore.Count); |
||||
Assert.AreSame(comment, mockXmlTreeView.CommentNodesInsertedBefore[0]); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentAfterWhenNoNodeSelected() |
||||
{ |
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedComment = null; |
||||
|
||||
editor.InsertCommentAfter(); |
||||
|
||||
Assert.IsFalse(mockXmlTreeView.IsDirty); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentAfterComment() |
||||
{ |
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedComment = rootComment; |
||||
|
||||
editor.InsertCommentAfter(); |
||||
|
||||
XmlComment comment = rootComment.NextSibling as XmlComment; |
||||
|
||||
Assert.AreEqual(String.Empty, comment.InnerText); |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
Assert.AreEqual(1, mockXmlTreeView.CommentNodesInsertedAfter.Count); |
||||
Assert.AreSame(comment, mockXmlTreeView.CommentNodesInsertedAfter[0]); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentAfterElement() |
||||
{ |
||||
XmlDocument doc = mockXmlTreeView.Document; |
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedElement = doc.DocumentElement; |
||||
mockXmlTreeView.SelectedComment = null; |
||||
|
||||
editor.InsertCommentAfter(); |
||||
|
||||
XmlComment comment = (XmlComment)doc.DocumentElement.NextSibling; |
||||
|
||||
Assert.AreEqual(String.Empty, comment.InnerText); |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
Assert.AreEqual(1, mockXmlTreeView.CommentNodesInsertedAfter.Count); |
||||
Assert.AreSame(comment, mockXmlTreeView.CommentNodesInsertedAfter[0]); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertCommentAfterTextNode() |
||||
{ |
||||
XmlText textNode = (XmlText)mockXmlTreeView.Document.SelectSingleNode("/root/child/text()"); |
||||
mockXmlTreeView.SelectedTextNode = textNode; |
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedComment = null; |
||||
|
||||
editor.InsertCommentAfter(); |
||||
|
||||
XmlComment comment = (XmlComment)textNode.NextSibling; |
||||
|
||||
Assert.AreEqual(String.Empty, comment.InnerText); |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
Assert.AreEqual(1, mockXmlTreeView.CommentNodesInsertedAfter.Count); |
||||
Assert.AreSame(comment, mockXmlTreeView.CommentNodesInsertedAfter[0]); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertTextNodeBeforeWhenCommentSelected() |
||||
{ |
||||
AddChildCommentToChildElement(); |
||||
|
||||
XmlComment comment = childElement.ChildNodes[1] as XmlComment; |
||||
|
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedComment = comment; |
||||
|
||||
mockXmlTreeView.IsDirty = false; |
||||
editor.InsertTextNodeBefore(); |
||||
|
||||
XmlText text = comment.PreviousSibling as XmlText; |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
Assert.IsNotNull(text); |
||||
Assert.AreEqual(1, mockXmlTreeView.TextNodesInsertedBefore.Count); |
||||
Assert.AreEqual(text, mockXmlTreeView.TextNodesInsertedBefore[0]); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertTextNodeAfterWhenCommentSelected() |
||||
{ |
||||
AddChildCommentToChildElement(); |
||||
|
||||
XmlComment comment = childElement.ChildNodes[1] as XmlComment; |
||||
|
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedComment = comment; |
||||
|
||||
mockXmlTreeView.IsDirty = false; |
||||
editor.InsertTextNodeAfter(); |
||||
|
||||
XmlText text = comment.NextSibling as XmlText; |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
Assert.IsNotNull(text); |
||||
Assert.AreEqual(1, mockXmlTreeView.TextNodesInsertedAfter.Count); |
||||
Assert.AreEqual(text, mockXmlTreeView.TextNodesInsertedAfter[0]); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertElementBeforeWhenCommentSelected() |
||||
{ |
||||
AddChildCommentToChildElement(); |
||||
|
||||
XmlComment comment = childElement.ChildNodes[1] as XmlComment; |
||||
|
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedComment = comment; |
||||
|
||||
mockXmlTreeView.SelectedNewElementsToReturn.Add("new"); |
||||
mockXmlTreeView.IsDirty = false; |
||||
editor.InsertElementBefore(); |
||||
|
||||
XmlElement element = comment.PreviousSibling as XmlElement; |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
Assert.IsNotNull(element); |
||||
Assert.AreEqual("new", element.LocalName); |
||||
Assert.AreEqual(1, mockXmlTreeView.ElementsInsertedBefore.Count); |
||||
Assert.AreEqual(element, mockXmlTreeView.ElementsInsertedBefore[0]); |
||||
} |
||||
|
||||
[Test] |
||||
public void InsertElementAfterWhenCommentSelected() |
||||
{ |
||||
AddChildCommentToChildElement(); |
||||
|
||||
XmlComment comment = childElement.ChildNodes[1] as XmlComment; |
||||
|
||||
mockXmlTreeView.SelectedTextNode = null; |
||||
mockXmlTreeView.SelectedElement = null; |
||||
mockXmlTreeView.SelectedComment = comment; |
||||
|
||||
mockXmlTreeView.SelectedNewElementsToReturn.Add("new"); |
||||
mockXmlTreeView.IsDirty = false; |
||||
editor.InsertElementAfter(); |
||||
|
||||
XmlElement element = comment.NextSibling as XmlElement; |
||||
Assert.IsTrue(mockXmlTreeView.IsDirty); |
||||
Assert.IsNotNull(element); |
||||
Assert.AreEqual("new", element.LocalName); |
||||
Assert.AreEqual(1, mockXmlTreeView.ElementsInsertedAfter.Count); |
||||
Assert.AreEqual(element, mockXmlTreeView.ElementsInsertedAfter[0]); |
||||
} |
||||
|
||||
protected override string GetXml() |
||||
{ |
||||
return "<!-- Root comment --><root a='b'><!-- Child comment --><child>text</child></root>"; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,62 @@
@@ -0,0 +1,62 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Xml; |
||||
using ICSharpCode.XmlEditor; |
||||
using NUnit.Framework; |
||||
|
||||
namespace XmlEditor.Tests.Tree |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the XmlCommentTreeNode class.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class XmlCommentTreeNodeTests |
||||
{ |
||||
XmlDocument doc; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
doc = new XmlDocument(); |
||||
doc.LoadXml("<root/>"); |
||||
} |
||||
|
||||
[Test] |
||||
public void WhiteSpaceRemoved() |
||||
{ |
||||
XmlComment comment = doc.CreateComment(" \t\tTest\t\t "); |
||||
XmlCommentTreeNode node = new XmlCommentTreeNode(comment); |
||||
Assert.AreEqual("Test", node.Text); |
||||
} |
||||
|
||||
[Test] |
||||
public void ImageKey() |
||||
{ |
||||
XmlComment comment = doc.CreateComment(String.Empty); |
||||
XmlCommentTreeNode node = new XmlCommentTreeNode(comment); |
||||
Assert.AreEqual(XmlCommentTreeNode.XmlCommentTreeNodeImageKey, node.ImageKey); |
||||
} |
||||
|
||||
[Test] |
||||
public void SelectedImageKey() |
||||
{ |
||||
XmlComment comment = doc.CreateComment(String.Empty); |
||||
XmlCommentTreeNode node = new XmlCommentTreeNode(comment); |
||||
Assert.AreEqual(XmlCommentTreeNode.XmlCommentTreeNodeImageKey, node.SelectedImageKey); |
||||
} |
||||
|
||||
[Test] |
||||
public void XmlCommentIsSame() |
||||
{ |
||||
XmlComment comment = doc.CreateComment(String.Empty); |
||||
XmlCommentTreeNode node = new XmlCommentTreeNode(comment); |
||||
Assert.AreSame(comment, node.XmlComment); |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue