359 lines
7.9 KiB
Perl
359 lines
7.9 KiB
Perl
BEGIN {
|
|
if($ENV{PERL_CORE}) {
|
|
chdir 't';
|
|
@INC = '../lib';
|
|
}
|
|
}
|
|
|
|
use strict;
|
|
use Test;
|
|
BEGIN { plan tests => 136 };
|
|
|
|
#use Pod::Simple::Debug (5);
|
|
|
|
#sub Pod::Simple::MANY_LINES () {1}
|
|
#sub Pod::Simple::PullParser::DEBUG () {1}
|
|
|
|
|
|
use Pod::Simple::PullParser;
|
|
|
|
sub pump_it_up {
|
|
my $p = Pod::Simple::PullParser->new;
|
|
$p->set_source( \( $_[0] ) );
|
|
my(@t, $t);
|
|
while($t = $p->get_token) { push @t, $t }
|
|
print "# Count of tokens: ", scalar(@t), "\n";
|
|
print "# I.e., {", join("\n# + ",
|
|
map ref($_) . ": " . $_->dump, @t), "} \n";
|
|
return @t;
|
|
}
|
|
|
|
my @t;
|
|
|
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
@t = pump_it_up(qq{\n\nProk\n\n=head1 Things\n\n=cut\n\nBzorch\n\n});
|
|
|
|
if(not(
|
|
ok scalar( grep { ref $_ and $_->can('type') } @t), 5
|
|
)) {
|
|
ok 0,1, "Wrong token count. Failing subsequent tests.\n";
|
|
for ( 1 .. 12 ) {ok 0}
|
|
} else {
|
|
ok $t[0]->type, 'start';
|
|
ok $t[1]->type, 'start';
|
|
ok $t[2]->type, 'text';
|
|
ok $t[3]->type, 'end';
|
|
ok $t[4]->type, 'end';
|
|
|
|
ok $t[0]->tagname, 'Document';
|
|
ok $t[1]->tagname, 'head1';
|
|
ok $t[2]->text, 'Things';
|
|
ok $t[3]->tagname, 'head1';
|
|
ok $t[4]->tagname, 'Document';
|
|
|
|
ok $t[0]->attr('start_line'), '5';
|
|
ok $t[1]->attr('start_line'), '5';
|
|
}
|
|
|
|
|
|
|
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
@t = pump_it_up(
|
|
qq{Woowoo\n\n=over\n\n=item *\n\nStuff L<HTML::TokeParser>\n\n}
|
|
. qq{=item *\n\nThings I<like that>\n\n=back\n\n=cut\n\n}
|
|
);
|
|
|
|
if(
|
|
not( ok scalar( grep { ref $_ and $_->can('type') } @t) => 16 )
|
|
) {
|
|
ok 0,1, "Wrong token count. Failing subsequent tests.\n";
|
|
for ( 1 .. 32 ) {ok 0}
|
|
} else {
|
|
ok $t[ 0]->type, 'start';
|
|
ok $t[ 1]->type, 'start';
|
|
ok $t[ 2]->type, 'start';
|
|
ok $t[ 3]->type, 'text';
|
|
ok $t[ 4]->type, 'start';
|
|
ok $t[ 5]->type, 'text';
|
|
ok $t[ 6]->type, 'end';
|
|
ok $t[ 7]->type, 'end';
|
|
|
|
ok $t[ 8]->type, 'start';
|
|
ok $t[ 9]->type, 'text';
|
|
ok $t[10]->type, 'start';
|
|
ok $t[11]->type, 'text';
|
|
ok $t[12]->type, 'end';
|
|
ok $t[13]->type, 'end';
|
|
ok $t[14]->type, 'end';
|
|
ok $t[15]->type, 'end';
|
|
|
|
|
|
|
|
ok $t[ 0]->tagname, 'Document';
|
|
ok $t[ 1]->tagname, 'over-bullet';
|
|
ok $t[ 2]->tagname, 'item-bullet';
|
|
ok $t[ 3]->text, 'Stuff ';
|
|
ok $t[ 4]->tagname, 'L';
|
|
ok $t[ 5]->text, 'HTML::TokeParser';
|
|
ok $t[ 6]->tagname, 'L';
|
|
ok $t[ 7]->tagname, 'item-bullet';
|
|
|
|
ok $t[ 8]->tagname, 'item-bullet';
|
|
ok $t[ 9]->text, 'Things ';
|
|
ok $t[10]->tagname, 'I';
|
|
ok $t[11]->text, 'like that';
|
|
ok $t[12]->tagname, 'I';
|
|
ok $t[13]->tagname, 'item-bullet';
|
|
ok $t[14]->tagname, 'over-bullet';
|
|
ok $t[15]->tagname, 'Document';
|
|
|
|
ok $t[4]->attr("type"), "pod";
|
|
}
|
|
|
|
|
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
{
|
|
print "# Testing unget_token\n";
|
|
|
|
my $p = Pod::Simple::PullParser->new;
|
|
$p->set_source( \qq{\nBzorch\n\n=pod\n\nLala\n\n\=cut\n} );
|
|
|
|
ok 1;
|
|
my $t;
|
|
$t = $p->get_token;
|
|
ok $t && $t->type, 'start';
|
|
ok $t && $t->tagname, 'Document';
|
|
print "# ungetting ($t).\n";
|
|
$p->unget_token($t);
|
|
ok 1;
|
|
|
|
$t = $p->get_token;
|
|
ok $t && $t->type, 'start';
|
|
ok $t && $t->tagname, 'Document';
|
|
my @to_save = ($t);
|
|
|
|
$t = $p->get_token;
|
|
ok $t && $t->type, 'start';
|
|
ok $t && $t->tagname, 'Para';
|
|
push @to_save, $t;
|
|
|
|
print "# ungetting (@to_save).\n";
|
|
$p->unget_token(@to_save);
|
|
splice @to_save;
|
|
|
|
|
|
$t = $p->get_token;
|
|
ok $t && $t->type, 'start';
|
|
ok $t && $t->tagname, 'Document';
|
|
|
|
$t = $p->get_token;
|
|
ok $t && $t->type, 'start';
|
|
ok $t && $t->tagname, 'Para';
|
|
|
|
ok 1;
|
|
|
|
}
|
|
|
|
|
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
{
|
|
print "# Testing pullparsing from an arrayref\n";
|
|
my $p = Pod::Simple::PullParser->new;
|
|
ok 1;
|
|
$p->set_source( ['','Bzorch', '','=pod', '', 'Lala', 'zaza', '', '=cut'] );
|
|
ok 1;
|
|
my( @t, $t );
|
|
while($t = $p->get_token) {
|
|
print "# Got a token: ", $t->dump, "\n#\n";
|
|
push @t, $t;
|
|
}
|
|
ok scalar(@t), 5; # count of tokens
|
|
ok $t[0]->type, 'start';
|
|
ok $t[1]->type, 'start';
|
|
ok $t[2]->type, 'text';
|
|
ok $t[3]->type, 'end';
|
|
ok $t[4]->type, 'end';
|
|
|
|
ok $t[0]->tagname, 'Document';
|
|
ok $t[1]->tagname, 'Para';
|
|
ok $t[2]->text, 'Lala zaza';
|
|
ok $t[3]->tagname, 'Para';
|
|
ok $t[4]->tagname, 'Document';
|
|
|
|
}
|
|
|
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
{
|
|
print "# Testing pullparsing from an arrayref with terminal newlines\n";
|
|
my $p = Pod::Simple::PullParser->new;
|
|
ok 1;
|
|
$p->set_source( [ map "$_\n",
|
|
'','Bzorch', '','=pod', '', 'Lala', 'zaza', '', '=cut'] );
|
|
ok 1;
|
|
my( @t, $t );
|
|
while($t = $p->get_token) {
|
|
print "# Got a token: ", $t->dump, "\n#\n";
|
|
push @t, $t;
|
|
}
|
|
ok scalar(@t), 5; # count of tokens
|
|
ok $t[0]->type, 'start';
|
|
ok $t[1]->type, 'start';
|
|
ok $t[2]->type, 'text';
|
|
ok $t[3]->type, 'end';
|
|
ok $t[4]->type, 'end';
|
|
|
|
ok $t[0]->tagname, 'Document';
|
|
ok $t[1]->tagname, 'Para';
|
|
ok $t[2]->text, 'Lala zaza';
|
|
ok $t[3]->tagname, 'Para';
|
|
ok $t[4]->tagname, 'Document';
|
|
|
|
}
|
|
|
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
END { unlink "temp.pod" }
|
|
{
|
|
print "# Testing pullparsing from a file\n";
|
|
my $p = Pod::Simple::PullParser->new;
|
|
ok 1;
|
|
open(OUT, ">temp.pod") || die "Can't write-open temp.pod: $!";
|
|
print OUT
|
|
map "$_\n",
|
|
'','Bzorch', '','=pod', '', 'Lala', 'zaza', '', '=cut'
|
|
;
|
|
close(OUT);
|
|
ok 1;
|
|
sleep 1;
|
|
|
|
$p->set_source("temp.pod");
|
|
|
|
my( @t, $t );
|
|
while($t = $p->get_token) {
|
|
print "# Got a token: ", $t->dump, "\n#\n";
|
|
push @t, $t;
|
|
print "# That's token number ", scalar(@t), "\n";
|
|
}
|
|
ok scalar(@t), 5; # count of tokens
|
|
ok $t[0]->type, 'start';
|
|
ok $t[1]->type, 'start';
|
|
ok $t[2]->type, 'text';
|
|
ok $t[3]->type, 'end';
|
|
ok $t[4]->type, 'end';
|
|
|
|
ok $t[0]->tagname, 'Document';
|
|
ok $t[1]->tagname, 'Para';
|
|
ok $t[2]->text, 'Lala zaza';
|
|
ok $t[3]->tagname, 'Para';
|
|
ok $t[4]->tagname, 'Document';
|
|
|
|
}
|
|
|
|
# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
|
|
{
|
|
print "# Testing pullparsing from a glob\n";
|
|
my $p = Pod::Simple::PullParser->new;
|
|
ok 1;
|
|
open(IN, "<temp.pod") || die "Can't read-open temp.pod: $!";
|
|
$p->set_source(*IN);
|
|
|
|
my( @t, $t );
|
|
while($t = $p->get_token) {
|
|
print "# Got a token: ", $t->dump, "\n#\n";
|
|
push @t, $t;
|
|
print "# That's token number ", scalar(@t), "\n";
|
|
}
|
|
ok scalar(@t), 5; # count of tokens
|
|
ok $t[0]->type, 'start';
|
|
ok $t[1]->type, 'start';
|
|
ok $t[2]->type, 'text';
|
|
ok $t[3]->type, 'end';
|
|
ok $t[4]->type, 'end';
|
|
|
|
ok $t[0]->tagname, 'Document';
|
|
ok $t[1]->tagname, 'Para';
|
|
ok $t[2]->text, 'Lala zaza';
|
|
ok $t[3]->tagname, 'Para';
|
|
ok $t[4]->tagname, 'Document';
|
|
close(IN);
|
|
|
|
}
|
|
|
|
# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
|
|
{
|
|
print "# Testing pullparsing from a globref\n";
|
|
my $p = Pod::Simple::PullParser->new;
|
|
ok 1;
|
|
open(IN, "<temp.pod") || die "Can't read-open temp.pod: $!";
|
|
$p->set_source(\*IN);
|
|
|
|
my( @t, $t );
|
|
while($t = $p->get_token) {
|
|
print "# Got a token: ", $t->dump, "\n#\n";
|
|
push @t, $t;
|
|
print "# That's token number ", scalar(@t), "\n";
|
|
}
|
|
ok scalar(@t), 5; # count of tokens
|
|
ok $t[0]->type, 'start';
|
|
ok $t[1]->type, 'start';
|
|
ok $t[2]->type, 'text';
|
|
ok $t[3]->type, 'end';
|
|
ok $t[4]->type, 'end';
|
|
|
|
ok $t[0]->tagname, 'Document';
|
|
ok $t[1]->tagname, 'Para';
|
|
ok $t[2]->text, 'Lala zaza';
|
|
ok $t[3]->tagname, 'Para';
|
|
ok $t[4]->tagname, 'Document';
|
|
close(IN);
|
|
|
|
}
|
|
|
|
# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
|
|
{
|
|
print "# Testing pullparsing from a filehandle\n";
|
|
my $p = Pod::Simple::PullParser->new;
|
|
ok 1;
|
|
open(IN, "<temp.pod") || die "Can't read-open temp.pod: $!";
|
|
$p->set_source(*IN{IO});
|
|
|
|
my( @t, $t );
|
|
while($t = $p->get_token) {
|
|
print "# Got a token: ", $t->dump, "\n#\n";
|
|
push @t, $t;
|
|
print "# That's token number ", scalar(@t), "\n";
|
|
}
|
|
ok scalar(@t), 5; # count of tokens
|
|
ok $t[0]->type, 'start';
|
|
ok $t[1]->type, 'start';
|
|
ok $t[2]->type, 'text';
|
|
ok $t[3]->type, 'end';
|
|
ok $t[4]->type, 'end';
|
|
|
|
ok $t[0]->tagname, 'Document';
|
|
ok $t[1]->tagname, 'Para';
|
|
ok $t[2]->text, 'Lala zaza';
|
|
ok $t[3]->tagname, 'Para';
|
|
ok $t[4]->tagname, 'Document';
|
|
close(IN);
|
|
|
|
}
|
|
|
|
|
|
|
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
print "# Wrapping up... one for the road...\n";
|
|
ok 1;
|
|
print "# --- Done with ", __FILE__, " --- \n";
|
|
|
|
__END__
|
|
|