public void TestObjectMethods() { //Equals SimpleElement se1 = new SimpleElement("name"); SimpleElement se2 = new SimpleElement("name", "value"); SimpleValue sv = new SimpleValue("value"); Assert.IsFalse(se1.Equals(sv)); Assert.IsFalse(se1.Equals(se2)); se2.SetString(se1.GetString()); Assert.IsTrue(se1.Equals(se2)); se1.AddElement("child1"); se1.AddElement("child2"); Assert.IsFalse(se1.Equals(se2)); se2.AddElement("child1"); se2.AddElement("child2"); Assert.IsTrue(se1.Equals(se2)); se1.AddAttribute("attr1"); Assert.IsFalse(se1.Equals(se2)); se2.AddAttribute("attr1"); Assert.IsTrue(se1.Equals(se2)); //GetHashCode Assert.AreEqual(XmlHelper.HashElement(se1), se1.GetHashCode()); //Clone SimpleElement se1c = (SimpleElement)se1.Clone(); Assert.AreEqual(se1c, se1); Assert.AreNotSame(se1, se1c); se1.Comment = "comment"; Assert.AreNotEqual(se1c, se1); }
public void TestWriteMethods() { //WriteValue TextWriter writer = new StringWriter(); SimpleElement se = new SimpleElement("root", "some\ntext"); se.WriteValue(writer, true); Assert.AreEqual(se.GetString(), writer.ToString()); writer = new StringWriter(); IndentingWriter indentedWriter = new IndentingWriter(writer, 2); se.WriteValue(indentedWriter, true); Assert.AreEqual(se.GetString(), writer.ToString()); //WriteXml se = new SimpleElement("root"); writer = new StringWriter(); se.WriteXml(writer, true); Assert.AreEqual("<root/>", writer.ToString()); se.AddAttribute("attr1").SetString("value1"); writer = new StringWriter(); se.WriteXml(writer, true); Assert.AreEqual("<root attr1='value1'/>", writer.ToString()); se.Comment = "comment text"; se.SetString("content"); writer = new StringWriter(); se.WriteXml(writer, true); Assert.AreEqual("<root attr1='value1'><!--" + writer.NewLine + "comment text" + writer.NewLine + "-->content</root>", writer.ToString()); writer = new StringWriter(); se.WriteXml(writer, false); Assert.AreEqual("<root attr1='value1'><!--comment text-->content</root>", writer.ToString()); se.AddElement("child").SetString("child content"); writer = new StringWriter(); se.WriteXml(writer, true); string result = "<root attr1='value1'>" + writer.NewLine + " <!--" + writer.NewLine + " comment text" + writer.NewLine + " -->" + writer.NewLine + "content" + writer.NewLine + " <child>child content</child>" + writer.NewLine + "</root>"; Assert.AreEqual(result, writer.ToString()); Assert.AreEqual(result, se.ToString()); writer = new StringWriter(); se.WriteXml(writer, false); result = "<root attr1='value1'><!--comment text-->content<child>child content</child></root>"; Assert.AreEqual(result, writer.ToString()); }
public void TestObjectHelpers() { Exception e = null; //EqualsValue SimpleValue sv1 = new SimpleValue(""); SimpleValue sv2 = new SimpleValue(Binary.NO_BINARY); Assert.IsTrue(XmlHelper.EqualsValue(sv1, sv2)); //both are empty sv1.SetString("True"); Assert.IsFalse(XmlHelper.EqualsValue(sv1, sv2)); sv2.SetBoolean(true); Assert.IsTrue(XmlHelper.EqualsValue(sv1, sv2)); try { XmlHelper.EqualsValue(null, sv2); } catch (Exception ex) { e = ex; } Assert.IsNotNull(e); Assert.IsInstanceOf(typeof(ArgumentException), e); sv2.SetString(null); try { XmlHelper.EqualsValue(sv1, sv2); } catch (Exception ex) { e = ex; } Assert.IsNotNull(e); Assert.IsInstanceOf(typeof(ArgumentException), e); sv2.SetBoolean(true); //EqualsElement SimpleElement se1 = new SimpleElement(); SimpleElement se2 = new SimpleElement("name", "value"); se2.Comment = "comment"; Assert.IsFalse(XmlHelper.EqualsElement(se1, se2)); se1.Name = se2.Name; Assert.IsFalse(XmlHelper.EqualsElement(se1, se2)); se1.SetString(se2.GetString()); Assert.IsFalse(XmlHelper.EqualsElement(se1, se2)); se1.Comment = se2.Comment; Assert.IsTrue(XmlHelper.EqualsElement(se1, se2)); se1.AddElement("el1"); Assert.IsFalse(XmlHelper.EqualsElement(se1, se2)); se2.AddElement("el1"); Assert.IsTrue(XmlHelper.EqualsElement(se1, se2)); se1.AddAttribute("attr1"); Assert.IsFalse(XmlHelper.EqualsElement(se1, se2)); se2.AddAttribute("attr1"); Assert.IsTrue(XmlHelper.EqualsElement(se1, se2)); try { XmlHelper.EqualsElement(null, se2); } catch (Exception ex) { e = ex; } Assert.IsNotNull(e); Assert.IsInstanceOf(typeof(ArgumentException), e); //HashValue SimpleValue sv = new SimpleValue(); Assert.IsNull(sv.Value); Assert.AreEqual(0, XmlHelper.HashValue(sv)); sv.SetString("test"); Assert.AreEqual("test".GetHashCode(), XmlHelper.HashValue(sv)); sv.SetDecimal(decimal.MinusOne); Assert.AreEqual(XmlHelper.Convert(decimal.MinusOne, XmlValueType.String).GetHashCode(), XmlHelper.HashValue(sv)); Assert.AreEqual(XmlHelper.HashValue(sv1), XmlHelper.HashValue(sv2)); //HashElement Assert.AreEqual(XmlHelper.HashElement(se1), XmlHelper.HashElement(se2)); IXmlElement el1 = se1.GetElement("el1"); el1.SetString("new value"); Assert.AreNotEqual(XmlHelper.HashElement(se1), XmlHelper.HashElement(se2)); }
public void TestElementHelpers() { Exception e = null; //GetAbsolutePath SimpleElement root = new SimpleElement(); Assert.AreEqual(XmlHelper.GetAbsolutePath(root), "/"); root.Name = "root"; Assert.AreEqual(XmlHelper.GetAbsolutePath(root), "/root"); SimpleElement se = new SimpleElement("child"); se.Parent = root; Assert.AreEqual(XmlHelper.GetAbsolutePath(se), "/root/child"); try { XmlHelper.GetAbsolutePath(null); } catch (Exception ex) { e = ex; } Assert.IsNotNull(e); Assert.IsInstanceOf(typeof(ArgumentNullException), e); //IsEmpty se = new SimpleElement(); Assert.IsTrue(XmlHelper.IsEmpty(se)); se.SetString("value"); Assert.IsFalse(XmlHelper.IsEmpty(se)); se.SetString(null); Assert.IsTrue(XmlHelper.IsEmpty(se)); se.AddElement("name"); Assert.IsFalse(XmlHelper.IsEmpty(se)); se.ElementList.Clear(); Assert.IsTrue(XmlHelper.IsEmpty(se)); se.AddAttribute("attr"); Assert.IsFalse(XmlHelper.IsEmpty(se)); //GetElement se = new SimpleElement(); Assert.IsNull(XmlHelper.GetElement(se, "child1")); se.AddElement("child1"); se.AddElement("child2"); Assert.IsNotNull(XmlHelper.GetElement(se, "child1")); e = null; try { XmlHelper.GetElement(se, "&invalid"); } catch (Exception ex) { e = ex; } Assert.IsNotNull(e); Assert.IsInstanceOf(typeof(ArgumentException), e); //FindElement root = new SimpleElement("root"); IXmlElement child1 = root.AddElement("child1"); IXmlElement child2 = child1.AddElement("child2"); string path = "/child1"; Assert.AreEqual(child1, XmlHelper.FindElement(root, path)); Assert.AreEqual(child1, XmlHelper.FindElement(child1, path)); path = "child2"; Assert.IsNull(XmlHelper.FindElement(root, path)); Assert.AreEqual(child2, XmlHelper.FindElement(child1, path)); path = "../child1"; Assert.IsNull(XmlHelper.FindElement(child2, path)); Assert.AreEqual(child1, XmlHelper.FindElement(child1, path)); e = null; try { XmlHelper.FindElement(root, null); } catch (Exception ex) { e = ex; } Assert.IsNotNull(e); Assert.IsInstanceOf(typeof(ArgumentException), e); e = null; try { XmlHelper.FindElement(root, path); } catch (Exception ex) { e = ex; } Assert.IsNotNull(e); Assert.IsInstanceOf(typeof(ArgumentException), e); //FindElement with value root = new SimpleElement(); child1 = root.AddElement("child1"); child1.SetString("value1"); root.AddElement("child1").SetString("value2"); child2 = child1.AddElement("child2"); path = "/child1"; Assert.AreEqual(child1, XmlHelper.FindElement(root, path, "value1")); Assert.IsNull(XmlHelper.FindElement(root, path, "valueX")); path = "child2"; Assert.IsNull(XmlHelper.FindElement(root, path, null)); Assert.AreEqual(child2, XmlHelper.FindElement(child1, path, null)); path = "../child1"; Assert.IsNull(XmlHelper.FindElement(child2, path, null)); Assert.AreNotEqual(child1, XmlHelper.FindElement(child1, path, "value2")); path = "child2/../child2"; Assert.IsNull(XmlHelper.FindElement(child1, path, 5)); Assert.AreEqual(child2, XmlHelper.FindElement(child1, path, null)); e = null; try { XmlHelper.FindElement(null, path, null); } catch (Exception ex) { e = ex; } Assert.IsNotNull(e); Assert.IsInstanceOf(typeof(ArgumentException), e); //EnsureElement root = new SimpleElement("root"); child1 = root.AddElement("child1"); child1.AddElement("child2"); path = "/child1"; Assert.AreEqual(root.ElementList.Count, 1); Assert.AreEqual(child1, XmlHelper.EnsureElement(root, path)); path = "/child3"; Assert.IsNotNull(XmlHelper.EnsureElement(root, path)); Assert.AreEqual(root.ElementList.Count, 2); path = "/child3/../child4"; Assert.IsNotNull(XmlHelper.EnsureElement(root, path)); Assert.AreEqual(root.ElementList.Count, 3); e = null; try { XmlHelper.EnsureElement(null, path); } catch (Exception ex) { e = ex; } Assert.IsNotNull(e); Assert.IsInstanceOf(typeof(ArgumentException), e); e = null; try { XmlHelper.EnsureElement(root, "../child1"); } catch (Exception ex) { e = ex; } Assert.IsNotNull(e); Assert.IsInstanceOf(typeof(ArgumentException), e); //AddElements root = new SimpleElement(); Assert.AreEqual(root.ElementList.Count, 0); IList elements = new ArrayList(); elements.Add(new SimpleElement("el1")); elements.Add(new SimpleElement("el2")); elements.Add(new SimpleElement("el3")); XmlHelper.AddElements(root, elements.GetEnumerator()); Assert.AreEqual(root.ElementList.Count, 3); //RemoveElement root = new SimpleElement(); Assert.AreEqual(root.ElementList.Count, 0); int result = XmlHelper.RemoveElement(root, "child"); Assert.AreEqual(result, 0); root.AddElement("child"); root.AddElement("child"); root.AddElement("child2"); Assert.AreEqual(root.ElementList.Count, 3); result = XmlHelper.RemoveElement(root, "child"); Assert.AreEqual(result, 2); Assert.AreEqual(root.ElementList.Count, 1); //ReplaceElement root = new SimpleElement("root"); root.AddElement("child1"); root.AddElement("child2"); Assert.AreEqual(root.ElementList.Count, 2); Assert.IsNull(root.GetElement("child1").Value); IXmlElement replaceEl = new SimpleElement("child1", "value"); bool replaced = XmlHelper.ReplaceElement(root, replaceEl); Assert.IsTrue(replaced); Assert.AreEqual(root.GetElement("child1").GetString(), replaceEl.GetString()); Assert.AreEqual(root.ElementList.Count, 2); replaceEl = new SimpleElement("child3"); replaced = XmlHelper.ReplaceElement(root, replaceEl); Assert.IsFalse(replaced); Assert.AreEqual(root.ElementList.Count, 3); }