Acme-Sort-Bogosort
view release on metacpan or search on metacpan
lib/Acme/Sort/Bogosort.pm view on Meta::CPAN
}
# Internal use, not exported. Verifies order based on $compare->().
sub is_ordered {
my ( $compare, $listref ) = @_;
ref( $compare ) =~ /CODE/
or croak "is_ordered() expects a coderef as first arg.";
ref( $listref ) =~ /ARRAY/
or croak "is_ordered() expects an arrayref as second arg.";
foreach( 0 .. $#{$listref} - 1 ) {
return 0
if $compare->( $listref->[ $_ ], $listref->[ $_ + 1 ] ) > 0;
}
return 1;
}
# Default compare() is ascending standard string comparison order.
sub compare {
croak "compare() requires two args."
t/00-load.t view on Meta::CPAN
"is_ordered() throws exception when not handed a coderef as first param."
);
undef $caught;
try {
Acme::Sort::Bogosort::is_ordered( $compare, qw/ A B C D E / );
} catch { $caught = $_ };
like(
$caught,
qr/expects an arrayref/,
"is_ordered() throws an exception when not handed an arrayref as second param."
);
note "Testing Acme::Sort::Bogosort::bogosort().";
my @unsorted = shuffle( 'A' .. 'E' );
my @sorted = bogosort( @unsorted );
is_deeply(
\@sorted,
[ qw/ A B C D E / ],
"bogosort( qw/ A B C D E / ) - Default sort order returns correct results."
);
( run in 2.482 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )