Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/api-doc-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Martinez <joelmartinez@gmail.com>2020-03-20 23:11:48 +0300
committerJoel Martinez <joelmartinez@gmail.com>2020-03-20 23:18:36 +0300
commitabe9fb8da5c28b9c10c24efb44580d7523b24047 (patch)
tree396a1e9023665814a495bb3c0696a46aa2fe6e15 /mdoc/mdoc.Test/XmlUpdateTests.cs
parent0f19c449559fb0c1a40c358ba59afbc59db67997 (diff)
Added DocUtils.AddElementWithFx method
Diffstat (limited to 'mdoc/mdoc.Test/XmlUpdateTests.cs')
-rw-r--r--mdoc/mdoc.Test/XmlUpdateTests.cs121
1 files changed, 121 insertions, 0 deletions
diff --git a/mdoc/mdoc.Test/XmlUpdateTests.cs b/mdoc/mdoc.Test/XmlUpdateTests.cs
index a7746c47..1781f8a6 100644
--- a/mdoc/mdoc.Test/XmlUpdateTests.cs
+++ b/mdoc/mdoc.Test/XmlUpdateTests.cs
@@ -683,6 +683,127 @@ namespace mdoc.Test
Assert.IsTrue (attributes[0].HasAttribute (Consts.FrameworkAlternate));
}
+
+ [Test]
+ public void FxElementTest()
+ {
+ XmlDocument doc = new XmlDocument();
+ doc.LoadXml(@"<Parent><X>old value</X></Parent>");
+ var context = InitContext<MyClass>(string.Format(typeFrameXml, multiFrameworkXml), 0, forceAlignment: false);
+
+ var fx = context.fx.Frameworks[0];
+ FrameworkTypeEntry typeEntry = fx.Types.First();
+
+ XmlElement parentx = doc.DocumentElement;
+
+
+ DocUtils.AddElementWithFx(
+ typeEntry,
+ parentx,
+ clear: parent =>
+ {
+ parent.RemoveAll();
+ },
+ findExisting: parent =>
+ {
+ return parent.SelectSingleNode("X") as XmlElement;
+ },
+ addItem: parent =>
+ {
+ var item = parent.OwnerDocument.CreateElement("X");
+ item.InnerText = "value";
+ parent.AppendChild(item);
+ return item;
+ });
+
+ Assert.AreEqual(1, parentx.ChildNodes.Count);
+ Assert.AreEqual("value", parentx.ChildNodes[0].InnerText);
+ Assert.AreEqual("One", parentx.ChildNodes[0].Attributes[0].Value);
+ }
+ [Test]
+ public void FxElementTest_Two()
+ {
+ XmlDocument doc = new XmlDocument();
+ doc.LoadXml(@"<Parent><X>old value</X></Parent>");
+ var context = InitContext<MyClass>(string.Format(typeFrameXml, multiFrameworkXml), 0, forceAlignment: false);
+
+ var fx = context.fx.Frameworks[1];
+ FrameworkTypeEntry typeEntry = fx.Types.First();
+
+ XmlElement parentx = doc.DocumentElement;
+
+ System.Func<FrameworkTypeEntry, string, bool> runfx = (te, value) =>
+ {
+ DocUtils.AddElementWithFx(
+ te,
+ parentx,
+ clear: parent =>
+ {
+ parent.RemoveAll();
+ },
+ findExisting: parent =>
+ {
+ return parent.ChildNodes.Cast<XmlElement>().SingleOrDefault(e => e.Name == "X" && e.Value == value);
+ },
+ addItem: parent =>
+ {
+ var item = parent.OwnerDocument.CreateElement("X");
+ item.InnerText = value;
+ parent.AppendChild(item);
+ return item;
+ });
+ return true;
+ };
+
+ runfx(context.fx.Frameworks[0].Types.First(), "one");
+ runfx(context.fx.Frameworks[1].Types.First(), "two");
+
+ Assert.AreEqual(parentx.ChildNodes.Count, 2);
+ Assert.IsTrue(parentx.ChildNodes.Cast<XmlElement>().Any(e => e.HasAttribute(Consts.FrameworkAlternate)), "fx check");
+ }
+
+ [Test]
+ public void FxElementTest_Three()
+ {
+ XmlDocument doc = new XmlDocument();
+ doc.LoadXml(@"<Parent><X>old value</X></Parent>");
+ var context = InitContext<MyClass>(string.Format(typeFrameXml, multiFrameworkXml), 2, forceAlignment: false);
+
+ var fx = context.fx.Frameworks[1];
+ FrameworkTypeEntry typeEntry = fx.Types.First();
+
+ XmlElement parentx = doc.DocumentElement;
+
+ System.Func<FrameworkTypeEntry, bool> runfx = (te) =>
+ {
+ DocUtils.AddElementWithFx(
+ te,
+ parentx,
+ clear: parent =>
+ {
+ parent.RemoveAll();
+ },
+ findExisting: parent =>
+ {
+ return parent.SelectSingleNode("X") as XmlElement;
+ },
+ addItem: parent =>
+ {
+ var item = parent.OwnerDocument.CreateElement("X");
+ item.InnerText = "value";
+ parent.AppendChild(item);
+ return item;
+ });
+ return true;
+ };
+
+ runfx(context.fx.Frameworks[0].Types.First());
+ runfx(context.fx.Frameworks[1].Types.First());
+ runfx(context.fx.Frameworks[2].Types.First());
+
+ Assert.AreEqual(parentx.ChildNodes.Count, 1);
+ }
+
string Normalize(string xml, bool clearFx = false) {
XmlDocument doc = new XmlDocument ();