summaryrefslogtreecommitdiffstats
path: root/t
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2011-02-21 15:38:37 -0600
committerJesse Luehrs <doy@tozt.net>2011-02-21 15:38:37 -0600
commit61839366b807e9e8f6818020508d765efed945b5 (patch)
tree010460a707c787a4ab2a8ba0feeaa6d07b192f72 /t
parentb7f33292fd44a52fdb9f6145c43c717f6585d88c (diff)
downloadbread-board-declare-61839366b807e9e8f6818020508d765efed945b5.tar.gz
bread-board-declare-61839366b807e9e8f6818020508d765efed945b5.zip
handle attribute overriding better
Diffstat (limited to 't')
-rw-r--r--t/22-more-inheritance.t102
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;