#!perl BEGIN { chdir 't' if -d 't' } use strict; use warnings; use Test::More tests => 23; my $index; #--- compiles? use_ok('Pod::PseudoPod::CrossReference'); #--- makes sure constructor works. use Pod::PseudoPod::CrossReference; my $ref = Pod::PseudoPod::CrossReference->new; ok(ref($ref) eq 'Pod::PseudoPod::CrossReference','constructor'); #--- test single handler set works. my $z = sub { $index->{$_[1]} = $_[0]->{'title'} }; ok($ref->set_handlers('Z',$z),'make set_handlers call, single handler'); ok( $ref->{Handlers}->{Z} eq $z,'Z handler check'); #--- test multiple handler set. my @handlers = keys %{$ref->{_HNDL_TYPES}}; my $handler = sub { $_[1] }; my @temp; foreach (@handlers) { # create array of handlers for assignment. next if $_ eq 'Z'; push @temp, $_, $handler } ok($ref->set_handlers(@temp),'make set_handlers call, multiple handlers'); foreach (sort @handlers) { next if $_ eq 'Z'; # test seperately. ok($ref->{Handlers}->{$_} eq $handler,$_.' handler check'); } #--- make sure Z was not overwritten during previous test. ok($ref->{Handlers}->{Z} eq $z,'Z handler not overwritten'); #--- parse psuedo pod doc ok($ref->parse_file('test.pod'),'can parse'); #--- is index not empty? ok(keys %$index,'index is not empty'); #--- test data table values. foreach (sort @handlers) { next if $_ eq 'Z'; # handler has no output. $index->{uc($_)} = '' unless $index->{uc($_)}; # knock out warnings noise. ok($index->{uc($_)} eq "this is $_","$_ output"); delete $index->{uc $_}; # clear to help next test. } #--- check for extraneous info that shouldn't be there. ok(! keys %$index,'no leftovers in index');