diff options
author | franck cuny <franck@lumberjaph.net> | 2010-02-14 18:00:33 +0100 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-02-14 18:00:33 +0100 |
commit | 81aab6d1a8fdd1334792bffd703d35a81771e772 (patch) | |
tree | fa9782f995401cbb2b8bdb4c6cc5d9ef2ed84002 /t/12_meta_method_private.t | |
parent | POD and confess (diff) | |
download | moosex-privacy-81aab6d1a8fdd1334792bffd703d35a81771e772.tar.gz |
update tests
Diffstat (limited to 't/12_meta_method_private.t')
-rw-r--r-- | t/12_meta_method_private.t | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/t/12_meta_method_private.t b/t/12_meta_method_private.t new file mode 100644 index 0000000..3a64bdf --- /dev/null +++ b/t/12_meta_method_private.t @@ -0,0 +1,43 @@ +use strict; +use warnings; +use Test::More; + +use Moose::Meta::Class; +use MooseX::Privacy::Meta::Method::Private; + +my $metaclass = Moose::Meta::Class->create('Foo'); + +ok my $private_method = MooseX::Privacy::Meta::Method::Private->wrap( + name => 'foo', + package_name => 'Foo', + body => sub { return 23 } + ), + 'create Method::Private method'; + +isa_ok $private_method, 'MooseX::Privacy::Meta::Method::Private'; +eval { $private_method->execute }; +like $@, qr/The Foo::foo method is private/, + "can't execute private method in main package"; + +{ + + package Foo; + use Moose; + use MooseX::Privacy; + sub baz { return $_[0]->foo + $_[0]->bar } +} + +my $object = Foo->new(); +ok $object->meta->add_private_method( 'foo', $private_method ), + 'add_private_method accept a Method::Private instance'; +ok $object->meta->add_private_method( 'bar', sub { return 42 } ), + 'add_private_method create a new Method::Private instance'; +is scalar @{ $object->meta->local_private_methods }, 2, + 'got two private methods'; + +is $object->baz, 65, 'everything works fine'; + +done_testing; + + + |