summaryrefslogtreecommitdiff
path: root/test/namespaces/reconcile/tests.xml
diff options
context:
space:
mode:
Diffstat (limited to 'test/namespaces/reconcile/tests.xml')
-rw-r--r--test/namespaces/reconcile/tests.xml249
1 files changed, 249 insertions, 0 deletions
diff --git a/test/namespaces/reconcile/tests.xml b/test/namespaces/reconcile/tests.xml
new file mode 100644
index 0000000..c6f8c54
--- /dev/null
+++ b/test/namespaces/reconcile/tests.xml
@@ -0,0 +1,249 @@
+<?xml version="1.0"?>
+<tests>
+ <test name="adopt_recon_default">
+
+ <doc name="doc1"><![CDATA[<p1 xmlns="urn:test:AAA"><a/></p1>]]></doc>
+ <doc name="doc2"><![CDATA[<p1 xmlns="urn:test:BBB"><b/></p1>]]></doc>
+ <doc name="doc3"><![CDATA[<p2 xmlns="urn:test:ZZZ"/>]]></doc>
+ <var name="a">
+ <xpath doc="doc1" select-node="/a:p1/a:a">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="b" >
+ <xpath doc="doc2" select-node="/b:p1/b:b">
+ <reg-ns prefix="b" ns="urn:test:BBB"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc3" select-node="/z:p2">
+ <reg-ns prefix="z" ns="urn:test:ZZZ"/>
+ </xpath>
+ </var>
+
+ <remove node="a"/>
+ <adopt dest-doc="doc3" node="a"/>
+ <append-child parent="p2" child="a"/>
+
+ <!-- This time without a previous removing. -->
+ <adopt dest-doc="doc3" node="b"/>
+ <append-child parent="p2" child="b"/>
+
+ <reconcile-ns node="p2"/>
+ <expected doc="doc3"><![CDATA[<p2 xmlns="urn:test:ZZZ"><a xmlns="urn:test:AAA"/><b xmlns="urn:test:BBB"/></p2>]]></expected>
+ </test>
+
+ <test name="adopt_recon">
+ <doc name="doc1"><![CDATA[<a:p1 xmlns:a="urn:test:AAA"><a:a/></a:p1>]]></doc>
+ <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"/>]]></doc>
+ <var name="a">
+ <xpath doc="doc1" select-node="/a:p1/a:a">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc2" select-node="/a:p2">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="a"/>
+ <append-child parent="p2" child="a"/>
+ <reconcile-ns node="a"/>
+ <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"><a:a/></a:p2>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr">
+ <doc name="doc1"><![CDATA[<p1 xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"/>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@b:attr">
+ <reg-ns prefix="b" ns="urn:test:BBB"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc2" select-node="/a:p2">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="attr" />
+ <append-child parent="p2" child="attr"/>
+ <reconcile-ns node="p2"/>
+ <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA" xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr_2">
+ <!-- Here we will specify a destination-parent for adoption. -->
+ <doc name="doc1"><![CDATA[<p1 xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"/>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@b:attr">
+ <reg-ns prefix="b" ns="urn:test:BBB"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc2" select-node="/a:p2">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" dest-parent="p2" node="attr" />
+ <append-child parent="p2" child="attr"/>
+ <reconcile-ns node="p2"/>
+ <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA" xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr_3">
+ <!-- Conflicting ns-prefixes for the added attribute. -->
+ <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:aaa"/>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@a:attr">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc2" select-node="/a:p2">
+ <reg-ns prefix="a" ns="urn:test:aaa"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="attr" />
+ <append-child parent="p2" child="attr"/>
+ <reconcile-ns node="p2"/>
+ <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:aaa" xmlns:a1="urn:test:AAA" a1:attr="marvin"/>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr_4">
+ <!-- Qualified attribute added to default namespaced elem. -->
+ <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<p2 xmlns="urn:test:AAA"/>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@a:attr">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc2" select-node="/a:p2">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="attr" />
+ <append-child parent="p2" child="attr"/>
+ <reconcile-ns node="p2"/>
+ <expected doc="doc2"><![CDATA[<p2 xmlns="urn:test:AAA" xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr_5">
+ <!-- Shadowed and conflicting prefix. dest-parent IS given. -->
+ <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<p2 xmlns:a="urn:test:AAA"><a:p3 xmlns:a="urn:test:ZZZ"/></p2>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@a:attr">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="p3">
+ <xpath doc="doc2" select-node="/p2/a:p3">
+ <reg-ns prefix="a" ns="urn:test:ZZZ"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="attr" dest-parent="p3"/>
+ <append-child parent="p3" child="attr"/>
+ <!-- Note that we don't need to reconcile here, since done during
+ adoption. -->
+ <expected doc="doc2"><![CDATA[
+<p2 xmlns:a="urn:test:AAA">
+ <a:p3 xmlns:a="urn:test:ZZZ" xmlns:a1="urn:test:AAA" a1:attr="marvin"/>
+</p2>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr_6">
+ <!-- Shadowed and conflicting prefix. dest-parent NOT given. -->
+ <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<p2 xmlns:a="urn:test:AAA"><a:p3 xmlns:a="urn:test:ZZZ"/></p2>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@a:attr">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="p3">
+ <xpath doc="doc2" select-node="/p2/a:p3">
+ <reg-ns prefix="a" ns="urn:test:ZZZ"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="attr"/>
+ <append-child parent="p3" child="attr"/>
+ <reconcile-ns node="p3"/>
+ <expected doc="doc2"><![CDATA[
+<p2 xmlns:a="urn:test:AAA">
+ <a:p3 xmlns:a="urn:test:ZZZ" xmlns:a1="urn:test:AAA" a1:attr="marvin"/>
+</p2>]]></expected>
+ </test>
+
+ <test name="shadow_1">
+
+ <doc name="doc"><![CDATA[
+<foo xmlns:foo="urn:test:mine">
+ <p xmlns:bar="urn:test:mine"/>
+ <a1>
+ <a2 xmlns:bar="urn:test:OTHER">
+ <foo:a3/>
+ </a2>
+ </a1>
+</foo>
+]]></doc>
+ <var name="a1">
+ <xpath doc="doc" select-node="/foo/a1"/>
+ </var>
+ <var name="p" >
+ <xpath doc="doc" select-node="/foo/p"/>
+ </var>
+ <remove node="a1"/>
+ <append-child parent="p" child="a1"/>
+ <reconcile-ns node="a1"/>
+ <expected doc="doc"><![CDATA[
+<foo xmlns:foo="urn:test:mine">
+ <p xmlns:bar="urn:test:mine">
+ <a1>
+ <a2 xmlns:bar="urn:test:OTHER">
+ <foo:a3/>
+ </a2>
+ </a1>
+ </p>
+</foo>
+]]></expected>
+ </test>
+
+ <test name="norm_1">
+
+ <doc name="doc"><![CDATA[
+<foo>
+ <p1 xmlns:a="urn:test:A" xmlns:b="urn:test:B" xmlns:c="urn:test:C">
+ <a:a>
+ <b:b a:attr="dont" c:attr="panic"/>
+ </a:a>
+ </p1>
+ <p2/>
+</foo>
+]]></doc>
+ <var name="a">
+ <xpath doc="doc" select-node="/foo/p1/a:a">
+ <reg-ns prefix="a" ns="urn:test:A"/>
+ </xpath>
+ </var>
+ <var name="p2" >
+ <xpath doc="doc" select-node="/foo/p2"/>
+ </var>
+ <remove node="a"/>
+ <append-child parent="p2" child="a"/>
+ <reconcile-ns node="a"/>
+ <expected doc="doc"><![CDATA[
+<foo>
+ <p1 xmlns:a="urn:test:A" xmlns:b="urn:test:B" xmlns:c="urn:test:C"/>
+ <p2>
+ <a:a xmlns:a="urn:test:A">
+ <b:b xmlns:b="urn:test:B" xmlns:c="urn:test:C" a:attr="dont" c:attr="panic"/>
+ </a:a>
+ </p2>
+</foo>
+]]></expected>
+ </test>
+</tests>