Make Mouse::Util::load_class return the argument class name, which can remove several...
[gitmo/Mouse.git] / t / 810_with_moose / 202-squirrel-role.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7
8 use Mouse::Spec;
9
10 use Scalar::Util 'blessed';
11
12 BEGIN {
13     $SIG{__WARN__} = sub { warn $_[0] if $_[0] !~ /Squirrel is deprecated/ };
14 }
15
16 do {
17     package Foo::Role;
18     use Squirrel::Role; # loa Mouse::Role
19
20     has foo => (
21         isa => "Int",
22         is  => "rw",
23     );
24
25     no Squirrel::Role;
26 };
27
28 # note that 'Foo' is defined before this, to prevent Moose being loaded from
29 # affecting its definition
30
31 BEGIN {
32     eval{ require Moose::Role && Moose::Role->VERSION(Mouse::Spec->MooseVersion) };
33     plan skip_all => "Moose $Mouse::Spec::MooseVersion required for this test" if $@;
34     plan tests => 6;
35 }
36
37 do {
38     package Bar::Role;
39     use Squirrel::Role; # load Moose::Role
40
41     has foo => (
42         isa => "Int",
43         is  => "rw",
44     );
45
46     no Squirrel::Role;
47 };
48
49 ok(!Foo::Role->can('has'), "Mouse::Role::has was unimported");
50 ok(!Bar::Role->can('has'), "Moose::Role::has was unimported");
51
52 eval q{
53     package Foo::Role;
54     use Squirrel::Role;
55
56     has bar => (is => 'rw');
57
58     package Bar::Role;
59     use Squirrel::Role;
60
61     has bar => (is => 'rw');
62 };
63
64 isa_ok(Foo::Role->meta, 'Mouse::Meta::Role');
65 isa_ok(Foo::Role->meta, 'Mouse::Meta::Role');
66
67 isa_ok(Bar::Role->meta, 'Moose::Meta::Role');
68 isa_ok(Bar::Role->meta, 'Moose::Meta::Role');
69