use Test::More tests => 17;

use Graph;

my $g0 = Graph->new(directed => 1);
my $g1 = Graph->new(directed => 0);
my $g2 = Graph->new(directed => 1);

$g0->add_edge('a', 'b');
$g1->add_edge('a', 'b');
$g2->add_edge('a', 'a');

eval '$g0->expect_undirected';
like($@, qr/expected undirected graph, got directed/);

eval '$g1->expect_undirected';
is($@, '');

eval '$g0->expect_directed';
is($@, '');

eval '$g1->expect_directed';
like($@, qr/expected directed graph, got undirected/);

eval '$g0->expect_acyclic';
is($@, '');

eval '$g1->expect_acyclic';
is($@, '');

eval '$g2->expect_acyclic';
like($@, qr/expected acyclic graph, got cyclic/);

eval '$g0->expect_dag';
is($@, '');

eval '$g1->expect_dag';
like($@, qr/expected directed acyclic graph, got undirected/);

eval '$g2->expect_dag';
like($@, qr/expected directed acyclic graph, got cyclic/);

eval 'Graph->random_graph(42)';
like($@, qr/Graph::random_graph: argument 'vertices' missing or undef/);

eval 'Graph->random_graph(vertices=>100)';
is($@, '');

eval 'Graph->random_graph(42,43,44)';
like($@, qr/Graph::random_graph: argument 'vertices' missing or undef/);

eval 'Graph::_get_options()';
like($@, qr/internal error: should be called with only one array ref argument/);

eval 'Graph::_get_options(1)';
like($@, qr/internal error: should be called with only one array ref argument/);

eval 'Graph::_get_options([])';
is($@, '');

eval 'Graph::_get_options(12,34)';
like($@, qr/internal error: should be called with only one array ref argument/);
