#!/usr/bin/perl # $Id: 04grapher.t,v 1.3 2002/04/28 23:28:55 piers Exp $ use strict; use lib qw(./lib ../lib); use Test::More; use Cwd; use File::Spec::Functions; use Module::Dependency::Grapher; BEGIN { plan tests => 17; } my $dir = cwd(); if (-d 't') { $dir = catfile( $dir, 't'); } my $index = catfile( $dir, 'dbindext.dat' ); my $tempfile = catfile( $dir, 'temp.tmp' ); if ( -f $index ) { ok(1); } else { for (2..17) { ok(1); } warn( "You need to run all the tests in order! $index not found, so skipping tests!" ); exit; } Module::Dependency::Grapher::setIndex( $index ); # test text method Module::Dependency::Grapher::makeText('both', 'd', $tempfile, { } ); ok( cmpfile( $tempfile, TEXT() ) ); Module::Dependency::Grapher::makeText('both', 'd', $tempfile, { NoLegend => 1 } ); ok( cmpfile( $tempfile, TEXT() ) ); Module::Dependency::Grapher::makeText('both', 'd', $tempfile, { NoVersion => 1 } ); ok( cmpfile( $tempfile, TEXT() ) ); Module::Dependency::Grapher::makeText('parent', 'd', $tempfile, { NoVersion => 1 } ); ok( cmpfile( $tempfile, TEXT2() ) ); Module::Dependency::Grapher::makeText('child', 'd', $tempfile, { NoVersion => 1 } ); ok( cmpfile( $tempfile, TEXT3() ) ); SKIP: { skip "Html outpt changed but tests not yet updated", 5; # test html method Module::Dependency::Grapher::makeHtml('both', 'd', $tempfile, { } ); ok( cmpfile( $tempfile, HTML() ) ); Module::Dependency::Grapher::makeHtml('both', 'd', $tempfile, { NoLegend => 1 } ); ok( cmpfile( $tempfile, HTML() ) ); Module::Dependency::Grapher::makeHtml('both', 'd', $tempfile, { NoVersion => 1 } ); ok( cmpfile( $tempfile, HTML() ) ); Module::Dependency::Grapher::makeHtml('parent', 'd', $tempfile, { NoVersion => 1 } ); ok( cmpfile( $tempfile, HTML2() ) ); Module::Dependency::Grapher::makeHtml('child', 'd', $tempfile, { NoVersion => 1 } ); ok( cmpfile( $tempfile, HTML3() ) ); } # test images eval { require GD; }; if ($@) { warn('skipping GD tests '); ok(1); } else { eval { Module::Dependency::Grapher::makeImage('both', 'd', $tempfile, { Format => 'GIF' } ); ok( cmpfile( $tempfile, 'GIF' ) ); }; if ($@) { Module::Dependency::Grapher::makeImage('both', 'd', $tempfile, { Format => 'PNG' } ); ok( cmpfile( $tempfile, 'PNG' ) ); } } # test postscript eval { require PostScript::Simple; }; if ($@) { warn('skipping PostScript tests'); for (1..5) { ok(1); } } else { Module::Dependency::Grapher::makePs('both', 'd', $tempfile, {} ); ok( cmpfile( $tempfile, '(x.pl) show stroke' ) ); ok( cmpfile( $tempfile, '%!PS-Adobe-3.0 EPSF-1.2' ) ); ok( cmpfile( $tempfile, '(Dependency Chart) show stroke' ) ); ok( cmpfile( $tempfile, '%%EOF' ) ); Module::Dependency::Grapher::makePs('both', 'd', $tempfile, { Format => 'PS' } ); ok( cmpfile( $tempfile, '%!PS-Adobe-3.0 %%Title:' ) ); } sub cmpfile { my ($file, $subs) = @_; local *FILE; open (FILE, $file) or die("Can't open temp file: $!"); undef $/; my $str = ; close FILE; if ( index($str, $subs) > -1 ) { return 1; } else { my $sep = ("-"x70)."\n"; print "Can't find\n$sep$subs$sep\nin\n$sep$str$sep"; return 0; } } sub HTML { return q[
KindItems
Parentx.pl, y.pl
Parenta, b, c
****d
Childf, g, h
]; } sub HTML2 { return q[
KindItems
Parentx.pl, y.pl
Parenta, b, c
****d
]; } sub HTML3 { return q[
KindItems
****d
Childf, g, h
]; } sub TEXT { return q[ Parent> +- ./x.pl, ./y.pl | Parent> +- a, b, c | ****> +- d | Child> +- f, g, h]; } sub TEXT2 { return q[ Parent> +- ./x.pl, ./y.pl | Parent> +- a, b, c | ****> +- d ]; } sub TEXT3 { return q[ ****> +- d | Child> +- f, g, h]; }