Move is_valid_class_name into XS
[gitmo/Mouse.git] / t / 001_mouse / 053-extends-meta.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More tests => 14;
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 isa_ok $meta->meta, 'Mouse::Meta::Class';
36 can_ok $meta, qw(name my_class_attr);
37 is $meta->name, 'Foo';
38 lives_and{
39     is $meta->my_class_attr, 42;
40 };
41
42 $meta = My::Meta::Role->initialize('Bar');
43 isa_ok $meta, 'My::Meta::Role';
44 isa_ok $meta->meta, 'Mouse::Meta::Class';
45 can_ok $meta, qw(name my_role_attr);
46 is $meta->name, 'Bar';
47 lives_and{
48     is $meta->my_role_attr, 43;
49 };
50
51 $meta = My::Meta::Attribute->new('baz');
52 isa_ok $meta, 'My::Meta::Attribute';
53 can_ok $meta, qw(name my_attr_attr);
54 is $meta->name, 'baz';
55 lives_and{
56     is $meta->my_attr_attr, 44;
57 };
58