r43635 - in /branches/upstream/libxml-libxml-iterator-perl: ./ current/ current/lib/ current/lib/XML/ current/lib/XML/LibXML/ current/lib/XML/LibXML/NodeList/ current/t/

dmn at users.alioth.debian.org dmn at users.alioth.debian.org
Fri Sep 4 10:38:39 UTC 2009


Author: dmn
Date: Fri Sep  4 10:37:15 2009
New Revision: 43635

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=43635
Log:
[svn-inject] Installing original source of libxml-libxml-iterator-perl

Added:
    branches/upstream/libxml-libxml-iterator-perl/
    branches/upstream/libxml-libxml-iterator-perl/current/
    branches/upstream/libxml-libxml-iterator-perl/current/Changes
    branches/upstream/libxml-libxml-iterator-perl/current/MANIFEST
    branches/upstream/libxml-libxml-iterator-perl/current/Makefile.PL
    branches/upstream/libxml-libxml-iterator-perl/current/README
    branches/upstream/libxml-libxml-iterator-perl/current/lib/
    branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/
    branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/
    branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/Iterator.pm
    branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/NodeList/
    branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/NodeList/Iterator.pm
    branches/upstream/libxml-libxml-iterator-perl/current/t/
    branches/upstream/libxml-libxml-iterator-perl/current/t/01basic.t
    branches/upstream/libxml-libxml-iterator-perl/current/test.pl

Added: branches/upstream/libxml-libxml-iterator-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libxml-libxml-iterator-perl/current/Changes?rev=43635&op=file
==============================================================================
--- branches/upstream/libxml-libxml-iterator-perl/current/Changes (added)
+++ branches/upstream/libxml-libxml-iterator-perl/current/Changes Fri Sep  4 10:37:15 2009
@@ -1,0 +1,4 @@
+Revision history for Perl extension XML::LibXML::Iterator.
+
+1.00  Fri Nov  8 2002
+    - extracted the modules from the main XML::LibXML bundle.

Added: branches/upstream/libxml-libxml-iterator-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libxml-libxml-iterator-perl/current/MANIFEST?rev=43635&op=file
==============================================================================
--- branches/upstream/libxml-libxml-iterator-perl/current/MANIFEST (added)
+++ branches/upstream/libxml-libxml-iterator-perl/current/MANIFEST Fri Sep  4 10:37:15 2009
@@ -1,0 +1,8 @@
+Changes
+lib/XML/LibXML/Iterator.pm
+lib/XML/LibXML/NodeList/Iterator.pm
+Makefile.PL
+MANIFEST
+README
+t/01basic.t
+test.pl

Added: branches/upstream/libxml-libxml-iterator-perl/current/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libxml-libxml-iterator-perl/current/Makefile.PL?rev=43635&op=file
==============================================================================
--- branches/upstream/libxml-libxml-iterator-perl/current/Makefile.PL (added)
+++ branches/upstream/libxml-libxml-iterator-perl/current/Makefile.PL Fri Sep  4 10:37:15 2009
@@ -1,0 +1,11 @@
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+    'NAME'		=> 'XML::LibXML::Iterator',
+    'VERSION_FROM'	=> 'lib/XML/LibXML/Iterator.pm',
+    'PREREQ_PM'		=> {
+                        XML::LibXML    => 1.52,
+                        XML::NodeFilter => 0 
+                       },
+);

Added: branches/upstream/libxml-libxml-iterator-perl/current/README
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libxml-libxml-iterator-perl/current/README?rev=43635&op=file
==============================================================================
--- branches/upstream/libxml-libxml-iterator-perl/current/README (added)
+++ branches/upstream/libxml-libxml-iterator-perl/current/README Fri Sep  4 10:37:15 2009
@@ -1,0 +1,30 @@
+XML::LibXML::Iterator version 1.00
+==================================
+
+XML::LibXML::Iterator implements the iterator part of the DOM
+Traversal and Range specification. This class allows to iterate 
+through a DOM as it is done through an ordinary array.
+
+INSTALLATION
+
+To install this module type the following:
+
+   perl Makefile.PL
+   make
+   make test
+   make install
+
+DEPENDENCIES
+
+This module requires these other modules and libraries:
+
+XML::LibXML     1.52 or later.
+XML::NodeFilter 0.01 or later.
+
+COPYRIGHT AND LICENCE
+
+Copyright (C) 2002 Christian Glahn. All rights reserved.
+
+This package is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+

Added: branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/Iterator.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/Iterator.pm?rev=43635&op=file
==============================================================================
--- branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/Iterator.pm (added)
+++ branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/Iterator.pm Fri Sep  4 10:37:15 2009
@@ -1,0 +1,455 @@
+# $Id: Iterator.pm,v 1.1.1.1 2002/11/08 17:18:36 phish Exp $
+#
+package XML::LibXML::Iterator;
+
+use strict;
+
+use XML::NodeFilter qw(:results);
+
+use vars qw($VERSION);
+
+$VERSION = '1.00';
+
+use overload
+  '++' => sub { $_[0]->next; $_[0]; },
+  '--' => sub { $_[0]->previous; $_[0]; },
+  '<>' => sub {
+      if ( wantarray ) {
+          my @rv = ();
+          while ( $_[0]->next ){
+              push @rv;
+          }
+          return @rv;
+      } else {
+          return $_[0]->next
+      };
+  },
+;
+
+
+sub new {
+    my $class = shift;
+    my $node  = shift;
+
+    return undef unless defined $node;
+
+    my $self = bless {}, $class;
+
+    $self->{FIRST} = $node;
+    $self->first;
+    $self->{ITERATOR} = \&default_iterator;
+
+    $self->{FILTERS} = [];
+
+    return $self;
+}
+
+
+sub iterator_function {
+    my $self = shift;
+    my $func = shift;
+
+    return if defined $func and ref( $func ) ne "CODE";
+
+    $self->first;
+    if ( defined $func ) {
+        $self->{ITERATOR} = $func;
+    }
+    else {
+        $self->{ITERATOR} = \&default_iterator;
+    }
+}
+
+sub set_filter {
+    my $self = shift;
+    $self->{FILTERS} = [ @_ ];
+}
+
+sub add_filter {
+    my $self = shift;
+    push @{$self->{FILTERS}}, @_;
+}
+
+sub current  { return $_[0]->{CURRENT}; }
+sub index    { return $_[0]->{INDEX}; }
+
+sub next     {
+    my $self = shift;
+    my @filters = @{$self->{FILTERS}};
+    my $node = undef;
+    my $fv = FILTER_SKIP;
+    unless ( scalar @filters > 0 ) {
+        $fv = FILTER_DECLINED;
+    }
+    while ( 1 ) {
+        $node = $self->{ITERATOR}->( $self, 1 );
+        last unless defined $node;
+        foreach my $f ( @filters ) {
+            $fv = $f->accept_node( $node );
+            last if $fv;
+        }
+        last if $fv == FILTER_ACCEPT or $fv == FILTER_DECLINED;
+    }
+
+    if ( defined $node ) {
+        $self->{CURRENT} = $node;
+        $self->{INDEX}++;
+    }
+
+    return $node;
+}
+
+sub previous {
+    my $self = shift;
+    my @filters = @{$self->{FILTERS}};
+    my $node = undef;
+    my $fv = FILTER_SKIP;
+    unless ( scalar @filters > 0 ) {
+        $fv = FILTER_DECLINED;
+    }
+    while ( 1 ) {
+        $node = $self->{ITERATOR}->( $self, -1 );
+        last unless defined $node;
+        foreach my $f ( @filters ) {
+            $fv = $f->accept_node( $node );
+            last if $fv;
+        }
+        last if $fv == FILTER_ACCEPT or $fv == FILTER_DECLINED;
+    }
+
+    if ( defined $node ) {
+        $self->{CURRENT} = $node;
+        $self->{INDEX}--;
+    }
+
+    return $node;
+}
+
+sub first {
+    my $self = shift;
+    if ( scalar @_ ) {
+        $self->{FIRST} = shift;
+    }
+
+    $self->{CURRENT} = $self->{FIRST};
+
+    # this logic is required if the node is not allowed to be shown
+    my @filters = @{$self->{FILTERS}||[]};
+    my $fv = FILTER_DECLINED;
+
+    foreach my $f ( @filters ) {
+        $fv = $f->accept_node( $self->{CURRENT} );
+        last if $fv;
+    }
+
+    $fv ||= FILTER_ACCEPT;
+
+    unless ( $fv == FILTER_ACCEPT ) {
+        return undef;
+    }
+
+    $self->{INDEX}   = 0;
+    return $self->current;
+}
+
+sub last  {
+    my $self = shift;
+    while ($self->next) {}
+    return $self->current;
+}
+
+sub iterate {
+    my $self = shift;
+    my $function = shift;
+    return unless defined $function and ref( $function ) eq 'CODE' ;
+    my $rv;
+    my $node = $self->first;
+    while ( $node ) {
+        $rv = $function->($self,$node);
+        $node = $self->next;
+    }
+    return $rv;
+}
+
+sub default_iterator {
+    my $self = shift;
+    my $dir  = shift;
+    my $node = undef;
+
+
+    if ( $dir < 0 ) {
+        return undef if $self->{CURRENT}->isSameNode( $self->{FIRST} )
+          and $self->{INDEX} <= 0;
+
+        $node = $self->{CURRENT}->previousSibling;
+        return $self->{CURRENT}->parentNode unless defined $node;
+
+        while ( $node->hasChildNodes ) {
+            $node = $node->lastChild;
+        }
+    }
+    else {
+        return undef if $self->{CURRENT}->isSameNode( $self->{FIRST} )
+          and $self->{INDEX} > 0;
+
+        if ( $self->{CURRENT}->hasChildNodes ) {
+            $node = $self->{CURRENT}->firstChild;
+        }
+        else {
+            $node = $self->{CURRENT}->nextSibling;
+            my $pnode = $self->{CURRENT}->parentNode;
+            while ( not defined $node ) {
+                last unless defined $pnode;
+                $node = $pnode->nextSibling;
+                $pnode = $pnode->parentNode unless defined $node;
+            }
+        }
+    }
+
+    return $node;
+}
+
+1;
+__END__
+
+=pod
+
+
+=head1 NAME
+
+XML::LibXML::Iterator - XML::LibXML's Tree Iteration Class
+
+=head1 SYNOPSIS
+
+  use XML::LibXML;
+  use XML::LibXML::Iterator;
+
+  my $doc = XML::LibXML->new->parse_string( $somedata );
+  my $iter= XML::LibXML::Iterator->new( $doc );
+
+  $iter->iterator_function( \&iterate );
+
+  # more control on the flow
+  while ( $iter->next ) {
+      # do something
+  }
+
+  # operate on the entire tree
+  $iter->iterate( \&operate );
+
+=head1 DESCRIPTION
+
+XML::LibXML::Iterator is an iterator class for XML::LibXML parsed
+documents. This class allows to iterate the document tree as it were a
+linear data structure. It is possible to step back and forth between
+the nodes of the tree and do certain operations on that
+nodes. Different to XPath the nodes are not prefetched but will be
+calculated for each step. Therefore an iterator is sensible towards
+the current state of a document tree on each step, while XPath is only
+per query executed.
+
+=head2 What is an iterator?
+
+XML::LibXML offers by default a W3C DOM interface on the parsed XML
+documents. This tree has per definition four directions to be
+traversed: Up, down, foreward and backward. Therefore a tree can be
+considered two dimensional. Although a tree is still one more simple
+datastructure it is way to complex for some operations. So the
+XML::LibXML::Iterator class breaks the for operations down to only
+two: backward and forward. For some people this easier to understand
+than DOM or SAX as this follows more the way one actually reads an XML
+document.
+
+Therefore an iterator has three basic functions:
+
+=over 4
+
+=item * next()
+
+=item * current()
+
+=item * previous()
+
+=back
+
+That's it. With an iterator one does not have to decide when to dive
+into a subtree or find a parent. It is not even required to care about
+the boundaries of a certain level. The iterator will get the next node
+for you until there is no node left to handle.
+
+In short: An iterator will answer the question about what to do next.
+
+=head2 How to use XML::LibXML::Iterator?
+
+XML::LibXML::Iterator requires a parsed document or at least a node to
+operate on. This node is passed to the iterator class and will be used
+as the B<first> node of the iteration. One can allways reset the
+iterator to the first node by using the first()-function.
+
+Once XML::LibXML::Iterator is initialized the tree can be traversed by
+using either next() or previous(). Both function will return a
+XML::LibXML::Node object if there is such object available.
+
+Since the current object hold by the iterator class is always
+available via the current() function.
+
+The following example may clearify this:
+
+  # get the document from wherever you like
+  my $doc = XML::LibXML->new->parse_stream( *SOMEINPUT );
+
+  # get the iterator for the document root.
+  my $iter = XML::LibXML::Iterator->new( $doc->documentElement );
+
+  # walk through the document
+  while ( $iter->next() ) {
+     my $curnode = $iter->current();
+     print $curnode->nodeType();
+  }
+
+  # now get back to the beginning
+  $iter->first();
+  my $curnode = $iter->current();
+  print $curnode->nodeType();
+
+Actually the functions next(), previous(), first(), last() and
+current() do return the node which is current after the
+operation. E.g. next() moves to the next node if possible and then
+returns the node. Thus the while-loop in the example can be written
+as
+
+  while ( $iter->next() ) {
+     print $_->nodeType();
+  }
+
+Note, that just relieing on the return value of next() and previous()
+is somewhat dangerous, because both functions return B<undef> in case
+of reaching the iteration boundaries. That means it is not possible
+to iterate past the last element or before the first one.
+
+=head2 Node Filters
+
+XML::LibXML::Iterator accepts XML::NodeFilters to limit the nodes made
+available to the caller. Any nodefilter applied to
+XML::LibXML::Iterator will test if a node returned by the iteration
+function is visible to the caller.
+
+Different to the DOM Traversal Specification, XML::LibXML::Iterator
+allows filter stacks. This means it is possible to apply more than a
+single node filter to your node iterator.
+
+=head2 Complex Iterations
+
+By default XML::LibXML::Iterator will access all nodes of a given DOM
+tree. An interation based on the default iterator will access each
+single node in the given subtree once. The order how the nodes will be
+accessed is given by the following order:
+
+  node -> node's childnodes -> node's next sibling
+
+In combination with XML::Nodefilter this is best for a wide range of
+scripts and applications. Nevertheless this is still to restrictive
+for some applications. XML::LibXML::Iterator allows to change that
+behaviour. This is done by resetting XML::LibXML::Iterator's iterator
+function. By using the method iterator_function() to override the
+default iterator function, it is possible to implement iterations
+based on any iteration rule imaginable.
+
+A valid iterator function has to take two parameters: As the first
+parameter it will recieve the iterator object itself, as second the
+direction of the iteration will be passed. The direction is either 1
+(for next()) or -1 (for previous()). As the iterator-function is
+called by next() and previous() the interator-function has to be aware
+about the iteration boundaries. In case the iteration would pass the
+boundary for that operation, the function has to return
+undefined. Also the iterator function has to return the new current node,
+instead of setting it itself.
+
+*DEVELOPER NOTE* In order a single stepping is rather limited, the
+direction is given by the sign of the passed integer value. The value
+of the passed parameter will be used as an indication how many steps
+should be done.  Therefor the interation direction should be tested
+relative to '0' and not as a equation. A basic template for a iterator
+function therefore will look like this:
+
+   sub iterator_func_templ {
+      my $iter = shift;
+      my $step = shift;
+      my $node = undef;
+      my $current = $iter->current();
+
+      if ( $step > 0 ) {
+          # move forward
+      }
+      else {
+          # move backward
+          $step *= -1; # remove the sign
+      }
+
+      return $node;
+   }
+
+=head2 Repeated Operation
+
+Another feature of XML::LibXML::Iterator is the ability to repeat a
+single operation on all nodes in scope. Instead of writing a loop one
+can specify the opeation as a function, that it applied on each node
+found. The function that does the trick, is named iterate().
+
+iterate() takes again two parameter: First the iterator object, second
+the node to operate on. iterate() will iterate through the entire
+document starting with the first node. If one has already started an
+iteration, the internal position will be reset to the first node.
+
+The following example will show how this works:
+
+  $iter->iterate( sub {shift; map {$_->setNodeName( lc $_->nodeName ) if $_->nodeType != NAMESPACE_DECLARATION } ($_[0], $_[0]->attributes);  } );
+
+This extra long line lowercases all tagnames and the names of the
+attributes in a given subtree.
+
+=head2 Functions
+
+=over 4
+
+=item new($first_node)
+
+=item first()
+
+=item next()
+
+=item previous()
+
+=item last()
+
+=item current()
+
+=item index()
+
+=item iterator_function($funcion_ref)
+
+=item set_filter(@filter_list)
+
+=item add_filter(@filter_list)
+
+=item iterate($function_ref)
+
+=back
+
+=head1 SEE ALSO
+
+L<XML::LibXML::Node>, L<XML::NodeFilter>
+
+=head1 AUTHOR
+
+Christian Glahn, E<lt>christian.glahn at uibk.ac.atE<gt>
+
+=head1 COPYRIGHT
+
+(c) 2002, Christian Glahn. All rights reserved.
+
+This package is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+

Added: branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/NodeList/Iterator.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/NodeList/Iterator.pm?rev=43635&op=file
==============================================================================
--- branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/NodeList/Iterator.pm (added)
+++ branches/upstream/libxml-libxml-iterator-perl/current/lib/XML/LibXML/NodeList/Iterator.pm Fri Sep  4 10:37:15 2009
@@ -1,0 +1,183 @@
+# $Id: Iterator.pm,v 1.1.1.1 2002/11/08 17:18:36 phish Exp $
+#
+package XML::LibXML::NodeList::Iterator;
+
+use strict;
+use XML::NodeFilter qw(:results);
+
+use vars qw($VERSION);
+$VERSION = "1.00";
+
+use overload
+  '++' => sub { $_[0]->next;     $_[0]; },
+  '--' => sub { $_[0]->previous; $_[0] },
+  '<>'  =>  sub {
+      if ( wantarray ) {
+          my @rv = ();
+          while ( $_[0]->next ){ push @rv,$_;}
+          return @rv;
+      } else {
+          return $_[0]->next
+      };
+  },
+;
+
+sub new {
+    my $class = shift;
+    my $list  = shift;
+    my $self  = undef;
+    if ( defined $list ) {
+        $self = bless [
+                       $list,
+                       0,
+                       [],
+                      ], $class;
+    }
+
+    return $self;
+}
+
+sub set_filter {
+    my $self = shift;
+    $self->[2] = [ @_ ];
+}
+
+sub add_filter {
+    my $self = shift;
+    push @{$self->[2]}, @_;
+}
+
+# helper function.
+sub accept_node {
+    foreach ( @{$_[0][2]} ) {
+        my $r = $_->accept_node($_[1]);
+        return $r if $r;
+    }
+    # no filters or all decline ...
+    return FILTER_ACCEPT;
+}
+
+sub first    { $_[0][1]=0;
+               my $s = scalar(@{$_[0][0]});
+               while ( $_[0][1] < $s ) {
+                   last if $_[0]->accept_node($_[0][0][$_[0][1]]) == FILTER_ACCEPT;
+                   $_[0][1]++;
+               }
+               return undef if $_[0][1] == $s;
+               return $_[0][0][$_[0][1]]; }
+
+sub last     {
+    my $i = scalar(@{$_[0][0]})-1;
+    while($i >= 0){
+        if ( $_[0]->accept_node($_[0][0][$i] == FILTER_ACCEPT) ) {
+            $_[0][1] = $i;
+            last;
+        }
+        $i--;
+    }
+
+    if ( $i < 0 ) {
+        # this costs a lot, but is more safe
+        return $_[0]->first;
+    }
+    return $_[0][0][$i];
+}
+
+sub current  { return $_[0][0][$_[0][1]]; }
+sub index    { return $_[0][1]; }
+
+sub next     {
+    if ( (scalar @{$_[0][0]}) <= ($_[0][1] + 1)) {
+        return undef;
+    }
+    my $i = $_[0][1];
+    while ( 1 ) {
+        $i++;
+        return undef if $i >= scalar @{$_[0][0]};
+        if ( $_[0]->accept_node( $_[0][0]->[$i] ) == FILTER_ACCEPT ) {
+            $_[0][1] = $i;
+            last;
+        }
+    }
+    return $_[0][0]->[$_[0][1]];
+}
+
+sub previous {
+    if ( $_[0][1] <= 0 ) {
+        return undef;
+    }
+    my $i = $_[0][1];
+    while ( 1 ) {
+        $i--;
+        return undef if $i < 0;
+        if ( $_[0]->accept_node( $_[0][0]->[$i] ) == FILTER_ACCEPT ) {
+            $_[0][1] = $i;
+            last;
+        }
+    }
+    return $_[0][0][$_[0][1]];
+}
+
+sub iterate  {
+    my $self = shift;
+    my $funcref = shift;
+    return unless defined $funcref && ref( $funcref ) eq 'CODE';
+    $self->[1] = -1;
+    my $rv;
+    while ( $self->next ) {
+        $rv = $funcref->( $self, $_ );
+    }
+    return $rv;
+}
+
+1;
+
+=pod
+
+=head1 NAME
+
+XML::LibXML::NodeList::Iterator - Iteration Class for XML::LibXML XPath results
+
+=head1 SYNOPSIS
+
+  use XML::LibXML;
+  use XML::LibXML::NodeList::Iterator;
+
+  my $doc = XML::LibXML->new->parse_string( $somedata );
+  my $nodelist = $doc->findnodes( $somexpathquery );
+
+  my $iter= XML::LibXML::NodeList::Iterator->new( $nodelist );
+
+  # more control on the flow
+  while ( $iter->next ) {
+      # do something
+  }
+
+  # operate on the entire tree
+  $iter->iterate( \&operate );
+
+=head1 DESCRIPTION
+
+XML::LibXML::NodeList::Iterator is very similar to
+XML::LibXML::Iterator, but it does not iterate on the tree structure
+but on a XML::LibXML::NodeList object. Because XML::LibXML::NodeList
+is basicly an array the functionality of
+XML::LibXML::NodeList::Iterator is more restircted to stepwise
+foreward and backward than XML::LibXML::Iterator is.
+
+=head1 SEE ALSO
+
+L<XML::LibXML::NodeList>, L<XML::NodeFilter>, L<XML::LibXML::Iterator>
+
+=head1 AUTHOR
+
+Christian Glahn, E<lt>christian.glahn at uibk.ac.atE<gt>
+
+=head1 COPYRIGHT
+
+(c) 2002, Christian Glahn. All rights reserved.
+
+This package is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut

Added: branches/upstream/libxml-libxml-iterator-perl/current/t/01basic.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libxml-libxml-iterator-perl/current/t/01basic.t?rev=43635&op=file
==============================================================================
--- branches/upstream/libxml-libxml-iterator-perl/current/t/01basic.t (added)
+++ branches/upstream/libxml-libxml-iterator-perl/current/t/01basic.t Fri Sep  4 10:37:15 2009
@@ -1,0 +1,49 @@
+use Test;
+
+BEGIN { plan tests => 32; }
+
+use XML::LibXML;
+use XML::LibXML::Iterator;
+use XML::LibXML::NodeList::Iterator;
+
+my $doc = XML::LibXML->new->parse_string( <<EOF );
+<test>
+    text
+    <foo/>
+    <foo/>
+    text
+    <bar><kungfoo/></bar>
+</test>
+EOF
+
+
+print "# TREE ITERATION\n";
+my $iter = XML::LibXML::Iterator->new( $doc->documentElement );
+
+do {
+    ok(1); # warn $iter->current->nodeName;
+}while ( $iter->next );
+
+do {
+    ok(1); # warn $iter->current->nodeName;
+}while ( $iter->previous );
+
+
+$iter->iterate( sub { ok(1) } );
+
+$iter->first;
+ok( $iter->current->nodeName, "test" );
+
+my $n = $iter->last;
+ok( $iter->current->nodeName, "text" );
+
+
+print "# LIST ITERATION\n";
+my $nodelist = $doc->findnodes( '//foo' );
+my $nliter = XML::LibXML::NodeList::Iterator->new( $nodelist );
+
+while ( $nliter->next ) {
+    ok(1);
+}
+
+$nliter->iterate( sub {ok(1)} );

Added: branches/upstream/libxml-libxml-iterator-perl/current/test.pl
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libxml-libxml-iterator-perl/current/test.pl?rev=43635&op=file
==============================================================================
--- branches/upstream/libxml-libxml-iterator-perl/current/test.pl (added)
+++ branches/upstream/libxml-libxml-iterator-perl/current/test.pl Fri Sep  4 10:37:15 2009
@@ -1,0 +1,15 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use XML::LibXML::Iterator;
+
+print "OK\n";
+#########################
+
+# Insert your test code below, the Test module is use()ed here so read
+# its man page ( perldoc Test ) for help writing this test script.
+




More information about the Pkg-perl-cvs-commits mailing list