The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
### Module::Load test suite ###
BEGIN { 
    if( $ENV{PERL_CORE} ) {
        chdir '../lib/Module/Load' if -d '../lib/Module/Load';
        unshift @INC, '../../..';
    }
} 

BEGIN { chdir 't' if -d 't' }

use strict;
use lib qw[../lib to_load];
use Module::Load;
use Test::More tests => 13;


{
    my $mod = 'Must::Be::Loaded';
    my $file = Module::Load::_to_file($mod,1);

    eval { load $mod };

    is( $@, '', qq[Loading module '$mod'] );
    ok( defined($INC{$file}), q[... found in %INC] );
}

{
    my $mod = 'LoadMe.pl';
    my $file = Module::Load::_to_file($mod);

    eval { load $mod };

    is( $@, '', qq[Loading File '$mod'] );
    ok( defined($INC{$file}), q[... found in %INC] );
}

{
    my $mod = 'LoadIt';
    my $file = Module::Load::_to_file($mod,1);

    eval { load $mod };

    is( $@, '', qq[Loading Ambigious Module '$mod'] );
    ok( defined($INC{$file}), q[... found in %INC] );
}

{
    my $mod = 'ToBeLoaded';
    my $file = Module::Load::_to_file($mod);

    eval { load $mod };

    is( $@, '', qq[Loading Ambigious File '$mod'] );
    ok( defined($INC{$file}), q[... found in %INC] );
}

### Test importing functions ###
{   my $mod     = 'TestModule';
    my @funcs   = qw[func1 func2];
    
    eval { load $mod, @funcs };
    is( $@, '', qq[Loaded exporter module '$mod'] );
    
    for my $func (@funcs) {
        ok( $mod->can($func),           "$mod -> can( $func )" );
        ok( __PACKAGE__->can($func),    "we -> can ( $func )"  ); 
    }        
}