]> git.vpit.fr Git - perl/modules/Scope-Upper.git/blob - t/05-words.t
Make levels absolute
[perl/modules/Scope-Upper.git] / t / 05-words.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 46;
7
8 use Scope::Upper qw/:words/;
9
10 is HERE, 0, 'main : here';
11 is TOP,  0, 'main : top';
12 is UP,   0, 'main : up';
13 is DOWN, 0, 'main : down';
14 is SUB,  undef, 'main : sub';
15 is EVAL, undef, 'main : eval';
16
17 {
18  is HERE, 1, '{ 1 } : here';
19  is TOP,  0, '{ 1 } : top';
20  is UP,   0, '{ 1 } : up';
21  is DOWN, 1, '{ 1 } : down';
22  is DOWN(UP), 1, '{ 1 } : up then down';
23  is UP(DOWN), 0, '{ 1 } : down then up';
24 }
25
26 do {
27  is HERE, 1,     'do { 1 } : here';
28  is SUB,  undef, 'do { 1 } : sub';
29  is EVAL, undef, 'do { 1 } : eval';
30 };
31
32 eval {
33  is HERE, 1,     'eval { 1 } : here';
34  is SUB,  undef, 'eval { 1 } : sub';
35  is EVAL, 1,     'eval { 1 } : eval';
36 };
37
38 eval q[
39  is HERE, 1,     'eval "1" : here';
40  is SUB,  undef, 'eval "1" : sub';
41  is EVAL, 1,     'eval "1" : eval';
42 ];
43
44 do {
45  is HERE, 1, 'do { 1 } while (0) : here';
46 } while (0);
47
48 sub {
49  is HERE, 1,     'sub { 1 } : here';
50  is SUB,  1,     'sub { 1 } : sub';
51  is EVAL, undef, 'sub { 1 } : eval';
52 }->();
53
54 for (1) {
55  is HERE, 1, 'for () { 1 } : here';
56 }
57
58 do {
59  eval {
60   do {
61    sub {
62     eval q[
63      {
64       is HERE,           6, 'mixed : here';
65       is TOP,            0, 'mixed : top';
66       is SUB,            4, 'mixed : first sub';
67       is SUB(SUB),       4, 'mixed : still first sub';
68       is EVAL,           5, 'mixed : first eval';
69       is EVAL(EVAL),     5, 'mixed : still first eval';
70       is EVAL(UP(EVAL)), 2, 'mixed : second eval';
71      }
72     ];
73    }->();
74   }
75  };
76 } while (0);
77
78 {
79  is CALLER,    0, '{ } : caller';
80  is CALLER(0), 0, '{ } : caller 0';
81  is CALLER(1), 0, '{ } : caller 1';
82  sub {
83   is CALLER,    2, '{ sub { } } : caller';
84   is CALLER(0), 2, '{ sub { } } : caller 0';
85   is CALLER(1), 0, '{ sub { } } : caller 1';
86   for (1) {
87    is CALLER,    2, '{ sub { for { } } } : caller';
88    is CALLER(0), 2, '{ sub { for { } } } : caller 0';
89    is CALLER(1), 0, '{ sub { for { } } } : caller 1';
90    eval {
91     is CALLER,    4, '{ sub { for { eval { } } } } : caller';
92     is CALLER(0), 4, '{ sub { for { eval { } } } } : caller 0';
93     is CALLER(1), 2, '{ sub { for { eval { } } } } : caller 1';
94     is CALLER(2), 0, '{ sub { for { eval { } } } } : caller 2';
95    }
96   }
97  }->();
98 }