# Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' ######################### 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..14\n"; } END {print "not ok 1\n" unless $loaded;} use vars qw($loaded); $loaded = 1; use strict; use DBIx::XHTML_Table; my $ok; tie $ok, 'Tie::Scalar::OK'; print $ok = $loaded; ######################### 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): sub get_table { return DBIx::XHTML_Table->new([ [ qw(h1 h2) ], [ qw(foo 1) ], [ qw(bar 2) ], ]); } # table creation my $table; eval { $table = get_table() }; print $ok = $table; # table output print $ok = ($table->output =~ /H1<\/th>/); print $ok = ($table->output =~ /foo<\/td>/); # modify $table->modify(td=>{a=>'b'},'h1'); print $ok = ($table->output =~ /foo<\/td>/); print $ok = ($table->output !~ /1<\/td>/); print $ok = ($table->output({no_ucfirst => 1}) =~ /h1<\/th>/); # two map heads - notice that ucfirst $table->map_head(sub{my$x=shift;$x=~s/h/z/;return$x},'h1'); print $ok = ($table->output =~ /z1<\/th>/); print $ok = ($table->output !~ /H1<\/th>/); $table->map_head(sub{my$x=shift;$x=~s/h2/foo/;return$x},'h2'); print $ok = ($table->output =~ /foo<\/th>/); print $ok = ($table->output !~ /H2<\/th>/); #print $table->output; # these have irrevocal effects ... ?? print $ok = ($table->output({no_head => 1}) !~ /H1<\/th>/); print $ok = ($table->output({no_indent => 1}) !~ /\n|\t/); # test connect print "Test database? [n] "; if (<> =~ /y/i) { my @creds = 'DBI'; foreach (qw(vendor database host user pass)) { print ucfirst $_, ': '; #print '(i.e. mysql) ' if /vendor/; my $ans = <>; push @creds, $ans; } chomp @creds; my $xt; eval {$xt = DBIx::XHTML_Table->new(join(':',@creds[0..3]),@creds[4,5])}; print $ok = $xt; } package Tie::Scalar::OK; sub TIESCALAR { my $class = shift; my $self = { i => 0, ok => '', }; return bless $self, $class; } sub STORE { my ($self,$ok) = @_; $self->{ok} = $ok ? 'ok' : 'not ok'; $self->{i}++; } sub FETCH { my ($self) = @_; return "$self->{ok} $self->{i}\n"; } sub DESTROY {}