use Test::More tests=> 30;
use lib qw( ./lib ../lib );
use Egg::Helper;

require_ok 'Egg::Plugin::Mason';

ok $e= Egg::Helper->run
   ( Vtest=> { vtest_plugins=> [qw/ Mason /] }), q{load plugin.};

can_ok $e, 'mason';
  ok my $ms= $e->mason, q{my $ms= $e->mason};
  isa_ok $ms, 'Egg::Plugin::Mason::handler';

can_ok $ms, 'prepare';
  isa_ok $ms->prepare, 'HASH';

can_ok $ms, 'attr';
  isa_ok $ms->attr, 'HASH';

can_ok $ms, 'code_first';
  isa_ok $ms->code_first, 'CODE';

can_ok $ms, 'code_action';
  isa_ok $ms->code_action, 'CODE';

can_ok $ms, 'code_final';
  isa_ok $ms->code_final, 'CODE';

can_ok $ms, 'exec';

can_ok $ms, 'complete';
  ok $ms->complete('Test OK', 'Test info'),
     q{$ms->complete('Test OK', 'Test info')};

can_ok $ms, 'is_complete';
  ok $ms->is_complete, q{$ms->is_complete};

can_ok $ms, 'complete_topic';
  is $ms->complete_topic, 'Test OK', q{$ms->complete_topic, 'Test OK'};

can_ok $ms, 'complete_info';
  is $ms->complete_info, 'Test info', q{$ms->complete_info, 'Test info'};

$ms->is_complete(0);
$ms->complete_topic(undef);
$ms->complete_info(undef);

can_ok $ms, 'error_complete';
  ok ! $ms->error_complete('Error OK', 'Error info'),
     q{! $ms->error_complete('Error OK', 'Error info')};

can_ok $ms, 'is_error';
  ok $ms->is_error, q{$ms->is_error};

is $ms->complete_topic, 'Error OK', q{$ms->complete_topic, 'Error OK'};
is $ms->complete_info, 'Error info', q{$ms->complete_info, 'Error info'};