#!/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;
}