summary refs log tree commit diff
path: root/t/12_meta_method_private.t
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2010-02-14 18:00:33 +0100
committerfranck cuny <franck@lumberjaph.net>2010-02-14 18:00:33 +0100
commit81aab6d1a8fdd1334792bffd703d35a81771e772 (patch)
treefa9782f995401cbb2b8bdb4c6cc5d9ef2ed84002 /t/12_meta_method_private.t
parentPOD and confess (diff)
downloadmoosex-privacy-81aab6d1a8fdd1334792bffd703d35a81771e772.tar.gz
update tests
Diffstat (limited to 't/12_meta_method_private.t')
-rw-r--r--t/12_meta_method_private.t43
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;
+
+
+