#!perl
our
$phase
;
BEGIN {
$phase
=
'compile-time'
}
INIT {
$phase
=
'run-time'
}
sub
method_defined
{
my
(
$method
) =
@_
;
local
$Test::Builder::Level
=
$Test::Builder::Level
+ 1;
is exception { Foo->
$method
},
undef
,
"method $method is defined at $phase"
;
}
sub
method_undefined
{
my
(
$method
) =
@_
;
local
$Test::Builder::Level
=
$Test::Builder::Level
+ 1;
like exception { Foo->
$method
},
qr/Can't locate object method/
,
"method $method is undefined at $phase"
;
}
method top_level_default() {}
method top_level_off() {}
method top_level_on() {}
{
method inner_scope_off() {}
}
method outer_scope_on() {}
BEGIN {
method_defined(
'top_level_default'
);
method_undefined(
'top_level_off'
);
method_defined(
'top_level_on'
);
method_undefined(
'inner_scope_off'
);
method_defined(
'outer_scope_on'
);
}
method_defined(
'top_level_default'
);
method_defined(
'top_level_off'
);
method_defined(
'top_level_on'
);
method_defined(
'inner_scope_off'
);
method_defined(
'outer_scope_on'
);
done_testing;