summaryrefslogtreecommitdiff
path: root/lib/Unicode/Collate/t
diff options
context:
space:
mode:
author貞廣知行 <bqw10602@nifty.com>2001-11-12 09:22:57 +0900
committerAbhijit Menon-Sen <ams@wiw.org>2001-11-11 16:45:00 +0000
commit5398038ef5e01ea763adf26da6c759974eda549b (patch)
tree295a135181431ee829c26898e474b1faf7f0885e /lib/Unicode/Collate/t
parent14423e10a30e93d1ec7a036777ef9b915f9beb7d (diff)
downloadperl-5398038ef5e01ea763adf26da6c759974eda549b.tar.gz
Unicode::Collate v0.09
Message-Id: <20011112002232.BD46.BQW10602@nifty.com> p4raw-id: //depot/perl@12942
Diffstat (limited to 'lib/Unicode/Collate/t')
-rw-r--r--lib/Unicode/Collate/t/test.t125
1 files changed, 93 insertions, 32 deletions
diff --git a/lib/Unicode/Collate/t/test.t b/lib/Unicode/Collate/t/test.t
index 352c44fe6a..48bf412857 100644
--- a/lib/Unicode/Collate/t/test.t
+++ b/lib/Unicode/Collate/t/test.t
@@ -4,21 +4,21 @@
#########################
use Test;
-BEGIN { plan tests => 22 };
+BEGIN { plan tests => 50 };
use Unicode::Collate;
ok(1); # If we made it this far, we're ok.
#########################
-my $UCA = Unicode::Collate->new(
+my $Collator = Unicode::Collate->new(
table => 'keys.txt',
normalization => undef,
);
-ok(ref $UCA, "Unicode::Collate");
+ok(ref $Collator, "Unicode::Collate");
ok(
- join(':', $UCA->sort(
+ join(':', $Collator->sort(
qw/ lib strict Carp ExtUtils CGI Time warnings Math overload Pod CPAN /
) ),
join(':',
@@ -29,10 +29,13 @@ ok(
my $A_acute = pack('U', 0x00C1);
my $acute = pack('U', 0x0301);
-ok($UCA->cmp("A$acute", $A_acute), -1);
+ok($Collator->cmp("A$acute", $A_acute), -1);
-ok($UCA->cmp("", ""), 0);
-ok($UCA->cmp("", "perl"), -1);
+ok($Collator->cmp("", ""), 0);
+ok(! $Collator->ne("", "") );
+ok( $Collator->eq("", "") );
+
+ok($Collator->cmp("", "perl"), -1);
eval "use Unicode::Normalize";
@@ -53,6 +56,7 @@ my $tr = Unicode::Collate->new(
entry => <<'ENTRIES',
0063 0068 ; [.0893.0020.0002.0063] # "ch" in traditional Spanish
0043 0068 ; [.0893.0020.0008.0043] # "Ch" in traditional Spanish
+00DF ; [.09F3.0154.0004.00DF] [.09F3.0020.0004.00DF] # eszet in Germany
ENTRIES
);
@@ -66,7 +70,7 @@ ok(
);
ok(
- join(':', $UCA->sort(
+ join(':', $Collator->sort(
qw/ acha aca ada acia acka /
) ),
join(':',
@@ -74,36 +78,60 @@ ok(
),
);
-my $old_level = $UCA->{level};
+my $old_level = $Collator->{level};
my $hiragana = "\x{3042}\x{3044}";
my $katakana = "\x{30A2}\x{30A4}";
-$UCA->{level} = 2;
+$Collator->{level} = 2;
+
+ok( $Collator->cmp("ABC","abc"), 0);
+ok( $Collator->eq("ABC","abc") );
+ok( $Collator->le("ABC","abc") );
+ok( $Collator->cmp($hiragana, $katakana), 0);
+ok( $Collator->eq($hiragana, $katakana) );
+ok( $Collator->ge($hiragana, $katakana) );
-ok( $UCA->cmp("ABC","abc"), 0);
-ok( $UCA->cmp($hiragana, $katakana), 0);
+# hangul
+ok( $Collator->eq("a\x{AC00}b", "a\x{1100}\x{1161}b") );
+ok( $Collator->eq("a\x{AE00}b", "a\x{1100}\x{1173}\x{11AF}b") );
+ok( $Collator->gt("a\x{AE00}b", "a\x{1100}\x{1173}b\x{11AF}") );
+ok( $Collator->lt("a\x{AC00}b", "a\x{AE00}b") );
+ok( $Collator->gt("a\x{D7A3}b", "a\x{C544}b") );
+ok( $Collator->lt("a\x{C544}b", "a\x{30A2}b") ); # hangul < hiragana
-$UCA->{level} = $old_level;
+$Collator->{level} = $old_level;
-$UCA->{katakana_before_hiragana} = 1;
+$Collator->{katakana_before_hiragana} = 1;
-ok( $UCA->cmp("abc", "ABC"), -1);
-ok( $UCA->cmp($hiragana, $katakana), 1);
+ok( $Collator->cmp("abc", "ABC"), -1);
+ok( $Collator->ne("abc", "ABC") );
+ok( $Collator->lt("abc", "ABC") );
+ok( $Collator->le("abc", "ABC") );
+ok( $Collator->cmp($hiragana, $katakana), 1);
+ok( $Collator->ne($hiragana, $katakana) );
+ok( $Collator->gt($hiragana, $katakana) );
+ok( $Collator->ge($hiragana, $katakana) );
-$UCA->{upper_before_lower} = 1;
+$Collator->{upper_before_lower} = 1;
-ok( $UCA->cmp("abc", "ABC"), 1);
-ok( $UCA->cmp($hiragana, $katakana), 1);
+ok( $Collator->cmp("abc", "ABC"), 1);
+ok( $Collator->ge("abc", "ABC"), 1);
+ok( $Collator->gt("abc", "ABC"), 1);
+ok( $Collator->cmp($hiragana, $katakana), 1);
+ok( $Collator->ge($hiragana, $katakana), 1);
+ok( $Collator->gt($hiragana, $katakana), 1);
-$UCA->{katakana_before_hiragana} = 0;
+$Collator->{katakana_before_hiragana} = 0;
-ok( $UCA->cmp("abc", "ABC"), 1);
-ok( $UCA->cmp($hiragana, $katakana), -1);
+ok( $Collator->cmp("abc", "ABC"), 1);
+ok( $Collator->cmp($hiragana, $katakana), -1);
-$UCA->{upper_before_lower} = 0;
+$Collator->{upper_before_lower} = 0;
-ok( $UCA->cmp("abc", "ABC"), -1);
-ok( $UCA->cmp($hiragana, $katakana), -1);
+ok( $Collator->cmp("abc", "ABC"), -1);
+ok( $Collator->le("abc", "ABC") );
+ok( $Collator->cmp($hiragana, $katakana), -1);
+ok( $Collator->lt($hiragana, $katakana) );
my $ign = Unicode::Collate->new(
table => 'keys.txt',
@@ -113,27 +141,60 @@ my $ign = Unicode::Collate->new(
ok( $ign->cmp("element","lament"), 0);
-$UCA->{level} = 2;
+$Collator->{level} = 2;
-my $orig = "This is a Perl book.";
my $str;
+
+my $orig = "This is a Perl book.";
my $sub = "PERL";
my $rep = "camel";
my $ret = "This is a camel book.";
$str = $orig;
-if(my @tmp = $UCA->index($str, $sub)){
- substr($str, $tmp[0], $tmp[1], $rep);
+if(my($pos,$len) = $Collator->index($str, $sub)){
+ substr($str, $pos, $len, $rep);
}
ok($str, $ret);
-$UCA->{level} = $old_level;
+$Collator->{level} = $old_level;
$str = $orig;
-if(my @tmp = $UCA->index($str, $sub)){
- substr($str, $tmp[0], $tmp[1], $rep);
+if(my($pos,$len) = $Collator->index($str, $sub)){
+ substr($str, $pos, $len, $rep);
}
ok($str, $orig);
+$tr->{level} = 1;
+
+$str = "Ich mu\x{00DF} studieren.";
+$sub = "m\x{00FC}ss";
+my $match = undef;
+if(my($pos, $len) = $tr->index($str, $sub)){
+ $match = substr($str, $pos, $len);
+}
+ok($match, "mu\x{00DF}");
+
+$tr->{level} = $old_level;
+
+$str = "Ich mu\x{00DF} studieren.";
+$sub = "m\x{00FC}ss";
+$match = undef;
+if(my($pos, $len) = $tr->index($str, $sub)){
+ $match = substr($str, $pos, $len);
+}
+ok($match, undef);
+
+$match = undef;
+if(my($pos,$len) = $Collator->index("", "")){
+ $match = substr("", $pos, $len);
+}
+ok($match, "");
+
+$match = undef;
+if(my($pos,$len) = $Collator->index("", "abc")){
+ $match = substr("", $pos, $len);
+}
+ok($match, undef);
+