AmberDB
view release on metacpan or search on metacpan
t/amberdb-locale_04_sort.t view on Meta::CPAN
use strict;
use warnings;
use utf8;
use open ':std', ':utf8';
use Test::More;
binmode Test::More->builder->output, ':utf8';
binmode Test::More->builder->failure_output, ':utf8';
binmode Test::More->builder->todo_output, ':utf8';
use FindBin qw($Bin);
use lib "$Bin/../lib", 'lib';
use AmberDB::Locale;
subtest 'Turkish Alphabet Collation Sort' => sub {
my $tr = AmberDB::Locale->new('tr');
my @input = qw(Åeker Ankara Ãilek Bursa İstanbul IÄdır Ãrdek Ãzüm);
my @sorted = $tr->sort(\@input);
my @expected = qw(Ankara Bursa Ãilek IÄdır İstanbul Ãrdek Åeker Ãzüm);
is_deeply( \@sorted, \@expected, 'Turkish UCA collation sorting' );
};
subtest 'Array of Hashes Sort' => sub {
my $tr = AmberDB::Locale->new('tr');
my @input = (
{ id => 1, city => 'Åanlıurfa' },
{ id => 2, city => 'Adana' },
{ id => 3, city => 'Ãanakkale' },
);
my @sorted = $tr->sort(\@input, 'city');
my @expected_names = qw(Adana Ãanakkale Åanlıurfa);
my @actual_names = map { $_->{city} } @sorted;
is_deeply( \@actual_names, \@expected_names, 'Array of Hashes sorted by key' );
};
subtest 'Array of Arrays Sort' => sub {
my $tr = AmberDB::Locale->new('tr');
my @input = (
[ 1, 'İzmir' ],
[ 2, 'Isparta' ],
);
my @sorted = $tr->sort(\@input, 1);
my @expected_names = qw(Isparta İzmir);
my @actual_names = map { $_->[1] } @sorted;
is_deeply( \@actual_names, \@expected_names, 'Array of Arrays sorted by index' );
};
done_testing();
( run in 2.199 seconds using v1.01-cache-2.11-cpan-364913b4093 )