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