Commit | Line | Data |
a6b490ab |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More tests => 13; |
5 | |
6 | eval q{ |
7 | package Class1; |
8 | sub cleaned1 {} |
9 | use namespace::clean; |
10 | 1; |
11 | } or die $@; |
12 | |
13 | ok !Class1->can('cleaned1'), 'basic clean'; |
14 | |
15 | eval q{ |
16 | package Class1; |
17 | sub cleaned2 {} |
18 | use namespace::clean; |
19 | 1; |
20 | } or die $@; |
21 | |
22 | ok !Class1->can('cleaned2'), 'clean same class again'; |
23 | |
24 | eval q{ |
25 | package Class2; |
26 | sub cleaned1 {} |
27 | use namespace::clean; |
28 | sub left1 {} |
29 | no namespace::clean; |
30 | sub cleaned2 {} |
31 | use namespace::clean; |
32 | 1; |
33 | } or die $@; |
34 | |
35 | ok !Class2->can('cleaned1'), 'basic clean before no'; |
36 | ok +Class2->can('left1'), 'basic no clean'; |
37 | ok !Class2->can('cleaned2'), 'basic clean after no'; |
38 | |
39 | eval q{ |
40 | package Class2; |
41 | sub cleaned3 {} |
42 | use namespace::clean; |
43 | sub left2 {} |
44 | no namespace::clean; |
45 | sub cleaned4 {} |
46 | use namespace::clean; |
47 | 1; |
48 | } or die $@; |
49 | |
50 | ok !Class2->can('cleaned3'), 'clean again before no'; |
51 | ok +Class2->can('left2'), 'clean again no clean'; |
52 | ok !Class2->can('cleaned4'), 'clean again after no'; |
53 | |
54 | eval q{ |
55 | package Class3; |
56 | sub cleaned1 {} |
57 | use namespace::clean; |
58 | sub cleaned2 {} |
59 | no namespace::clean; |
60 | { |
61 | sub cleaned3 {} |
62 | use namespace::clean; |
63 | } |
64 | BEGIN { |
65 | package main; |
66 | ok !Class3->can('cleaned3'), 'clean inner scope'; |
67 | { |
68 | local $TODO = 'unable to differentiate scopes'; |
69 | ok +Class3->can('cleaned1'), 'clean inner scope leaves outer'; |
70 | } |
71 | ok +Class3->can('cleaned2'), 'clean inner scope leaves outer no'; |
72 | } |
73 | use namespace::clean; |
74 | 1; |
75 | } or die $@; |
76 | |
77 | ok !Class3->can('cleaned1'), 'clean after scoped'; |
78 | ok +Class3->can('cleaned2'), 'no clean after scoped'; |