#!/usr/bin/perl -w
use strict;
use warnings;
use Test::More tests => 7;
require Fatal;
my @default = expand(':default');
my @threads = expand(':threads');
my @io = expand(':io');
my %io_hash = map { $_ => 1 } @io;
my @default_minus_io = grep { !exists($io_hash{$_}) } @default;
is_deeply(translate('!a', 'a'), ['!a'], 'Keeps insist variant');
is_deeply(translate(':default'), \@default,
'translate and expand agrees');
is_deeply(translate(':default', ':void', ':io'),
[@default_minus_io, ':void', @io],
':void position is respected');
is_deeply(translate(':default', ':void', ':io', ':void', ':threads'),
[':void', @io, ':void', @threads],
':void (twice) position are respected');
is_deeply(translate(':default', '!', ':io'),
[@default_minus_io, '!', @io], '! position is respected');
is_deeply(translate(':default', '!', ':io', '!', ':threads'),
['!', @io, '!', @threads],
'! (twice) positions are respected');
is_deeply(translate(':default', '!open', '!', ':io'),
[@default_minus_io, '!open', '!', grep { $_ ne 'open' } @io],
'!open ! :io works as well');
sub expand {
# substr is to strip "CORE::" without modifying $_
return map { substr($_, 6) } @{Fatal->_expand_tag(@_)};
}
sub translate {
return [Fatal->_translate_import_args(@_)];
}