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