1#!perl -T
2
3use Class::Inspector;
4use Class::Unload;
5use lib 't/lib';
6
7use Test::More tests => 14;
8
9for my $class ( qw/ MyClass MyClass::Sub MyClass::Sub::Sub / ) {
10    eval "require $class" or diag $@;
11    ok( Class::Inspector->loaded( $class ), "$class loaded" );
12}
13
14ok( Class::Unload->unload( 'MyClass' ), 'Unloading MyClass' );
15ok( ! Class::Inspector->loaded( 'MyClass' ), 'MyClass is not loaded' );
16ok( Class::Inspector->loaded( 'MyClass::Sub' ), 'MyClass::Sub is still loaded' );
17
18ok( Class::Unload->unload( 'MyClass::Sub' ), 'Unloading MyClass::Sub' );
19ok( ! Class::Inspector->loaded( 'MyClass::Sub' ), 'MyClass::Sub is not loaded');
20
21ok( Class::Unload->unload( 'MyClass::Sub::Sub' ), 'Unloading MyClass::Sub::Sub' );
22ok( ! Class::Inspector->loaded( 'MyClass::Sub::Sub' ), 'MyClass::Sub::Sub is not loaded');
23
24ok( ! Class::Unload->unload('MyClass'), 'Unloading not-loaded class');
25
26ok( Class::Unload->unload( 'Class::Unload' ), 'Unloading Class::Unload' );
27ok( ! Class::Inspector->loaded( 'Class::Unload' ), 'Class::Unload is not loaded' );
28
29eval { Class::Unload->unload( 'dummy' ) };
30like( $@, qr /Can't locate object method "unload" via package "Class::Unload"/,
31      "Can't call method on unloaded class" );
32