The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;
use Test::More;
use Test::Exception;

my $pkg;
BEGIN {
    $pkg = 'Catmandu::Fix::sort_field';
    use_ok $pkg;
}

is_deeply
    $pkg->new('tags')->fix({tags => ["foo", "bar","bar"] }),
    {tags => ["bar","bar","foo"] },
    "sort alphanum";

is_deeply
    $pkg->new('tags',uniq=>1)->fix({tags => ["foo", "bar","bar"] }),
    {tags => ["bar","foo"] },
    "sort unique";

is_deeply
    $pkg->new('tags')->fix({tags => [undef,undef,"b","b","c","a"]}),
    { tags => ["a","b","b","c",undef,undef]},
    "sort with undefined values";

is_deeply
    $pkg->new('tags',undef_position=>"last")->fix({tags => ["b",undef,undef,"b","c","a"]}),
    { tags => ["a","b","b","c",undef,undef]},
    "sort with undefined values, undef last";

is_deeply
    $pkg->new('tags',undef_position=>"first")->fix({tags => [undef,"b","b","c",undef,"a"]}),
    { tags => [undef,undef,"a","b","b","c"]},
    "sort with undefined values, undef first";

is_deeply
    $pkg->new('tags',undef_position=>"delete")->fix({tags => [undef,undef,"b","b","c","a"]}),
    { tags => ["a","b","b","c"]},
    "sort with undefined values, remove undef";

is_deeply
    $pkg->new('tags',uniq=>1)->fix({tags => [undef,undef,"b","b","c","a"]}),
    { tags => ["a","b","c",undef]},
    "sort uniq with undefined values";

is_deeply
    $pkg->new('tags',uniq=>1,undef_position=>"last")->fix({tags => ["b",undef,undef,"b","c","a"]}),
    { tags => ["a","b","c",undef]},
    "sort uniq with undefined values, undef last";

is_deeply
    $pkg->new('tags',uniq=>1,undef_position=>"first")->fix({tags => [undef,"b","b","c",undef,"a"]}),
    { tags => [undef,"a","b","c"]},
    "sort uniq with undefined values, undef first";

is_deeply
    $pkg->new('tags',uniq=>1,undef_position=>"delete")->fix({tags => [undef,undef,"b","b","c","a"]}),
    { tags => ["a","b","c"]},
    "sort uniq with undefined values, remove undef";

is_deeply
    $pkg->new('tags',uniq=>1,reverse=>1)->fix({tags => ["foo", "bar","bar"] }),
    {tags => ["foo","bar"] },
    "sort unique reverse";

is_deeply
    $pkg->new('nums',numeric=>1)->fix({ nums => [ 100, 1 , 10] }),
    {nums => [ 1, 10, 100]},
    "sort numeric";

done_testing 13;