my
$Class
=
'Module::Loaded'
;
my
@Funcs
=
qw[mark_as_loaded mark_as_unloaded is_loaded]
;
my
$Mod
=
'Foo::Bar'
.$$;
my
$Strict
=
$ENV
{
'PERL_CORE'
} ?
'less'
:
'strict'
;
{ use_ok(
$Class
);
can_ok(
$Class
,
@Funcs
);
}
{ ok( !is_loaded(
$Mod
),
"$Mod not loaded yet"
);
ok( mark_as_loaded(
$Mod
),
" $Mod now marked as loaded"
);
is( is_loaded(
$Mod
), $0,
" $Mod is loaded from $0"
);
my
$rv
=
eval
"require $Mod; 1"
;
ok(
$rv
,
"$Mod required"
);
ok( !$@,
" require did not die"
);
}
{ ok( mark_as_unloaded(
$Mod
),
"$Mod now marked as unloaded"
);
ok( !is_loaded(
$Mod
),
" $Mod now longer loaded"
);
my
$rv
=
eval
"require $Mod; 1"
;
ok( !
$rv
,
"$Mod require failed"
);
ok( $@,
" require died"
);
like( $@,
qr/locate/
,
" with expected error"
);
}
{
my
$where
= is_loaded(
$Strict
);
ok(
$where
,
"$Strict loaded"
);
ok( mark_as_unloaded(
$Strict
),
" $Strict unloaded"
);
{
local
$SIG
{__WARN__} =
sub
{};
my
$rv
=
eval
"require $Strict; 1"
;
ok(
$rv
,
"$Strict loaded again"
);
}
is( is_loaded(
$Strict
),
$where
,
" $Strict is loaded"
);
}