diff options
author | 貞廣知行 <bqw10602@nifty.com> | 2001-11-12 09:22:57 +0900 |
---|---|---|
committer | Abhijit Menon-Sen <ams@wiw.org> | 2001-11-11 16:45:00 +0000 |
commit | 5398038ef5e01ea763adf26da6c759974eda549b (patch) | |
tree | 295a135181431ee829c26898e474b1faf7f0885e /lib/Unicode/Collate/t | |
parent | 14423e10a30e93d1ec7a036777ef9b915f9beb7d (diff) | |
download | perl-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.t | 125 |
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); + |