# -*- perl -*-

# t/040-options.t - tests related to options (which are not yet implemented!)

use strict;
use warnings;
use lib::relative '.';
use Kit;

use vars::i;     # Fatal if we can't load

test_arrayref_to_vars_i();
test_hashref_to_vars_i();
test_option_in_hashref();
test_option_in_arrayref();

done_testing();

# --- The tests ----------------------------------------------------------

sub test_arrayref_to_vars_i {   # A sanity check
    eval_lives_ok q[{
        package MY::TestArrayRefToVarsI;
        use vars::i [
            '$answer' => 42,
            '$string' => 'Hello',
        ];
    }], 'use vars::i [...]';
    eval_is_var '$MY::TestArrayRefToVarsI::answer', 42;
    eval_is_var '$MY::TestArrayRefToVarsI::string', 'Hello';
} #test_arrayref_to_vars_i

sub test_hashref_to_vars_i {    # Same as arrayref, but a hashref
    eval_lives_ok q[{
        package MY::TestHashRefToVarsI;
        use vars::i +{
            '$answer' => 43,
            '$string' => 'Hello!',
        };
    }], 'use vars::i HASHREF';
    eval_is_var '$MY::TestHashRefToVarsI::answer', 43;
    eval_is_var '$MY::TestHashRefToVarsI::string', 'Hello!';
} #test_hashref_to_vars_i

sub test_option_in_hashref {
    eval_dies_like q[{
        package MY::TestOptionInHashref;
        use vars::i +{
            '-NONEXISTENT_OPTION' => 'value',
            '$answer' => 43,
            '$string' => 'Hello!',
        };
    }], qr/option/;
} #test_option_in_hashref

sub test_option_in_arrayref {
    eval_dies_like q[{
        package MY::TestOptionInArrayref;
        use vars::i [
            '-NONEXISTENT_OPTION' => 'value',
            '$answer' => 43,
            '$string' => 'Hello!',
        ];
    }], qr/option/;
} #test_option_in_arrayref