83 lines
1.6 KiB
Perl
83 lines
1.6 KiB
Perl
#!/usr/bin/perl -w
|
|
|
|
use Test::More;
|
|
use strict;
|
|
|
|
# Test parsing and laying out the graphs (with no strict checks on the
|
|
# output except that it should work). Tests all inputs with the four
|
|
# flow directions.
|
|
|
|
|
|
BEGIN
|
|
{
|
|
plan tests => 34;
|
|
chdir 't' if -d 't';
|
|
use lib '../lib';
|
|
use_ok ("Graph::Easy") or die($@);
|
|
use_ok ("Graph::Easy::Parser") or die($@);
|
|
};
|
|
|
|
#############################################################################
|
|
# parser object
|
|
|
|
my $parser = Graph::Easy::Parser->new( debug => 0);
|
|
|
|
is (ref($parser), 'Graph::Easy::Parser');
|
|
is ($parser->error(), '', 'no error yet');
|
|
|
|
opendir DIR, "layouter" or die ("Cannot read dir 'in': $!");
|
|
my @files = readdir(DIR); closedir(DIR);
|
|
|
|
foreach my $f (sort @files)
|
|
{
|
|
next unless -f "layouter/$f"; # only files
|
|
|
|
next unless $f =~ /\.txt/; # ignore anything else
|
|
|
|
print "# at $f\n";
|
|
|
|
my $txt = readfile("layouter/$f");
|
|
|
|
for my $flow (qw/down up right west left/)
|
|
{
|
|
|
|
my $t = "graph { flow: $flow; }\n" . $txt;
|
|
|
|
my $graph = $parser->from_text($t); # reuse parser object
|
|
|
|
# $graph->debug(1);
|
|
|
|
if (!defined $graph)
|
|
{
|
|
fail ("Graph input was invalid: " . $parser->error());
|
|
next;
|
|
}
|
|
|
|
my $ascii = $graph->as_ascii();
|
|
|
|
is ($graph->error(), '', 'no error on layout');
|
|
|
|
# print a debug output
|
|
$ascii =~ s/\n/\n# /g;
|
|
$t =~ s/\n/\n# /g;
|
|
print "# Input:\n#\n# $t\n";
|
|
print "# Generated:\n#\n# $ascii\n";
|
|
|
|
} # for all directions
|
|
|
|
}
|
|
|
|
1;
|
|
|
|
sub readfile
|
|
{
|
|
my ($file) = @_;
|
|
|
|
open FILE, $file or die ("Cannot read file $file: $!");
|
|
local $/ = undef; # slurp mode
|
|
my $doc = <FILE>;
|
|
close FILE;
|
|
|
|
$doc;
|
|
}
|