X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F028-subclass-attr.t;h=9a4eabab827eed16609a55c853fe99a9c314e8bf;hb=6cc6c673f9175314c395c60b894322e6f584d963;hp=2ec4e6e49d1c5327ea11b23369fe6829c51a45a7;hpb=28d269491e4b8dad61231390965529c3993a2ba5;p=gitmo%2FMouse.git diff --git a/t/028-subclass-attr.t b/t/028-subclass-attr.t index 2ec4e6e..9a4eaba 100644 --- a/t/028-subclass-attr.t +++ b/t/028-subclass-attr.t @@ -1,7 +1,7 @@ #!/usr/bin/env perl use strict; use warnings; -use Test::More tests => 3; +use Test::More tests => 11; do { package Class; @@ -26,8 +26,46 @@ my $obj = Child->new(class => 1, child => 1); ok($obj->child, "local attribute set in constructor"); ok($obj->class, "inherited attribute set in constructor"); -is_deeply([Child->meta->compute_all_applicable_attributes], [ +is_deeply([sort(Child->meta->get_all_attributes)], [sort( Child->meta->get_attribute('child'), Class->meta->get_attribute('class'), -], "correct compute_all_applicable_attributes"); +)], "correct get_all_attributes"); + +do { + package Foo; + use Mouse; + + has attr => ( + is => 'ro', + default => 'Foo', + ); + + package Bar; + use Mouse; + extends 'Foo'; + + has attr => ( + is => 'rw', + ); +}; + +my $foo = Foo->new; +is($foo->attr, 'Foo', 'subclass does not affect parent attr'); + +my $bar = Bar->new; +is($bar->attr, undef, 'new attribute does not have the new default'); + +is(Foo->meta->get_attribute('attr')->default, 'Foo'); +is(Foo->meta->get_attribute('attr')->_is_metadata, 'ro'); + +is(Bar->meta->get_attribute('attr')->default, undef); +is(Bar->meta->get_attribute('attr')->_is_metadata, 'rw'); + +is_deeply([Foo->meta->get_all_attributes], [ + Foo->meta->get_attribute('attr'), +], "correct get_all_attributes"); + +is_deeply([Bar->meta->get_all_attributes], [ + Bar->meta->get_attribute('attr'), +], "correct get_all_attributes");