c089885b4df07f5334f42d8681a1a4ba6e57ee61
[gitmo/Mouse.git] / t / 055-exporter.t
1 #!perl\r
2 use strict;\r
3 use warnings;\r
4 use Test::More tests => 14;\r
5 \r
6 use Mouse ();\r
7 \r
8 BEGIN{\r
9     package MyMouse;\r
10     use Mouse;\r
11     Mouse::Exporter->setup_import_methods(\r
12         as_is => [qw(foo)],\r
13         also  => [qw(Mouse)],\r
14     );\r
15 \r
16     sub foo{ 100 }\r
17 \r
18     $INC{'MyMouse.pm'}++;\r
19 \r
20     package MyMouseEx;\r
21     use Mouse;\r
22     Mouse::Exporter->setup_import_methods(\r
23         as_is => [\&bar],\r
24         also  => [qw(MyMouse)],\r
25     );\r
26 \r
27     sub bar{ 200 }\r
28 \r
29     $INC{'MyMouseEx.pm'}++;\r
30 }\r
31 \r
32 can_ok 'MyMouse',   qw(import unimport);\r
33 can_ok 'MyMouseEx', qw(import unimport);\r
34 \r
35 {\r
36     package MyApp;\r
37     use Test::More;\r
38     use MyMouse;\r
39 \r
40     can_ok __PACKAGE__, 'meta';\r
41     ok defined(&foo), 'foo is imported';\r
42     ok defined(&has), 'has is also imported';\r
43 \r
44     no MyMouse;\r
45 \r
46     ok !defined(&foo), 'foo is unimported';\r
47     ok !defined(&has), 'has is also unimported';\r
48 }\r
49 {\r
50     package MyAppEx;\r
51     use Test::More;\r
52     use MyMouseEx;\r
53 \r
54     can_ok __PACKAGE__, 'meta';\r
55     ok defined(&foo), 'foo is imported';\r
56     ok defined(&bar), 'foo is also imported';\r
57     ok defined(&has), 'has is also imported';\r
58 \r
59     no MyMouseEx;\r
60 \r
61     ok !defined(&foo), 'foo is unimported';\r
62     ok !defined(&bar), 'foo is also unimported';\r
63     ok !defined(&has), 'has is also unimported';\r
64 }\r