#!/bin/perl -w use strict; use Carp; $|=1; # test for the various conditions in navigation methods use XML::Twig; my $t= XML::Twig->new; $t->parse( ' an element an element an element an element an element an element an element '); my @data=; my @data_without_comments= grep { !m{^\s*(#.*)?$} } @data; my @test= map { s{\#.*$}{}; $_ } @data_without_comments; #my @test= map { s{#.*$}{}; $_ } grep { !m{^\s*(#.*)?$} } ; my $nb_test= @test; print "1..$nb_test\n"; my $i=1; foreach my $test (@test) { my( $id, $exp, $expected_pos)= split /\t+/, $test; chomp $expected_pos; $exp= '' if( $exp eq '_'); test( $i++, $id, $exp, $expected_pos); } sub test { my( $i, $id, $exp, $expected_pos)= @_; my $elt= $t->elt_id( $id); my $pos= $elt->pos( $exp); if( $pos == $expected_pos) { print "ok $i\n"; } else { print "not ok $i\n"; my $filter= $exp ? " filter: $exp" : ''; warn "test $i: $id $filter - expected $expected_pos, actual $pos\n"; } } exit 0; __DATA__ #id exp expected doc _ 1 doc elt1 0 doc toto 0 elt1_1 _ 1 elt1_1 elt1 1 elt1_1 toto 0 elt1_2 _ 2 elt1_2 elt1 2 elt1_2 toto 0 elt2_1 _ 4 elt2_1 elt1 0 elt2_1 elt2 1 elt2_1 toto 0 elt2_2 _ 6 elt2_2 elt1 0 elt2_2 elt2 2 elt2_2 toto 0