diff options
Diffstat (limited to 't')
-rw-r--r-- | t/10_private_method.t | 25 | ||||
-rw-r--r-- | t/11_protected_method.t | 26 |
2 files changed, 49 insertions, 2 deletions
diff --git a/t/10_private_method.t b/t/10_private_method.t index 6ed9055..dabc8c9 100644 --- a/t/10_private_method.t +++ b/t/10_private_method.t @@ -1,7 +1,7 @@ use strict; use warnings; -use Test::More tests => 7; +use Test::More tests => 9; use Test::Exception; { @@ -31,6 +31,16 @@ use Test::Exception; return 'foobar' . $str; }; + sub add_public_method { + my $self = shift; + $self->meta->add_method( + 'public_foo', + sub { + $self->private_meta_method; + } + ); + } + } { @@ -57,3 +67,16 @@ dies_ok { $bar->newbar() } "... can't call bar, method is private"; is scalar @{ $foo->meta->local_private_methods }, 2, '... got two privates method'; + +my $private_method = Class::MOP::Method->wrap( + sub { return 23 }, + name => 'private_meta_method', + package_name => 'Foo' +); + +$foo->meta->add_private_method($private_method); + +dies_ok { $foo->private_meta_method } '... can\'t call the private method'; + +$foo->add_public_method; +is $foo->public_foo, 23, '... call private method via public method'; diff --git a/t/11_protected_method.t b/t/11_protected_method.t index 587979b..13e03e1 100644 --- a/t/11_protected_method.t +++ b/t/11_protected_method.t @@ -1,7 +1,7 @@ use strict; use warnings; -use Test::More tests => 5; +use Test::More tests => 7; use Test::Exception; { @@ -26,6 +26,17 @@ use Test::Exception; my $self = shift; return $self->bar; } + + sub add_public_method { + my $self = shift; + $self->meta->add_method( + 'public_foo', + sub { + $self->protected_meta_method; + } + ); + } + } my $foo = Foo->new(); @@ -38,3 +49,16 @@ is $bar->baz(), 'baz', "... got the good value from &bar"; is scalar @{ $foo->meta->local_protected_methods }, 1, '... got one protected method'; + +my $protected_method = Class::MOP::Method->wrap( + sub { return 23 }, + name => 'protected_meta_method', + package_name => 'Foo' +); + +$foo->meta->add_protected_method($protected_method); + +dies_ok { $foo->protected_meta_method } '... can\'t call the protected method'; + +$bar->add_public_method; +is $bar->public_foo, 23, '... call protected method via public method'; |