Commit | Line | Data |
adf82331 |
1 | #!/usr/bin/env perl |
2 | |
2c1d8a98 |
3 | use Test::More tests => 13; |
adf82331 |
4 | |
5 | use strict; |
6 | use warnings; |
7 | |
8 | BEGIN { |
9 | use_ok('Moose'); |
10 | use_ok('Moose::Role'); |
11 | use_ok('Moose::Util'); |
12 | } |
13 | |
14 | { |
15 | package Foo; |
16 | |
17 | use Moose::Role; |
18 | } |
19 | |
20 | { |
21 | package Bar; |
22 | |
23 | use Moose; |
24 | |
25 | with qw/Foo/; |
26 | } |
27 | |
28 | { |
29 | package Baz; |
30 | |
31 | use Moose; |
32 | } |
33 | |
34 | # Classes |
35 | |
36 | ok(Moose::Util::does_role('Bar', 'Foo')); |
37 | |
38 | ok(! Moose::Util::does_role('Baz', 'Foo')); |
39 | |
40 | # Objects |
41 | |
42 | my $bar = Bar->new; |
43 | |
44 | ok(Moose::Util::does_role($bar, 'Foo')); |
45 | |
46 | my $baz = Baz->new; |
47 | |
48 | ok(! Moose::Util::does_role($baz, 'Foo')); |
49 | |
50 | # Invalid values |
51 | |
52 | ok(! Moose::Util::does_role(undef,'Foo')); |
53 | |
54 | ok(! Moose::Util::does_role(1,'Foo')); |
55 | |
2c1d8a98 |
56 | # |
57 | # search_class_by_role tests |
58 | # |
59 | BEGIN { Moose::Util->import(qw( search_class_by_role )) } |
60 | my $t_pfx = 'search_class_by_role: '; |
61 | |
62 | { package SCBR::Role; |
63 | use Moose::Role; |
64 | } |
65 | |
66 | { package SCBR::A; |
67 | use Moose; |
68 | } |
69 | is search_class_by_role('SCBR::A', 'SCBR::Role'), undef, $t_pfx . 'not found role returns undef'; |
70 | |
71 | { package SCBR::B; |
72 | use Moose; |
73 | extends 'SCBR::A'; |
74 | with 'SCBR::Role'; |
75 | } |
76 | is search_class_by_role('SCBR::B', 'SCBR::Role'), 'SCBR::B', $t_pfx . 'class itself returned if it does role'; |
77 | |
78 | { package SCBR::C; |
79 | use Moose; |
80 | extends 'SCBR::B'; |
81 | } |
82 | is search_class_by_role('SCBR::C', 'SCBR::Role'), 'SCBR::B', $t_pfx . 'nearest class doing role returned'; |
83 | |
84 | { package SCBR::D; |
85 | use Moose; |
86 | extends 'SCBR::C'; |
87 | with 'SCBR::Role'; |
88 | } |
89 | is search_class_by_role('SCBR::D', 'SCBR::Role'), 'SCBR::D', $t_pfx . 'nearest class being direct class returned'; |
90 | |