DEATH TO ALL zionist ELLIPSES
[gitmo/Moose.git] / t / 020_attributes / 022_legal_options_for_inheritance.t
CommitLineData
aa08864c 1#!/usr/bin/perl
2
3use strict;
4use warnings;
7ff56534 5use Test::More tests => 2;
6
aa08864c 7
aa08864c 8
9{
10 package Bar::Meta::Attribute;
11 use Moose;
12
13 extends 'Moose::Meta::Attribute';
14
15 has 'my_legal_option' => (
16 isa => 'CodeRef',
17 is => 'rw',
18 );
19
20 around legal_options_for_inheritance => sub {
21 return (shift->(@_), qw/my_legal_option/);
22 };
23
24 package Bar;
25 use Moose;
26
27 has 'bar' => (
28 metaclass => 'Bar::Meta::Attribute',
ccd4cff9 29 my_legal_option => sub { 'Bar' },
30 is => 'bare',
aa08864c 31 );
32
33 package Bar::B;
34 use Moose;
35
36 extends 'Bar';
37
38 has '+bar' => (
39 my_legal_option => sub { 'Bar::B' }
40 );
41}
42
43my $bar_attr = Bar::B->meta->get_attribute('bar');
44my ($legal_option) = grep {
45 $_ eq 'my_legal_option'
46} $bar_attr->legal_options_for_inheritance;
47is($legal_option, 'my_legal_option',
1808c2da 48 'added my_legal_option as legal option for inheritance' );
49is($bar_attr->my_legal_option->(), 'Bar::B', 'overloaded my_legal_option');