diff options
author | Jesse Luehrs <doy@tozt.net> | 2011-02-21 15:38:37 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2011-02-21 15:38:37 -0600 |
commit | 61839366b807e9e8f6818020508d765efed945b5 (patch) | |
tree | 010460a707c787a4ab2a8ba0feeaa6d07b192f72 /t/22-more-inheritance.t | |
parent | b7f33292fd44a52fdb9f6145c43c717f6585d88c (diff) | |
download | bread-board-declare-61839366b807e9e8f6818020508d765efed945b5.tar.gz bread-board-declare-61839366b807e9e8f6818020508d765efed945b5.zip |
handle attribute overriding better
Diffstat (limited to 't/22-more-inheritance.t')
-rw-r--r-- | t/22-more-inheritance.t | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/t/22-more-inheritance.t b/t/22-more-inheritance.t new file mode 100644 index 0000000..b32a7d1 --- /dev/null +++ b/t/22-more-inheritance.t @@ -0,0 +1,102 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +{ + package Parent; + use Moose; + use MooseX::Bread::Board; + + has foo => ( + is => 'ro', + isa => 'Str', + value => 'parent', + ); + + has bar => ( + is => 'ro', + isa => 'Str', + block => sub { + my $s = shift; + return $s->param('foo') . ' ' . 'parent'; + }, + dependencies => ['foo'], + ); +} + +{ + package Child1; + use Moose; + use MooseX::Bread::Board; + + extends 'Parent'; + + has foo => ( + is => 'ro', + isa => 'Str', + value => 'child', + ); +} + +{ + package Child2; + use Moose; + use MooseX::Bread::Board; + + extends 'Parent'; + + has bar => ( + is => 'ro', + isa => 'Str', + block => sub { + my $s = shift; + return $s->param('foo') . ' ' . 'child'; + }, + dependencies => ['foo'], + ); +} + +{ + package Child3; + use Moose; + use MooseX::Bread::Board; + + extends 'Child1'; + + has bar => ( + is => 'ro', + isa => 'Str', + block => sub { + my $s = shift; + return $s->param('foo') . ' ' . 'child'; + }, + dependencies => ['foo'], + ); +} + +{ + my $obj = Parent->new; + is($obj->foo, 'parent'); + is($obj->bar, 'parent parent'); +} + +{ + my $obj = Child1->new; + is($obj->foo, 'child'); + is($obj->bar, 'child parent'); +} + +{ + my $obj = Child2->new; + is($obj->foo, 'parent'); + is($obj->bar, 'parent child'); +} + +{ + my $obj = Child3->new; + is($obj->foo, 'child'); + is($obj->bar, 'child child'); +} + +done_testing; |