test array delegation edge cases
[gitmo/Moose.git] / t / 030_roles / 015_runtime_roles_and_attrs.t
index ca4e51b..865e252 100644 (file)
@@ -3,14 +3,10 @@
 use strict;
 use warnings;
 
-use Test::More tests => 9;
+use Test::More;
 use Test::Exception;
 use Scalar::Util 'blessed';
 
-BEGIN {
-    use_ok('Moose');
-}
-
 
 {
     package Dog;
@@ -18,6 +14,12 @@ BEGIN {
 
     sub talk { 'woof' }
 
+    has fur => (
+        isa => "Str",
+        is  => "rw",
+        default => "dirty",
+    );
+
     package Foo;
     use Moose;
 
@@ -28,9 +30,10 @@ BEGIN {
 }
 
 my $obj = Foo->new;
-isa_ok($obj, 'Foo');    
+isa_ok($obj, 'Foo');
 
 ok(!$obj->can( 'talk' ), "... the role is not composed yet");
+ok(!$obj->can( 'fur' ), 'ditto');
 ok(!$obj->does('Dog'), '... we do not do any roles yet');
 
 dies_ok {
@@ -41,6 +44,7 @@ Dog->meta->apply($obj);
 
 ok($obj->does('Dog'), '... we now do the Bark role');
 ok($obj->can('talk'), "... the role is now composed at the object level");
+ok($obj->can('fur'), "it has fur");
 
 is($obj->talk, 'woof', '... got the right return value for the newly composed method');
 
@@ -48,3 +52,6 @@ lives_ok {
     $obj->dog($obj)
 } '... and setting the accessor is okay';
 
+is($obj->fur, "dirty", "role attr initialized");
+
+done_testing;