summaryrefslogtreecommitdiff
path: root/t/21allnodes.t
diff options
context:
space:
mode:
Diffstat (limited to 't/21allnodes.t')
-rw-r--r--t/21allnodes.t60
1 files changed, 60 insertions, 0 deletions
diff --git a/t/21allnodes.t b/t/21allnodes.t
new file mode 100644
index 0000000..1010538
--- /dev/null
+++ b/t/21allnodes.t
@@ -0,0 +1,60 @@
+use Test;
+BEGIN { plan tests => 11 }
+
+use XML::XPath;
+ok(1);
+
+my $xp = XML::XPath->new(ioref => *DATA);
+ok($xp);
+
+my @nodes;
+@nodes = $xp->findnodes('//GGG/ancestor::*');
+ok(@nodes, 4);
+
+@nodes = $xp->findnodes('//GGG/descendant::*');
+ok(@nodes, 3);
+
+@nodes = $xp->findnodes('//GGG/following::*');
+ok(@nodes, 3);
+ok($nodes[0]->getName, "VVV");
+
+@nodes = $xp->findnodes('//GGG/preceding::*');
+ok(@nodes, 5);
+ok($nodes[0]->getName, "BBB"); # document order, not HHH
+
+@nodes = $xp->findnodes('//GGG/self::*');
+ok(@nodes, 1);
+ok($nodes[0]->getName, "GGG");
+
+@nodes = $xp->findnodes('//GGG/ancestor::* |
+ //GGG/descendant::* |
+ //GGG/following::* |
+ //GGG/preceding::* |
+ //GGG/self::*');
+ok(@nodes, 16);
+
+__DATA__
+<AAA>
+ <BBB>
+ <CCC/>
+ <ZZZ/>
+ </BBB>
+ <XXX>
+ <DDD>
+ <EEE/>
+ <FFF>
+ <HHH/>
+ <GGG> <!-- Watch this node -->
+ <JJJ>
+ <QQQ/>
+ </JJJ>
+ <JJJ/>
+ </GGG>
+ <VVV/>
+ </FFF>
+ </DDD>
+ </XXX>
+ <CCC>
+ <DDD/>
+ </CCC>
+</AAA>