X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F017-default-reference.t;h=8d1a3540c0688a270c3182bd74ce0bd294afacf9;hb=c9313657717f78bd96f0325c6aa1c93d0b0d41a5;hp=05f28d208c37c12c734b2d5cc8068655df95e0ca;hpb=c3398f5bd45f2851b7cd40ca9823bcf7d2378469;p=gitmo%2FMouse.git diff --git a/t/017-default-reference.t b/t/017-default-reference.t index 05f28d2..8d1a354 100644 --- a/t/017-default-reference.t +++ b/t/017-default-reference.t @@ -1,7 +1,7 @@ #!/usr/bin/env perl use strict; use warnings; -use Test::More tests => 8; +use Test::More tests => 9; use Test::Exception; do { @@ -39,7 +39,7 @@ do { ::throws_ok { has d => ( is => 'rw', - default => meta(), + default => Test::Builder->new, ); } qr/References are not allowed as default values/; }; @@ -48,3 +48,15 @@ is(ref(Class->new->code), 'CODE', "default => sub { sub { 1 } } stuffs a coderef is(Class->new->code->(), 1, "default => sub sub strips off the first coderef"); is_deeply(Class->new->a, [1], "default of sub { reference } works"); +do { + package Class::Two; + use Mouse; + has foo => (is => 'rw', default => sub { + die unless $_[0]->isa('Class::Two'); + shift->default_foo; + }); + sub default_foo { 1 }; +}; + +my $obj2 = Class::Two->new; +is($obj2->foo, 1, 'default method gets the $_[0] it needs to work');