#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 14;
BEGIN {
unshift @INC => ('t/test_lib', '/test_lib');
}
use Read;
use SyncRead;
can_ok("Read", 'new');
my $reader = Read->new();
isa_ok($reader, 'Read');
can_ok("SyncRead", 'new');
my $sync_reader = SyncRead->new();
isa_ok($sync_reader, 'SyncRead');
isa_ok($sync_reader, 'Read');
ok($sync_reader->does('TSyncRead'), '... sync reader is a TSyncRead');
# these should be the same
is($reader->read(), $sync_reader->read(), '... these should be the same results');
# now lets extract the actul trait and examine it
my $trait;
{
no strict 'refs';
# get the trait out
$trait = ${"SyncRead::TRAITS"};
}
# check to see it is what we want it to be
isa_ok($trait, 'Class::Trait::Config');
# now examine the trait itself
is($trait->name, 'TSyncRead', '... get the traits name');
ok(eq_array($trait->sub_traits, []), '... this should be empty');
ok(eq_hash($trait->conflicts, {}), '... this should be empty');
ok(eq_hash($trait->overloads, {}), '... this should be empty');
ok(eq_hash(
$trait->requirements,
{ read => 1 })
, '... this should not be empty');
ok(eq_set(
[ keys %{$trait->methods} ],
['lock', 'unlock', 'read'])
, '... this should not be empty');