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

# test interface being compatible to Graph.pm so that Graph::Maker works:
use Test::More;
use strict;

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

can_ok ('Graph::Easy', qw/
  new

  add_vertex
  add_vertices
  has_edge
  vertices
  add_path
  add_cycle
  /);

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

is (ref($graph), 'Graph::Easy');

is ($graph->error(), '', 'no error yet');

$graph->add_vertex('A');
my $A = $graph->node('A');

is (scalar $graph->vertices(), 1, '1 vertex');
my @nodes = $graph->vertices();
is ($nodes[0], $A, '1 vertex');

my $edge = $graph->add_edge ('A', 'B');

is ($graph->has_edge('A','B'), 1, 'has_edge()');
is ($graph->has_edge($A,'B'),  1, 'has_edge()');
is ($graph->has_edge('C','B'), 0, 'has_edge()');

$graph->add_vertices('A','B','C');
is (scalar $graph->vertices(), 3, '3 vertices');

$graph->set_vertex_attribute('A','fill','#deadff');

my $atr = $graph->get_vertex_attribute('A','fill');

is ($atr, $A->attribute('fill'), 'attribute got set');

#############################################################################
## add_cycle and add_path
#

$graph = Graph::Easy->new();
$graph->add_path('A','B','C');
is (scalar $graph->vertices(), 3, '3 vertices');
is (scalar $graph->edges(), 2, '2 vertices');

$graph = Graph::Easy->new();
$graph->add_cycle('A','B','C');
is (scalar $graph->vertices(), 3, '3 vertices');
is (scalar $graph->edges(), 3, '3 vertices');