blob: 53ddf62690cf41ff10d625802680ac76c81f7011 [file] [log] [blame]
BEGIN { chdir 't' if -d 't' };
use strict;
use lib '../lib';
use Test::More 'no_plan';
use Data::Dumper;
my $Class = 'Object::Accessor';
use_ok($Class);
my $Object = $Class->new;
my $Acc = 'foo';
my $Allow = qr/^\d+$/;
my $Err_re = qr/is an invalid value for '$Acc'/;
my ($Ver_re) = map { qr/$_/ } quotemeta qq['$Acc' (<undef>) is invalid];
### stupid warnings
### XXX this will break warning tests though if enabled
$Object::Accessor::DEBUG = $Object::Accessor::DEBUG = 1 if @ARGV;
### check the object
{ ok( $Object, "Object of '$Class' created" );
isa_ok( $Object, $Class );
}
### create an accessor;
{ my $warning;
local $SIG{__WARN__} = sub { $warning .= "@_" };
ok( $Object->mk_accessors( { $Acc => $Allow } ),
"Accessor '$Acc' created" );
ok( $Object->can( $Acc ), " Can '$Acc'" );
ok(!$warning, " No warnings logged" );
is( $Object->ls_allow( $Acc ), $Allow,
" Proper allow handler stored" );
}
### try to use the accessor
{ ### bad
{ my $warning;
local $SIG{__WARN__} = sub { $warning .= "@_" };
ok( !$Object->$Acc( $0 ), "'$Acc' NOT set to '$0'" );
is( $Object->$Acc(), undef, " '$Acc' still holds '<undef>'" );
like( $warning, $Err_re, " Warnings logged" );
### reset warnings;
undef $warning;
my $ok = $Object->mk_verify;
ok( !$ok, " Internal verify fails" );
like( $warning, $Ver_re, " Warning logged" );
}
$Object->mk_flush;
### good
{ my $warning;
local $SIG{__WARN__} = sub { $warning .= "@_" };
ok( $Object->$Acc( $$ ), "'$Acc' set to '$$'" );
is( $Object->$Acc(), $$, " '$Acc' still holds '$$'" );
ok(!$warning, " No warnings logged" );
### reset warnings;
undef $warning;
my $ok = $Object->mk_verify;
ok( $ok, " Internal verify succeeds" );
ok( !$warning, " No warnings" );
}
$Object->mk_flush;
}