Move is_valid_class_name into XS
[gitmo/Mouse.git] / t / 001_mouse / 067-traits.t
CommitLineData
668f695d 1#!perl
2use strict;
3use warnings;
4
5use Test::More;
6
7use Test::Mouse qw(does_ok);
8
9BEGIN{
10 package MyMouseX::Foo::Method;
11 use Mouse::Role;
12
13 sub foo {}
14
15 package MyMouseX::Bar::Method;
16 use Mouse::Role;
17
18 sub bar {}
19
20 package MyMouseX::Foo;
21 use Mouse::Exporter;
22 use Mouse::Util::MetaRole;
23
24 Mouse::Exporter->setup_import_methods(
25 also => 'Mouse',
26 );
27 sub init_meta {
28 my(undef, %options) = @_;
29
30 my $meta = Mouse->init_meta(%options);
31 Mouse::Util::MetaRole::apply_metaroles(
32 for => $options{for_class},
33 class_metaroles => {
34 method => ['MyMouseX::Foo::Method'],
35 },
36 );
37 }
38
39 $INC{'MyMouseX/Foo.pm'} = __FILE__;
40
41 package MyMouseX::Bar;
42 use Mouse::Exporter;
43 use Mouse::Util::MetaRole;
44
45 Mouse::Exporter->setup_import_methods(
46 also => 'Mouse',
47 );
48 sub init_meta {
49 my(undef, %options) = @_;
50
51 my $meta = Mouse->init_meta(%options);
52 Mouse::Util::MetaRole::apply_metaroles(
53 for => $options{for_class},
54 class_metaroles => {
55 method => ['MyMouseX::Bar::Method'],
56 },
57 );
58 }
59
60 $INC{'MyMouseX/Bar.pm'} = __FILE__;
61}
62{
63 package ClassA;
64 use MyMouseX::Foo;
65
66 sub a {}
67
68 package ClassB;
69 use MyMouseX::Bar;
70
71 sub b {}
72}
73
74does_ok(ClassA->meta->get_method('a'), 'MyMouseX::Foo::Method');
75does_ok(ClassB->meta->get_method('b'), 'MyMouseX::Bar::Method');
76
77done_testing;