#!perl
use 5.010;
use strict;
use warnings;
#use Log::Any '$log';
use Test::More;
use Complete::Util qw(complete_hash_key);
local $Complete::Common::OPT_CI = 0;
local $Complete::Common::OPT_MAP_CASE = 0;
local $Complete::Common::OPT_WORD_MODE = 0;
local $Complete::Common::OPT_FUZZY = 0;
test_complete(
word => 'a',
hash => {a=>1, aa=>1, ab=>1, b=>1, A=>1},
result => [qw(a aa ab)],
);
test_complete(
word => 'c',
hash => {a=>1, aa=>1, ab=>1, b=>1, A=>1},
result => [qw()],
);
test_complete(
name => 'arg:summaries',
word => 'a',
hash => {a=>1, aa=>1, ab=>1, b=>1, A=>1},
summaries => {a=>2, aa=>3, ab=>4, b=>5, A=>6},
result => [
{word=>'a' , summary=>2},
{word=>'aa', summary=>3},
{word=>'ab', summary=>4},
],
);
test_complete(
name => 'arg:summaries_from_hash_values',
word => 'a',
hash => {a=>1, aa=>2, ab=>3, b=>4, A=>5},
summaries_from_hash_values => 1,
result => [
{word=>'a' , summary=>1},
{word=>'aa', summary=>2},
{word=>'ab', summary=>3},
],
);
done_testing;
sub test_complete {
my (%args) = @_;
#$log->tracef("args=%s", \%args);
my $name = $args{name} // $args{word};
my $res = complete_hash_key(
word => $args{word},
hash => $args{hash},
summaries => $args{summaries},
summaries_from_hash_values => $args{summaries_from_hash_values},
);
#diag explain $res;
is_deeply($res, $args{result}, "$name (result)") or explain($res);
}