Add a test file to extend metaclasses
[gitmo/Mouse.git] / t / 053-extends-meta.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More tests => 12;
5 use Test::Exception;
6 {
7     package My::Meta::Class;
8     use Mouse;
9     extends 'Mouse::Meta::Class';
10
11     has my_class_attr => (
12         is      => 'rw',
13         default => 42,
14     );
15     package My::Meta::Role;
16     use Mouse;
17     extends 'Mouse::Meta::Role';
18
19     has my_role_attr => (
20         is      => 'rw',
21         default => 43,
22     );
23     package My::Meta::Attribute;
24     use Mouse;
25     extends 'Mouse::Meta::Attribute';
26
27     has my_attr_attr => (
28         is      => 'rw',
29         default => 44,
30     );
31 }
32
33 my $meta = My::Meta::Class->initialize('Foo');
34 isa_ok $meta, 'My::Meta::Class';
35 can_ok $meta, qw(name my_class_attr);
36 is $meta->name, 'Foo';
37 lives_and{
38     is $meta->my_class_attr, 42;
39 };
40
41 $meta = My::Meta::Role->initialize('Bar');
42 isa_ok $meta, 'My::Meta::Role';
43 can_ok $meta, qw(name my_role_attr);
44 is $meta->name, 'Bar';
45 lives_and{
46     is $meta->my_role_attr, 43;
47 };
48
49 $meta = My::Meta::Attribute->new('baz');
50 isa_ok $meta, 'My::Meta::Attribute';
51 can_ok $meta, qw(name my_attr_attr);
52 is $meta->name, 'baz';
53 lives_and{
54     is $meta->my_attr_attr, 44;
55 };
56