7f945c64dbdeb37efd9b350bf980e6b8912425cc
[gitmo/Mouse.git] / t / 001_mouse / 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 #        groups => {\r
27 #            foobar_only => [qw(foo bar)],\r
28 #        },\r
29     );\r
30 \r
31     sub bar{ 200 }\r
32 \r
33     $INC{'MyMouseEx.pm'}++;\r
34 }\r
35 \r
36 can_ok 'MyMouse',   qw(import unimport);\r
37 can_ok 'MyMouseEx', qw(import unimport);\r
38 \r
39 {\r
40     package MyApp;\r
41     use Test::More;\r
42     use MyMouse;\r
43 \r
44     can_ok __PACKAGE__, 'meta';\r
45     ok defined(&foo), 'foo is imported';\r
46     ok defined(&has), 'has is also imported';\r
47 \r
48     no MyMouse;\r
49 \r
50     ok !defined(&foo), 'foo is unimported';\r
51     ok !defined(&has), 'has is also unimported';\r
52 }\r
53 {\r
54     package MyAppEx;\r
55     use Test::More;\r
56     use MyMouseEx;\r
57 \r
58     can_ok __PACKAGE__, 'meta';\r
59     ok defined(&foo), 'foo is imported';\r
60     ok defined(&bar), 'foo is also imported';\r
61     ok defined(&has), 'has is also imported';\r
62 \r
63     no MyMouseEx;\r
64 \r
65     ok !defined(&foo), 'foo is unimported';\r
66     ok !defined(&bar), 'foo is also unimported';\r
67     ok !defined(&has), 'has is also unimported';\r
68 }\r
69 \r
70 # exporting groups are not implemented in Moose::Exporter\r
71 #{\r
72 #    package MyAppExTags;\r
73 #    use Test::More;\r
74 #    use MyMouseEx qw(:foobar_only);\r
75 #\r
76 #    can_ok __PACKAGE__, 'meta';\r
77 #    ok defined(&foo);\r
78 #    ok defined(&bar);\r
79 #    ok!defined(&has), "export tags";\r
80 #}\r
81 \r