use strict;
use Test::More tests => 21;
use lib 't';
use Run;
require_ok('Exporter::Easiest');
{
no strict 'refs';
*{suck_list} = \&Exporter::Easiest::suck_list;
*{parse_spec} = \&Exporter::Easiest::parse_spec;
}
is_deeply(suck_list([qw(a b c d e)]), [qw( a b c d e )], "suck all");
is_deeply(suck_list([qw(a b c => e)]), [qw( a b )], "suck some");
is_deeply(
{
parse_spec(q(
a => a b c
))
},
{
a => [qw( a b c )],
},
"parse 1"
);
is_deeply(
{
parse_spec(q(
a => a b c
b => g h i
))
},
{
a => [qw( a b c )],
b => [qw( g h i )],
},
"parse 2"
);
is_deeply(
{
parse_spec(q(
a =>
b => g h i
))
},
{
a => [],
b => [qw( g h i )],
},
"parse with empty"
);
is_deeply(
{
parse_spec(q(
a =>
:b => a b :c
:e => e f g
))
},
{
a => [],
TAGS =>
[
'b', [qw( a b :c )],
'e', [qw( e f g )],
]
},
"simple with :s"
);
is_deeply(
{
parse_spec(q(
b => a b
a =>
:b =>
:e => e f :g
:d => a
c => a :c
))
},
{
a => [],
TAGS =>
[
'b', [],
'e', [qw( e f :g )],
'd' => ['a'],
],
b => [qw( a b )],
c => [qw( a :c)],
},
"everything"
);
is_deeply(
{ parse_spec(q(VARS => a b)) },
{ VARS => [qw( a b )] },
"VARS list"
);
is_deeply(
{ parse_spec(q(VARS => a)) },
{ VARS => [qw( a )] },
"VARS list of 1"
);
is_deeply(
{ parse_spec(q(VARS => 1)) },
{ VARS => 1 },
"VARS 1"
);
is_deeply(
{ parse_spec(q(VARS => 0)) },
{ VARS => 0 },
"VARS 0"
);
is_deeply(
{ parse_spec(q(ALL => all)) },
{ ALL => 'all' },
"good ALL works"
);
eval {parse_spec(q(ALL => all other))};
ok($@, "bad all dies");
package Test::The::Use;
use Exporter::Easiest q(
EXPORT => e_1 e_2
TAGS =>
:tag1 => a b c d e f
:tag2 => b d f
:tag3 => :tag1 !:tag2
OK => o_1 o_2
);
use vars qw( @EXPORT @EXPORT_OK %EXPORT_TAGS );
::ok(::eq_set( \@EXPORT, [ qw( e_1 e_2)] ), "use EXPORT and TAGS");
::ok(::eq_set( \@EXPORT_OK ,[qw( a b c d e f o_1 o_2 )] ), "use OK with EXPORT and TAGS"
);
my %e = %EXPORT_TAGS;
::ok(::eq_set( $e{tag1}, [qw( a b c d e f )] ), "use TAGS tag1");
::ok(::eq_set( $e{tag2}, [qw( b d f )] ), "use TAGS tag2");
::ok(::eq_set( $e{tag3}, [qw( a c e )] ), "use TAGS tag3");
::ok(keys(%e) == 3, "use TAGS count");
package Test::Vars;
use Exporter::Easiest qw( OK => $Var );
::runs_ok('$Var', 'tag vars can use var $Var');