public void ExecuteXDocumentVariation(XNode[] toAdd, XNode contextNode) { IEnumerable<XNode> toAddList = toAdd.OfType<XNode>(); XDocument xDoc = new XDocument(contextNode); XDocument xDocOriginal = new XDocument(xDoc); using (UndoManager undo = new UndoManager(xDoc)) { undo.Group(); using (EventsHelper docHelper = new EventsHelper(xDoc)) { using (EventsHelper nodeHelper = new EventsHelper(contextNode)) { contextNode.AddAfterSelf(toAdd); Assert.True(toAddList.SequenceEqual(contextNode.NodesAfterSelf(), XNode.EqualityComparer), "Nodes not added correctly!"); nodeHelper.Verify(0); } docHelper.Verify(XObjectChange.Add, toAdd); } undo.Undo(); Assert.True(XNode.DeepEquals(xDoc, xDocOriginal), "Undo did not work!"); } }
public void ExecuteXElementVariation(XNode[] toAdd, XNode contextNode) { IEnumerable<XNode> toAddList = toAdd.OfType<XNode>(); XElement xElem = new XElement("root", contextNode); XElement xElemOriginal = new XElement(xElem); using (UndoManager undo = new UndoManager(xElem)) { undo.Group(); using (EventsHelper elemHelper = new EventsHelper(xElem)) { using (EventsHelper nodeHelper = new EventsHelper(contextNode)) { contextNode.AddAfterSelf(toAdd); Assert.True(toAddList.SequenceEqual(contextNode.NodesAfterSelf(), XNode.EqualityComparer), "Nodes not added correctly!"); nodeHelper.Verify(0); } elemHelper.Verify(XObjectChange.Add, toAdd); } undo.Undo(); Assert.True(xElem.Nodes().SequenceEqual(xElemOriginal.Nodes(), XNode.EqualityComparer), "Undo did not work!"); Assert.True(xElem.Attributes().EqualsAllAttributes(xElemOriginal.Attributes(), Helpers.MyAttributeComparer), "Undo did not work!"); } }
/// <summary> /// Ensures the whitespace separation for the first child element added to a node. /// </summary> /// <param name="element"></param> private void EnsureFirstNodeWhitespaceSeparation(XNode element) { #if DEBUG if (element.Parent != null) { Debug.Assert(element.Parent.Elements().Count() == 1, "Unexpected count of elements!"); } else { // if first.Parent is null, then this is the root element in a document Debug.Assert(element.Document.Root == element, "element had null parent, but is not the root element of the document"); } #endif var precedingNewLine = new XText(Environment.NewLine + new string(' ', GetIndentLevel() * 2)); var trailingNewLine = new XText(Environment.NewLine + new string(' ', Parent.GetIndentLevel() * 2)); element.AddBeforeSelf(precedingNewLine); element.AddAfterSelf(trailingNewLine); }