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

use strict;
use warnings;

# BEGIN {$Sort::Key::DEBUG=10};

use Test::More tests => 9;

use Sort::Key 'keysort';
use Sort::Key::Natural qw(natkeysort natsort rnatsort rnatkeysort mkkey_natural
			  natsort_inplace natkeysort_inplace rnatsort_inplace
			  rnatkeysort_inplace);

my @data = qw(foo1 foo23 foo foo foo fo2 foo6 bar12
	      bar1 bar2 bar-45 b-a-r-45 bar);

my $sorted = 'b-a-r-45 bar bar1 bar2 bar12 bar-45 fo2 foo foo foo foo1 foo6 foo23';
my $rsorted = 'foo23 foo6 foo1 foo foo foo fo2 bar-45 bar12 bar2 bar1 bar b-a-r-45';
my @sorted;

@sorted = keysort { mkkey_natural } @data;
is("@sorted", $sorted, 'mkkey_natural');

@sorted = natkeysort { $_ } @data;
is("@sorted", $sorted, 'natkeysort');

@sorted = natsort @data;
is("@sorted", $sorted, 'natsort');

@sorted = @data;
natsort_inplace @sorted;
is("@sorted", $sorted, 'notsort_inplace');

@sorted = @data;
natkeysort_inplace { $_ } @sorted;
is("@sorted", $sorted, 'natkeysort_inplace');

@sorted = rnatkeysort { $_ } @data;
is("@sorted", $rsorted, 'rnatkeysort');

@sorted = rnatsort @data;
is("@sorted", $rsorted, 'rnatsort');

@sorted = @data;
rnatsort_inplace @sorted;
is("@sorted", $rsorted, 'rnotsort_inplace');

@sorted = @data;
rnatkeysort_inplace { $_ } @sorted;
is("@sorted", $rsorted, 'rnatkeysort_inplace');