You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ja...@apache.org on 2002/03/28 08:49:36 UTC
cvs commit: xml-xerces/perl/t DOM_NodeIterator.t DOM_TreeWalker.t
jasons 02/03/27 23:49:36
Added: perl/t DOM_NodeIterator.t DOM_TreeWalker.t
Log:
* t/DOM_TreeWalker.t (Repository):
* t/DOM_NodeIterator.t (Repository):
new test for test node filters
Revision Changes Path
1.1 xml-xerces/perl/t/DOM_NodeIterator.t
Index: DOM_NodeIterator.t
===================================================================
# Before `make install' is performed this script should be runnable
# with `make test'. After `make install' it should work as `perl
# DOM_NodeIterator.t'
######################### We start with some black magic to print on failure.
# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)
BEGIN { $| = 1; print "1..4\n"; }
END {print "not ok 1\n" unless $loaded;}
use Carp;
use blib;
use XML::Xerces;
use Config;
use lib 't';
use TestUtils qw(result is_object);
use vars qw($i $loaded);
use strict;
$loaded = 1;
$i = 1;
result($loaded);
package MyNodeFilter;
use strict;
use vars qw(@ISA);
@ISA = qw(XML::Xerces::PerlNodeFilter);
sub acceptNode {
my ($self,$node) = @_;
return $XML::Xerces::DOM_NodeFilter::FILTER_ACCEPT;
}
package main;
######################### End of black magic.
# Insert your test code below (better if it prints "ok 13"
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):
# Create a couple of identical test documents
my $document = q[<?xml version="1.0" encoding="utf-8"?>
<contributors>
<person Role="manager">
<name>Mike Pogue</name>
<email>mpogue@us.ibm.com</email>
</person>
<person Role="developer">
<name>Tom Watson</name>
<email>rtwatson@us.ibm.com</email>
</person>
<person Role="tech writer">
<name>Susan Hardenbrook</name>
<email>susanhar@us.ibm.com</email>
</person>
</contributors>];
my $DOM = new XML::Xerces::DOMParser;
my $ERROR_HANDLER = XML::Xerces::PerlErrorHandler->new();
$DOM->setErrorHandler($ERROR_HANDLER);
$DOM->parse(XML::Xerces::MemBufInputSource->new($document));
my $doc = $DOM->getDocument();
my $root = $doc->getDocumentElement();
my $filter = MyNodeFilter->new();
my $what = $XML::Xerces::DOM_NodeFilter::SHOW_ELEMENT;
my $iterator = $doc->createNodeIterator($root,$what,$filter,1);
result(defined $iterator
and is_object($iterator)
and $iterator->isa('XML::Xerces::DOM_NodeIterator'));
# test that nextNode() returns the first node in the set
result($iterator->nextNode() == $root);
my $success = 1;
my $count = 0;
while (my $node = $iterator->nextNode()) {
$count++;
$success = 0 unless $node->isa('XML::Xerces::DOM_Element');
}
# test that we only got elements
result($success);
#test that we got all the elements
result($count == 9);
1.1 xml-xerces/perl/t/DOM_TreeWalker.t
Index: DOM_TreeWalker.t
===================================================================
# Before `make install' is performed this script should be runnable
# with `make test'. After `make install' it should work as `perl
# DOM_Node.t'
######################### We start with some black magic to print on failure.
# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)
BEGIN { $| = 1; print "1..4\n"; }
END {print "not ok 1\n" unless $loaded;}
use Carp;
# use blib;
use XML::Xerces;
use Config;
use lib 't';
use TestUtils qw(result is_object);
use vars qw($i $loaded);
use strict;
$loaded = 1;
$i = 1;
result($loaded);
package MyNodeFilter;
use strict;
use vars qw(@ISA);
@ISA = qw(XML::Xerces::PerlNodeFilter);
sub acceptNode {
my ($self,$node) = @_;
return $XML::Xerces::DOM_NodeFilter::FILTER_ACCEPT;
}
package main;
######################### End of black magic.
# Insert your test code below (better if it prints "ok 13"
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):
# Create a couple of identical test documents
my $document = q[<?xml version="1.0" encoding="utf-8"?>
<contributors>
<person Role="manager">
<name>Mike Pogue</name>
<email>mpogue@us.ibm.com</email>
</person>
<person Role="developer">
<name>Tom Watson</name>
<email>rtwatson@us.ibm.com</email>
</person>
<person Role="tech writer">
<name>Susan Hardenbrook</name>
<email>susanhar@us.ibm.com</email>
</person>
</contributors>];
my $DOM = new XML::Xerces::DOMParser;
my $ERROR_HANDLER = XML::Xerces::PerlErrorHandler->new();
$DOM->setErrorHandler($ERROR_HANDLER);
$DOM->parse(XML::Xerces::MemBufInputSource->new($document));
my $doc = $DOM->getDocument();
my $root = $doc->getDocumentElement();
my $filter = MyNodeFilter->new();
my $what = $XML::Xerces::DOM_NodeFilter::SHOW_ELEMENT;
my $walker = $doc->createTreeWalker($root,$what,$filter,1);
result(defined $walker
and is_object($walker)
and $walker->isa('XML::Xerces::DOM_TreeWalker'));
# test parentNode
$walker->nextNode();
result($walker->parentNode() == $root);
my $success = 1;
my $count = 0;
while (my $node = $walker->nextNode()) {
$count++;
$success = 0 unless $node->isa('XML::Xerces::DOM_Element');
}
# test that we only got elements
result($success);
#test that we got all the elements
result($count == 9);
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org