The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use Test::More;
use strict;

BEGIN
   {
   plan tests => 15;
   chdir 't' if -d 't';
   use lib '../lib';
   use_ok ("Graph::Easy") or die($@);
   use_ok ("Graph::Easy::As_ascii") or die($@);
   };

can_ok ("Graph::Easy", qw/
  as_boxart
  as_boxart_html
  as_boxart_html_file
  as_boxart_file
  /);

#############################################################################

binmode STDERR, ':utf8';
# some of our strings are written in utf8
use utf8;

my $graph = Graph::Easy->new();

my ($bonn, $berlin, $edge) = $graph->add_edge ('Bonn', 'Berlin');

my $boxart = $graph->as_boxart();

like ($boxart, qr/Bonn/, 'contains Bonn');
like ($boxart, qr/Berlin/, 'contains Berlin');
unlike ($boxart, qr/-/, "doesn't contain '-'");

#############################################################################
# border tests

$berlin->set_attribute('border-style', 'dotted');

#############################################################################
# arrow tests

my $open = '──>';
my $closed = '──▷';
my $filled = '──▶';

$boxart = $graph->as_boxart();
like ($boxart, qr/$open/, 'contains edge with open arrow');

$edge->set_attribute('arrow-style', 'open');
$boxart = $graph->as_boxart();
like ($boxart, qr/$open/, 'contains edge with open arrow');

$edge->set_attribute('arrow-style', 'closed');
$boxart = $graph->as_boxart();
like ($boxart, qr/$closed/, 'contains edge with closed arrow');

$edge->set_attribute('arrow-style', 'filled');
$boxart = $graph->as_boxart();
like ($boxart, qr/$filled/, 'contains edge with filled arrow');

#############################################################################
# arrow tests with dotted lines

$open = "··>";
$closed = '··▷';
$filled = '··▶';

$edge->set_attribute('style', 'dotted');
$edge->del_attribute('arrow-style');

is ($edge->style(), 'dotted', 'edge is now dotted');

$boxart = $graph->as_boxart();
like ($boxart, qr/$open/, 'contains edge with open arrow');

$edge->set_attribute('arrow-style', 'open');
$boxart = $graph->as_boxart();
like ($boxart, qr/$open/, 'contains edge with open arrow');

$edge->set_attribute('arrow-style', 'closed');
$boxart = $graph->as_boxart();
like ($boxart, qr/$closed/, 'contains edge with closed arrow');

$edge->set_attribute('arrow-style', 'filled');
$boxart = $graph->as_boxart();
like ($boxart, qr/$filled/, 'contains edge with filled arrow');