📄 02_object-accessor-allow.t
字号:
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;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -