use strict;
use warnings;
use lib 't/lib';
use Test::More;
require Module::Requires;

eval {
    Module::Requires->import(
        'ClassA' => {
            import => [qw/ foo bar baz /],
        }
    );
};
like($@, qr/ClassA is unloaded because -autoload an option is lacking./);

ok(!ClassA->can('package'));

eval {
    Module::Requires->import(
        'ClassA' => {
            import => [qw/ foo bar baz /],
        },
        'ClassC' => {
            import => [qw/ foo bar baz /],
        }
    );
};
like($@, qr/ClassA is unloaded because -autoload an option is lacking.\nClassC is unloaded because -autoload an option is lacking./);
ok(!ClassA->can('package'));
ok(!ClassC->can('package'));

eval {
    Module::Requires->import(
        '-autoload',
        'ClassA' => {
            import => [qw/ foo bar baz /],
        }
    );
};
is($@, '');
is(ClassA->params, 'ClassA, foo, bar, baz');

Module::Requires->import(
    '-autoload',
    'ClassI' => { import => [] },
);
eval {
    export();
};
like($@, qr/Undefined subroutine &main::export called/);

Module::Requires->import(
    '-autoload',
    'ClassI' => { import => [qw/ testa testb /] },
);
is(testa(), 'OK');
is(testb(), 'OK');
eval {
    export();
};
like($@, qr/Undefined subroutine &main::export called/);

Module::Requires->import(
    '-autoload',
    'ClassI',
);
is(export(), 'OK');

done_testing;