The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

# Time-stamp: "2004-03-27 17:13:23 AST"

use strict;
use Test;
BEGIN { plan tests => 20 };
use Sort::ArbBiLex ();
BEGIN {
if( &Sort::ArbBiLex::UNICODE ) {
  ok 1;
} else {
  print "# You're not running a Unicode-aware version of Perl.\n";
  ok 0;
  die "Aborting " . __FILE__ . "\n";
}
}

# $Sort::ArbBiLex::Debug = 2;

my $euro;
BEGIN { $euro = "\x{20ac}"; }
binmode(STDOUT, ":utf8");

use Sort::ArbBiLex ('foosort' => 
 [
  [' '],
  ['A', 'a'],
  ['b'],
  ["h", "${euro}"],
  ['i'],
  ['u'],
 ]
);

my $out = join(' ~ ',
 foosort(
  "a${euro}ub", 'ahuba', 'ahub iki', 'ahubiki', "${euro}ub", 'aba', 'Aba', 'hub',
 )
);
my $expected = "Aba ~ aba ~ a${euro}ub ~ ahub iki ~ ahuba ~ ahubiki ~ hub ~ ${euro}ub";
print " Output  : $out\n Expected: $expected\n";
ok($out eq $expected); # ? "ok 2\n" : "fail 2\n";

use Sort::ArbBiLex ('n_sort' => " a A  \n  b B  \n  c C ");
sub n_cmp { Sort::ArbBiLex::xcmp(\&n_sort, @_) };
sub n_lt  { Sort::ArbBiLex::xlt( \&n_sort, @_) };
sub n_gt  { Sort::ArbBiLex::xgt( \&n_sort, @_) };
sub n_le  { Sort::ArbBiLex::xle( \&n_sort, @_) };
sub n_ge  { Sort::ArbBiLex::xge( \&n_sort, @_) };

ok   n_lt( "a"  , "b");
ok ! n_gt( "a"  , "b");
ok ! n_le( "b"  , "a");
ok   n_le( "a"  , "b");
ok   n_le( "a"  , "a");

ok   n_gt( "b"  , "a");
ok ! n_lt( "b"  , "a");
ok ! n_ge( "a"  , "b");
ok   n_ge( "b"  , "a");
ok   n_ge( "a"  , "a");

ok -1 == n_cmp( "a"  , "b");
ok  1 == n_cmp( "b"  , "a");
ok  0 == n_cmp( "a"  , "a");


ok  0 == n_cmp( "a"  , "ax");
ok      ! n_lt( "a"  , "ax");
ok      ! n_gt( "a"  , "ax");
ok        n_le( "a"  , "ax");
ok        n_ge( "a"  , "ax");