public void AddIEnumerableOfXNodesPlusString() { InputSpace.Contacts(ref _xDoc, ref _xmlDoc); XElement element = new XElement("contacts", _xDoc.Root.DescendantNodes(), "This String"); XStreamingElement streamElement = new XStreamingElement("contacts"); streamElement.Add(_xDoc.Root.DescendantNodes(), "This String"); GetFreshStream(); streamElement.Save(_sourceStream); element.Save(_targetStream); ResetStreamPos(); Assert.True(Diff.Compare(_sourceStream, _targetStream)); }
public void NestedXStreamingElementPlusIEnumerable() { InputSpace.Contacts(ref _xDoc, ref _xmlDoc); XElement element = new XElement("contacts", new XElement("Element", "Value"), _xDoc.Root.DescendantNodes()); XStreamingElement streamElement = new XStreamingElement("contacts"); streamElement.Add(new XStreamingElement("Element", "Value"), _xDoc.Root.DescendantNodes()); GetFreshStream(); streamElement.Save(_sourceStream); element.Save(_targetStream); ResetStreamPos(); Assert.True(Diff.Compare(_sourceStream, _targetStream)); }
public void AddIEnumerableOfXNodes() { XElement x = InputSpace.GetElement(100, 3); XElement element = new XElement("root", x.Nodes()); XStreamingElement streamElement = new XStreamingElement("root"); streamElement.Add(x.Nodes()); GetFreshStream(); streamElement.Save(_sourceStream); element.Save(_targetStream); ResetStreamPos(); Assert.True(Diff.Compare(_sourceStream, _targetStream)); }
//[Variation(Priority = 0, Desc = "Constructore - XStreamingElement(XName, XDocument)")] public void XDocInXStreamingElement() { InputSpace.Contacts(ref _xDoc, ref _xmlDoc); try { XStreamingElement streamElement = new XStreamingElement("Root", _xDoc); streamElement.Save(new MemoryStream()); } catch (System.InvalidOperationException) { return; } throw new TestFailedException(""); }
void VariationsForXElement(TestFunc func) { AddChild(func, 1, "XElement - empty element", new XNode[] { new XElement("element") }, 0); AddChild(func, 0, "XElement - first element", new XNode[] { new XElement("parent", new XElement("child", "child text")) }, 0); AddChild(func, 0, "XElement - last element", new XNode[] { new XElement("parent", "parent text"), new XElement("child", "child text") }, 1); AddChild(func, 0, "XElement - middle node", new XNode[] { new XElement("parent", "parent text"), new XText("text"), new XElement("child", "child text") }, 1); AddChild(func, 0, "XElement - CData", new XNode[] { new XCData("x+y >= z-m") }, 0); AddChild(func, 0, "XElement - PI", new XNode[] { new XProcessingInstruction("PI", "Data") }, 0); AddChild(func, 0, "XElement - comment", new XNode[] { new XComment("Comment") }, 0); AddChild(func, 0, "XElement - first text nodes", new XNode[] { new XText(""), new XText(" "), new XText("\t") }, 0); AddChild(func, 1, "XElement - second text nodes", new XNode[] { new XText(""), new XText(" "), new XText("\t") }, 1); AddChild(func, 1, "XElement - third text nodes", new XNode[] { new XText(""), new XText(" "), new XText("\t") }, 2); AddChild(func, 1, "XElement - IEnumerable of XNodes", InputSpace.GetElement(100, 10).DescendantNodes().ToArray(), 50); }
public void AddAndRemoveEventListnersXElementAddRemoveEventListners() { XDocument xDoc = new XDocument(InputSpace.GetElement(10, 10)); EventsHelper docHelper = new EventsHelper(xDoc); EventsHelper eHelper = new EventsHelper(xDoc.Root); xDoc.Root.Add(new XElement("Add", "Me")); docHelper.Verify(XObjectChange.Add); eHelper.Verify(XObjectChange.Add); eHelper.RemoveListners(); xDoc.Root.Add(new XComment("Comment")); eHelper.Verify(0); docHelper.Verify(XObjectChange.Add); }
//[Variation(Priority = 0, Desc = "Add(IEnumerable of XNodes)")] public void AddIEnumerableOfXNodes() { XElement x = InputSpace.GetElement(100, 3); XElement element = new XElement("root", x.Nodes()); XStreamingElement streamElement = new XStreamingElement("root"); streamElement.Add(x.Nodes()); getFreshStream(); streamElement.Save(_sourceStream); element.Save(_targetStream); resetStreamPos(); if (!_diff.Compare(_sourceStream, _targetStream)) { throw new TestFailedException(""); } }
//[Variation(Priority = 0, Desc = "Nested XStreamingElements + IEnumberable")] public void NestedXStreamingElementPlusIEnumerable() { InputSpace.Contacts(ref _xDoc, ref _xmlDoc); XElement element = new XElement("contacts", new XElement("Element", "Value"), _xDoc.Root.DescendantNodes()); XStreamingElement streamElement = new XStreamingElement("contacts"); streamElement.Add(new XStreamingElement("Element", "Value"), _xDoc.Root.DescendantNodes()); getFreshStream(); streamElement.Save(_sourceStream); element.Save(_targetStream); resetStreamPos(); if (!_diff.Compare(_sourceStream, _targetStream)) { throw new TestFailedException(""); } }
//[Variation(Priority = 0, Desc = "Add(IEnumerable of XNodes + string)")] public void AddIEnumerableOfXNodesPlusString() { InputSpace.Contacts(ref _xDoc, ref _xmlDoc); XElement element = new XElement("contacts", _xDoc.Root.DescendantNodes(), "This String"); XStreamingElement streamElement = new XStreamingElement("contacts"); streamElement.Add(_xDoc.Root.DescendantNodes(), "This String"); getFreshStream(); streamElement.Save(_sourceStream); element.Save(_targetStream); resetStreamPos(); if (!_diff.Compare(_sourceStream, _targetStream)) { throw new TestFailedException(""); } }
void VariationsForXElement(TestFunc func) { AddChild(func, 1, "XElement - empty element", new XObject[] { new XElement("element") }); AddChild(func, 0, "XElement - element with child", new XObject[] { new XElement("parent", new XElement("child", "child text")) }); AddChild(func, 0, "XElement - CData", new XObject[] { new XCData("x+y >= z-m") }); AddChild(func, 0, "XElement - PI", new XObject[] { new XProcessingInstruction("PI", "Data") }); AddChild(func, 0, "XElement - comment", new XObject[] { new XComment("Comment") }); AddChild(func, 0, "XElement - text nodes", new XObject[] { new XText(""), new XText(" "), new XText("\t") }); AddChild(func, 1, "XElement - IEnumerable of XNodes", InputSpace.GetElement(100, 10).DescendantNodes().ToArray()); AddChild(func, 0, "XAttribute - only attribute", new XObject[] { new XAttribute("xxx", "yyy") }); AddChild(func, 0, "XAttribute - only attribute with namespace", new XObject[] { new XAttribute("{a}xxx", "a_yyy") }); AddChild(func, 0, "XAttribute - mulitple attributes", new XObject[] { new XAttribute("xxx", "yyy"), new XAttribute("a", "aa") }); AddChild(func, 1, "XAttribute - multiple attributes with namespace", new XObject[] { new XAttribute("{b}xxx", "b_yyy"), new XAttribute("{a}xxx", "a_yyy") }); AddChild(func, 1, "XAttribute - IEnumerable of XAttributes", InputSpace.GetAttributeElement(10, 1000).Elements().Attributes().ToArray()); AddChild(func, 1, "Mixed - Nodes and attributes", new XObject[] { new XAttribute("{b}xxx", "b_yyy"), new XElement("parent", new XElement("child", "child text")) }); }
//[Variation(Priority = 1, Desc = "XElement - Replace with IEnumerable")] public void ReplaceWithIEnum() { XElement xElem = new XElement("root"); IEnumerable <XNode> newValue = InputSpace.GetElement(1000, 2).DescendantNodes(); XElement xElemOriginal = new XElement(xElem); using (UndoManager undo = new UndoManager(xElem)) { undo.Group(); using (EventsHelper eHelper = new EventsHelper(xElem)) { xElem.ReplaceNodes(newValue); eHelper.Verify(XObjectChange.Add, newValue.ToArray()); } undo.Undo(); TestLog.Compare(XNode.DeepEquals(xElem, xElemOriginal), "Undo did not work!"); } }
public void ExecuteXElementVariation(XNode[] content) { XElement xElem = new XElement("root", InputSpace.GetAttributeElement(10, 1000).Elements().Attributes(), content); XElement xElemOriginal = new XElement(xElem); using (UndoManager undo = new UndoManager(xElem)) { undo.Group(); using (EventsHelper elemHelper = new EventsHelper(xElem)) { xElem.RemoveNodes(); Assert.True(xElem.IsEmpty, "Not all content were removed"); Assert.True(xElem.HasAttributes, "RemoveNodes removed the attributes"); xElem.Verify(); elemHelper.Verify(XObjectChange.Remove, content); } 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!"); } }
public void ExceptionInPOSTEventHandlerXElementPostException() { XDocument xDoc = new XDocument(InputSpace.GetElement(10, 10)); XElement toChange = xDoc.Descendants().ElementAt(5); xDoc.Changing += new EventHandler <XObjectChangeEventArgs>( delegate(object sender, XObjectChangeEventArgs e) { // Do nothing }); xDoc.Changed += new EventHandler <XObjectChangeEventArgs>( delegate(object sender, XObjectChangeEventArgs e) { throw new InvalidOperationException("This should be propagated and operation should perform"); }); Assert.Throws <InvalidOperationException>(() => { toChange.Add(new XElement("Add", "Me")); }); xDoc.Root.Verify(); Assert.NotNull(toChange.Element("Add")); }
public void XElementRemoveSeq() { XDocument xDoc = new XDocument(InputSpace.GetElement(100, 10)); XDocument xDocOriginal = new XDocument(xDoc); using (UndoManager undo = new UndoManager(xDoc)) { undo.Group(); using (EventsHelper docHelper = new EventsHelper(xDoc)) { using (EventsHelper eHelper = new EventsHelper(xDoc.Root)) { List <XElement> list = xDoc.Root.Elements().ToList(); xDoc.Root.Elements().Remove(); eHelper.Verify(XObjectChange.Remove, list.ToArray()); docHelper.Verify(XObjectChange.Remove, list.ToArray()); } } undo.Undo(); Assert.True(XNode.DeepEquals(xDoc, xDocOriginal), "Undo did not work!"); } }
public void ExecuteXElementVariation(XNode toReplace) { XNode newValue = new XText("text"); XElement xElem = new XElement("root", InputSpace.GetAttributeElement(10, 1000).Elements().Attributes(), toReplace); XElement xElemOriginal = new XElement(xElem); using (UndoManager undo = new UndoManager(xElem)) { undo.Group(); using (EventsHelper eHelper = new EventsHelper(xElem)) { xElem.ReplaceNodes(newValue); Assert.True(xElem.Nodes().Count() == 1, "Did not replace correctly"); Assert.True(Object.ReferenceEquals(xElem.FirstNode, newValue), "Did not replace correctly"); Assert.True(xElem.HasAttributes, "ReplaceNodes removed attributes"); xElem.Verify(); eHelper.Verify(new XObjectChange[] { XObjectChange.Remove, XObjectChange.Add }, new XObject[] { toReplace, newValue }); } 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!"); } }
//[Variation(Priority = 1, Desc = "XElement - Add at each level, nested elements")] public void XElementAddAtDeepLevel() { XDocument xDoc = new XDocument(InputSpace.GetElement(100, 10)); XDocument xDocOriginal = new XDocument(xDoc); using (UndoManager undo = new UndoManager(xDoc)) { undo.Group(); using (EventsHelper docHelper = new EventsHelper(xDoc)) { using (EventsHelper eHelper = new EventsHelper(xDoc.Root)) { foreach (XElement x in xDoc.Root.Descendants()) { x.Add(new XText("Add Me")); eHelper.Verify(XObjectChange.Add); } docHelper.Verify(XObjectChange.Add, xDoc.Root.Descendants().Count()); } } undo.Undo(); TestLog.Compare(XNode.DeepEquals(xDoc, xDocOriginal), "Undo did not work!"); } }
public void XAttributeXAttributeAddAtDeepLevel() { XDocument xDoc = new XDocument(InputSpace.GetAttributeElement(100, 10)); XDocument xDocOriginal = new XDocument(xDoc); using (UndoManager undo = new UndoManager(xDoc)) { undo.Group(); using (EventsHelper docHelper = new EventsHelper(xDoc)) { using (EventsHelper eHelper = new EventsHelper(xDoc.Root)) { foreach (XElement x in xDoc.Root.Descendants()) { x.Add(new XAttribute("at", "value")); eHelper.Verify(XObjectChange.Add); } docHelper.Verify(XObjectChange.Add, xDoc.Root.Descendants().Count()); } } undo.Undo(); Assert.True(XNode.DeepEquals(xDoc, xDocOriginal), "Undo did not work!"); } }
public void RemoveBothEventListenersXElementRemoveBothEventListners() { XDocument xDoc = new XDocument(InputSpace.GetElement(10, 10)); EventHandler <XObjectChangeEventArgs> d1 = ChangingDelegate; EventHandler <XObjectChangeEventArgs> d2 = ChangedDelegate; xDoc.Changing += new EventHandler <XObjectChangeEventArgs>(d1); xDoc.Changed += new EventHandler <XObjectChangeEventArgs>(d2); xDoc.Root.Add(new XComment("This is a comment")); xDoc.Changing -= new EventHandler <XObjectChangeEventArgs>(d1); xDoc.Changed -= new EventHandler <XObjectChangeEventArgs>(d2); //Remove it again xDoc.Changing -= new EventHandler <XObjectChangeEventArgs>(d1); xDoc.Changed -= new EventHandler <XObjectChangeEventArgs>(d2); //Change the order xDoc.Changed += new EventHandler <XObjectChangeEventArgs>(d2); xDoc.Changing += new EventHandler <XObjectChangeEventArgs>(d1); xDoc.Root.Add(new XComment("This is a comment")); xDoc.Changed -= new EventHandler <XObjectChangeEventArgs>(d2); xDoc.Changing -= new EventHandler <XObjectChangeEventArgs>(d1); //Remove it again xDoc.Changed -= new EventHandler <XObjectChangeEventArgs>(d2); xDoc.Changing -= new EventHandler <XObjectChangeEventArgs>(d1); }
void VariationsForRemove(TestFunc func) { AddChild(func, 1, "Remove - Empty element", new XElement("element")); AddChild(func, 0, "Remove - Element with value", new XElement("element", "value")); AddChild(func, 0, "Remove - Element with attribute", new XElement("element", new XAttribute("a", "aa"))); AddChild(func, 0, "Remove - Element with child", new XElement("parent", new XElement("child", "child text"))); AddChild(func, 1, "Remove - Element with nodes", new XElement("nodes", InputSpace.GetElement(100, 10).DescendantNodes())); }
void VariationsForValue(TestFunc func) { AddChild(func, 1, "Value - Empty element", new XElement("element"), (double)10); AddChild(func, 0, "Value - Element with value", new XElement("element", "value"), "newValue"); AddChild(func, 0, "Value - Element with attribute", new XElement("element", new XAttribute("a", "aa")), System.DateTime.Now); AddChild(func, 0, "Value - Element with child", new XElement("parent", new XElement("child", "child text")), "Windows 8"); AddChild(func, 1, "Value - Element with nodes", new XElement("nodes", InputSpace.GetElement(100, 10).DescendantNodes()), "StackTrace");//Environment.StackTrace); }
void VariationsForXAttribute(TestFunc func) { AddChild(func, 0, "XAttribute - attribute in element with no attributes", new XAttribute[] { new XAttribute("xxx", "yyy") }, null); AddChild(func, 0, "XAttribute - attribute with namespace in element with no attributes", new XAttribute[] { new XAttribute("{a}xxx", "a_yyy") }, null); AddChild(func, 1, "XAttribute - IEnumerable of XAttributes in element with no attributes", InputSpace.GetElement(100, 10).Attributes().ToArray(), null); AddChild(func, 0, "XAttribute - attribute in element with attribute", new XAttribute[] { new XAttribute("xxx", "yyy") }, new XAttribute("a", "aa")); AddChild(func, 0, "XAttribute - attribute with namespace in element with attributes", new XAttribute[] { new XAttribute("{b}xxx", "b_yyy") }, new XAttribute("a", "aa")); AddChild(func, 1, "XAttribute - IEnumerable of XAttributes in element with no attributes", InputSpace.GetElement(100, 10).Attributes().ToArray(), new XAttribute("a", "aa")); }
void VariationsForXElement(TestFunc func) { AddChild(func, 1, "XElement - empty element in empty element", new XNode[] { new XElement("element") }, null); AddChild(func, 0, "XElement - element in empty element", new XNode[] { new XElement("parent", new XElement("child", "child text")) }, null); AddChild(func, 0, "XElement - CData in empty element", new XNode[] { new XCData("x+y >= z-m") }, null); AddChild(func, 0, "XElement - PI in empty element", new XNode[] { new XProcessingInstruction("PI", "Data") }, null); AddChild(func, 0, "XElement - comment in empty element", new XNode[] { new XComment("Comment") }, null); AddChild(func, 0, "XElement - text in empty element", new XNode[] { new XText(""), new XText(" "), new XText("\t") }, null); AddChild(func, 1, "XElement - IEnumerable of XNodes in empty element", InputSpace.GetElement(100, 10).DescendantNodes().ToArray(), null); AddChild(func, 0, "XElement - empty element in element with text", new XNode[] { new XElement("element") }, new XText("some text")); AddChild(func, 0, "XElement - element in element with PI", new XNode[] { new XElement("parent", new XElement("child", "child text")) }, new XProcessingInstruction("PI", "Data")); AddChild(func, 0, "XElement - CData in element with child element", new XNode[] { new XCData("x+y >= z-m") }, new XElement("child")); AddChild(func, 0, "XElement - PI in element with text", new XNode[] { new XProcessingInstruction("PI", "Data") }, new XText(" ")); AddChild(func, 0, "XElement - comment in element with CData", new XNode[] { new XComment("Comment") }, new XCData("x+y >= z-m")); AddChild(func, 0, "XElement - text in element with empty text", new XNode[] { new XText(""), new XText(" "), new XText("\t") }, new XText(" ")); AddChild(func, 1, "XElement - IEnumerable of XNodes in element with text", InputSpace.GetElement(100, 10).DescendantNodes().ToArray(), new XText("..")); }
void VariationsForXElement(TestFunc func) { AddChild(func, 0, "Empty element", new XElement("element"), "newValue"); AddChild(func, 0, "Element with string", new XElement("element", "value"), "newValue"); AddChild(func, 0, "Element with attributes", new XElement("element", new XAttribute("a", "aa")), "newValue"); AddChild(func, 0, "Element with nodes", new XElement("parent", new XElement("child", "child text")), "newValue"); AddChild(func, 1, "Element with IEnumerable of XNodes", new XElement("root", InputSpace.GetElement(100, 10).DescendantNodes()), "newValue"); }