summaryrefslogtreecommitdiff
path: root/cpan/Unicode-Collate
diff options
context:
space:
mode:
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>2011-10-02 19:36:35 +0100
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>2011-10-02 19:36:35 +0100
commitbd65daabad8a8b02a5d670456ceb2ca31f9d26cd (patch)
tree6d30b6e06e393e3fd587c55c259aea45a77cf631 /cpan/Unicode-Collate
parenta2fa999d41c94d622051667d897fedca90be1828 (diff)
downloadperl-bd65daabad8a8b02a5d670456ceb2ca31f9d26cd.tar.gz
Update Unicode-Collate to CPAN version 0.79
[DELTA] 0.79 Sun Oct 2 20:31:01 2011 - pod: [rt.cpan.org #70241] Fix minor grammar error in manpage by Harlan Lieberman-Berg. - 'suppress' no longer affects contractions via 'entry'. - U::C::Locale newly supports locales: as, fi__phonebook, gu. - added loc_as.t, loc_fiph.t, loc_gu in t. - updated some locales to CLDR 2.0 : ar, be, bg.
Diffstat (limited to 'cpan/Unicode-Collate')
-rw-r--r--cpan/Unicode-Collate/Changes8
-rw-r--r--cpan/Unicode-Collate/Collate.pm13
-rw-r--r--cpan/Unicode-Collate/Collate/Locale.pm83
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/ar.pl13
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/as.pl9
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/be.pl42
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/bg.pl44
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/fi_phone.pl61
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/gu.pl7
-rw-r--r--cpan/Unicode-Collate/README2
-rw-r--r--cpan/Unicode-Collate/t/contract.t10
-rw-r--r--cpan/Unicode-Collate/t/default.t18
-rw-r--r--cpan/Unicode-Collate/t/loc_ar.t41
-rw-r--r--cpan/Unicode-Collate/t/loc_as.t41
-rw-r--r--cpan/Unicode-Collate/t/loc_be.t203
-rw-r--r--cpan/Unicode-Collate/t/loc_bg.t178
-rw-r--r--cpan/Unicode-Collate/t/loc_ca.t36
-rw-r--r--cpan/Unicode-Collate/t/loc_fiph.t149
-rw-r--r--cpan/Unicode-Collate/t/loc_gu.t41
19 files changed, 787 insertions, 212 deletions
diff --git a/cpan/Unicode-Collate/Changes b/cpan/Unicode-Collate/Changes
index 4794583db7..f7c6e30f8d 100644
--- a/cpan/Unicode-Collate/Changes
+++ b/cpan/Unicode-Collate/Changes
@@ -1,5 +1,13 @@
Revision history for Perl module Unicode::Collate.
+0.79 Sun Oct 2 20:31:01 2011
+ - pod: [rt.cpan.org #70241] Fix minor grammar error in manpage
+ by Harlan Lieberman-Berg.
+ - 'suppress' no longer affects contractions via 'entry'.
+ - U::C::Locale newly supports locales: as, fi__phonebook, gu.
+ - added loc_as.t, loc_fiph.t, loc_gu in t.
+ - updated some locales to CLDR 2.0 : ar, be, bg.
+
0.78 Mon Jul 25 21:29:50 2011
- tried fixing the tarball with world writable files.
( http://www.perlmonks.org/?node_id=731935 )
diff --git a/cpan/Unicode-Collate/Collate.pm b/cpan/Unicode-Collate/Collate.pm
index fac2cce993..7a86032c3d 100644
--- a/cpan/Unicode-Collate/Collate.pm
+++ b/cpan/Unicode-Collate/Collate.pm
@@ -14,7 +14,7 @@ use File::Spec;
no warnings 'utf8';
-our $VERSION = '0.78';
+our $VERSION = '0.79';
our $PACKAGE = __PACKAGE__;
### begin XS only ###
@@ -269,7 +269,7 @@ sub new
if ($self->{entry}) {
while ($self->{entry} =~ /([^\n]+)/g) {
- $self->parseEntry($1);
+ $self->parseEntry($1, TRUE);
}
}
@@ -367,6 +367,7 @@ sub parseEntry
{
my $self = shift;
my $line = shift;
+ my $tailoring = shift;
my($name, $entry, @uv, @key);
if (defined $self->{rewrite}) {
@@ -387,7 +388,7 @@ sub parseEntry
@uv = _getHexArray($e);
return if !@uv;
- return if @uv > 1 && $self->{suppressHash} &&
+ return if @uv > 1 && $self->{suppressHash} && !$tailoring &&
exists $self->{suppressHash}{$uv[0]};
$entry = join(CODE_SEP, @uv); # in JCPS
@@ -1443,7 +1444,7 @@ rewriting lines on reading an unmodified table every time.
UTS #35 (LDML).
Contractions beginning with the specified characters are suppressed,
-even if those contractions are defined in C<table> or C<entry>.
+even if those contractions are defined in C<table>.
An example for Russian and some languages using the Cyrillic script:
@@ -1451,6 +1452,8 @@ An example for Russian and some languages using the Cyrillic script:
where 0x0400 stands for C<U+0400>, CYRILLIC CAPITAL LETTER IE WITH GRAVE.
+B<NOTE>: Contractions via C<entry> are not be suppressed.
+
=item table
-- see 3.2 Default Unicode Collation Element Table, UTS #10.
@@ -1534,7 +1537,7 @@ this parameter doesn't work validly.
-- see 3.2.2 Variable Weighting, UTS #10.
-This key allows to variable weighting for variable collation elements,
+This key allows for variable weighting of variable collation elements,
which are marked with an ASTERISK in the table
(NOTE: Many punctuation marks and symbols are variable in F<allkeys.txt>).
diff --git a/cpan/Unicode-Collate/Collate/Locale.pm b/cpan/Unicode-Collate/Collate/Locale.pm
index 749c64c23b..92bdf249cb 100644
--- a/cpan/Unicode-Collate/Collate/Locale.pm
+++ b/cpan/Unicode-Collate/Collate/Locale.pm
@@ -4,7 +4,7 @@ use strict;
use Carp;
use base qw(Unicode::Collate);
-our $VERSION = '0.76';
+our $VERSION = '0.79';
use File::Spec;
@@ -12,15 +12,14 @@ use File::Spec;
my $PL_EXT = '.pl';
my %LocaleFile = map { ($_, $_) } qw(
- af ar az ca cs cy da eo es et fi fil fo fr ha haw
- hr hu hy ig is ja kk kl ko lt lv mt nb nn nso om pl ro ru
- se sk sl sq sv tn to tr uk vi wo yo zh
+ af ar as az be bg ca cs cy da eo es et fi fil fo fr gu
+ ha haw hr hu hy ig is ja kk kl ko lt lv mt nb nn nso om
+ pl ro ru se sk sl sq sv tn to tr uk vi wo yo zh
);
$LocaleFile{'default'} = '';
$LocaleFile{'de__phonebook'} = 'de_phone';
$LocaleFile{'es__traditional'} = 'es_trad';
- $LocaleFile{'be'} = 'ru';
- $LocaleFile{'bg'} = 'ru';
+ $LocaleFile{'fi__phonebook'} = 'fi_phone';
$LocaleFile{'mk'} = 'ru';
$LocaleFile{'sr'} = 'ru';
$LocaleFile{'zh__big5han'} = 'zh_big5';
@@ -84,6 +83,73 @@ sub new {
1;
__END__
+MEMORANDA for developing
+
+locale based CLDR
+----------------------------------------------------------------------------
+af 2.0 = 1.8.1
+ar 2.0
+as 2.0 = 1.8.1
+az 2.0 = 1.8.1
+be 2.0
+bg 2.0
+ca 2.0 = 1.8.1 (alt="proposed" type="standard")
+cs 2.0 = 1.8.1 (type="standard")
+cy 2.0 = 1.8.1
+da 2.0 = 1.8.1 (type="standard") [AA's to pass CLDR tests]
+de__phonebook 2.0 (type="phonebook")
+eo 2.0 = 1.8.1
+es 2.0 (type="standard")
+es__traditional 2.0 = 1.8.1 (type="traditional")
+et 2.0 = 1.8.1
+fi 2.0 = 1.8.1 (type="standard" alt="proposed")
+fi__phonebook 2.0 = 1.8.1 (type="phonebook")
+fil 2.0 (type="standard") = 1.8.1
+fo 2.0 = 1.8.1 (alt="proposed" type="standard")
+fr 2.0 (fr_CA, backwards="on")
+gu 2.0 (type="standard")
+ha
+haw
+hr
+hu
+hy
+ig
+is
+ja
+kk
+kl
+ko
+lt
+lv
+mk
+mt
+nb
+nn
+nso
+om
+pl
+ro
+ru
+se
+sk
+sl
+sq
+sr
+sv
+tn
+to
+tr
+uk
+vi
+wo
+yo
+zh
+zh__big5han
+zh__gb2312han
+zh__pinyin
+zh__stroke
+----------------------------------------------------------------------------
+
=head1 NAME
Unicode::Collate::Locale - Linguistic tailoring for DUCET via Unicode::Collate
@@ -190,6 +256,7 @@ this method returns a string C<'default'> meaning no special tailoring.
----------------------------------------------------------
af Afrikaans
ar Arabic
+ as Assamese
az Azerbaijani (Azeri)
be Belarusian
bg Bulgarian
@@ -202,10 +269,12 @@ this method returns a string C<'default'> meaning no special tailoring.
es Spanish
es__traditional Spanish ('ch' and 'll' as a grapheme)
et Estonian
- fi Finnish
+ fi Finnish (v and w are primary equal)
+ fi__phonebook Finnish (v and w as separate characters)
fil Filipino
fo Faroese
fr French
+ gu Gujarati
ha Hausa
haw Hawaiian
hr Croatian
diff --git a/cpan/Unicode-Collate/Collate/Locale/ar.pl b/cpan/Unicode-Collate/Collate/Locale/ar.pl
index 516e02dfd2..bd71ba234c 100644
--- a/cpan/Unicode-Collate/Collate/Locale/ar.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/ar.pl
@@ -1,7 +1,14 @@
+{
entry => <<'ENTRY', # for DUCET v6.0.0
-0629 ; [.1C54.0020.0002.062A] # ARABIC LETTER TEH MARBUTA
-FE93 ; [.1C54.0020.0002.062A] # ARABIC LETTER TEH MARBUTA ISOLATED FORM
-FE94 ; [.1C54.0020.0002.062A] # ARABIC LETTER TEH MARBUTA FINAL FORM
+0629 ; [.1C54.0021.0002.0629] # ARABIC LETTER TEH MARBUTA
+FE94 ; [.1C54.0021.0019.FE94] # ARABIC LETTER TEH MARBUTA FINAL FORM
+FE93 ; [.1C54.0021.001A.FE93] # ARABIC LETTER TEH MARBUTA ISOLATED FORM
+0649 ; [.1CE9.0021.0002.0649] # ARABIC LETTER ALEF MAKSURA
+FBE8 ; [.1CE9.0021.0017.FBE8] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+FBE9 ; [.1CE9.0021.0018.FBE9] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+FEF0 ; [.1CE9.0021.0019.FEF0] # ARABIC LETTER ALEF MAKSURA FINAL FORM
+FEEF ; [.1CE9.0021.001A.FEEF] # ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+FC90 ; [.1CE9.0021.001B.FC90] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+FC5D ; [.1CE9.0021.001C.FC5D] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
ENTRY
};
diff --git a/cpan/Unicode-Collate/Collate/Locale/as.pl b/cpan/Unicode-Collate/Collate/Locale/as.pl
new file mode 100644
index 0000000000..b9a51de160
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/as.pl
@@ -0,0 +1,9 @@
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0982 ; [.1FE8.0020.0002.0982][.FFF1.0000.0000.0000] # BENGALI SIGN ANUSVARA
+0981 ; [.1FE8.0020.0002.0981][.FFF2.0000.0000.0000] # BENGALI SIGN CANDRABINDU
+0983 ; [.1FE8.0020.0002.0983][.FFF3.0000.0000.0000] # BENGALI SIGN VISARGA
+09A4 09CD 200D ; [.1FF7.0020.0002.09A4][.FFF1.0000.0000.0000] # <BENGALI LETTER TA, BENGALI SIGN VIRAMA, ZERO WIDTH JOINER>
+0995 09CD 09B7 ; [.200A.0020.0002.0995][.FFF1.0000.0000.0000] # <BENGALI LETTER KA, BENGALI SIGN VIRAMA, BENGALI LETTER SSA>
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/be.pl b/cpan/Unicode-Collate/Collate/Locale/be.pl
new file mode 100644
index 0000000000..3e7684f900
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/be.pl
@@ -0,0 +1,42 @@
++{
+ suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
+ 0x0416, 0x0436, 0x0417, 0x0437, 0x0406, 0x0456, 0x041E, 0x043E,
+ 0x04E8, 0x04E9, 0x041A, 0x043A, 0x0427, 0x0447, 0x042B, 0x044B,
+ 0x042D, 0x044D, 0x0474, 0x0475],
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0451 ; [.198C.0020.0002.0451] # CYRILLIC SMALL LETTER IO
+0435 0308 ; [.198C.0020.0002.0451] # CYRILLIC SMALL LETTER IO
+0401 ; [.198C.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
+0415 0308 ; [.198C.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
+04D1 ; [.1943.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1943.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1943.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1943.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.194F.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.194F.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453 ; [.1963.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.1963.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.198B.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.198B.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.1997.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.1997.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.19A4.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19A4.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+0457 ; [.19C8.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407 ; [.19C8.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+04E7 ; [.1A29.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A29.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A31.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A31.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C ; [.19DA.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.19DA.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+04F5 ; [.1ABE.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1ABE.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1AF1.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1AF1.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.1B06.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B06.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B3C.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B3C.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/bg.pl b/cpan/Unicode-Collate/Collate/Locale/bg.pl
new file mode 100644
index 0000000000..8b4c808371
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/bg.pl
@@ -0,0 +1,44 @@
++{
+ suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
+ 0x0416, 0x0436, 0x0417, 0x0437, 0x0406, 0x0456, 0x041E, 0x043E,
+ 0x04E8, 0x04E9, 0x041A, 0x043A, 0x0423, 0x0443, 0x0427, 0x0447,
+ 0x042B, 0x044B, 0x042D, 0x044D, 0x0474, 0x0475],
+ entry => <<'ENTRY', # for DUCET v6.0.0
+04D1 ; [.1943.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1943.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1943.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1943.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.194F.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.194F.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453 ; [.1963.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.1963.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.198B.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.198B.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.1997.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.1997.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.19A4.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19A4.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+0457 ; [.19C8.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407 ; [.19C8.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+04E7 ; [.1A29.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A29.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A31.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A31.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C ; [.19DA.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.19DA.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E ; [.1A6B.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.1A6B.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.1A6B.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.1A6B.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.1A6B.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.1A6B.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5 ; [.1ABE.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1ABE.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1AF1.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1AF1.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.1B06.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B06.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B3C.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B3C.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl b/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl
new file mode 100644
index 0000000000..850ddd7f48
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl
@@ -0,0 +1,61 @@
++{
+# in cldr test/fi.xml why x{110}x < xdx though xd < x{110} ?
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0111 ; [.15E4.0021.0002.0111][.0000.007D.0002.0335] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.15E4.0021.0008.0110][.0000.007D.0002.0335] # LATIN CAPITAL LETTER D WITH STROKE
+01E5 ; [.1644.0021.0002.01E5][.0000.007D.0002.0335] # LATIN SMALL LETTER G WITH STROKE
+01E4 ; [.1644.0021.0008.01E4][.0000.007D.0002.0335] # LATIN CAPITAL LETTER G WITH STROKE
+014B ; [.1702.0021.0002.014B][.0000.007D.0002.0335] # LATIN SMALL LETTER ENG
+014A ; [.1702.0021.0008.014A][.0000.007D.0002.0335] # LATIN CAPITAL LETTER ENG
+0167 ; [.17C9.0021.0002.0167][.0000.007D.0002.0335] # LATIN SMALL LETTER T WITH STROKE
+0166 ; [.17C9.0021.0008.0166][.0000.007D.0002.0335] # LATIN CAPITAL LETTER T WITH STROKE
+00FC ; [.1833.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1833.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1833.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1833.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1833.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1833.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1833.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1833.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1833.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1833.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1833.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1833.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0292 ; [.1844.0021.0002.0292][.0000.007D.0002.0335] # LATIN SMALL LETTER EZH
+01B7 ; [.1844.0021.0008.01B7][.0000.007D.0002.0335] # LATIN CAPITAL LETTER EZH
+01EF ; [.1844.0021.0002.0292][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN SMALL LETTER EZH WITH CARON
+01EE ; [.1844.0021.0008.01B7][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN CAPITAL LETTER EZH WITH CARON
+00E5 ; [.18B9.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.18B9.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.18B9.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.18B9.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.18B9.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.18B9.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.18B9.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00E4 ; [.18BA.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.18BA.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.18BA.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.18BA.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.18BA.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.18BA.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00E6 ; [.18BA.0021.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.18BA.0021.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.18BA.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.18BA.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.18BA.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.18BA.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.18BA.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00F6 ; [.18BB.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.18BB.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.18BB.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.18BB.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.18BB.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.18BB.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00F8 ; [.18BB.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.18BB.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.18BB.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.18BB.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.18BB.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.18BB.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/gu.pl b/cpan/Unicode-Collate/Collate/Locale/gu.pl
new file mode 100644
index 0000000000..0f630c8336
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/gu.pl
@@ -0,0 +1,7 @@
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0A82 ; [.2054.0020.0002.0A82][.FFF1.0000.0000.0000] # GUJARATI SIGN ANUSVARA
+0A81 ; [.2054.0021.0002.0A81][.FFF1.0000.0000.0A81] # GUJARATI SIGN CANDRABINDU
+0A83 ; [.2054.0020.0002.0A83][.FFF2.0000.0000.0000] # GUJARATI SIGN VISARGA
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/README b/cpan/Unicode-Collate/README
index 89368c69a7..f5c99b8280 100644
--- a/cpan/Unicode-Collate/README
+++ b/cpan/Unicode-Collate/README
@@ -1,4 +1,4 @@
-Unicode/Collate version 0.78
+Unicode/Collate version 0.79
===============================
NAME
diff --git a/cpan/Unicode-Collate/t/contract.t b/cpan/Unicode-Collate/t/contract.t
index af141066a4..f66733bba6 100644
--- a/cpan/Unicode-Collate/t/contract.t
+++ b/cpan/Unicode-Collate/t/contract.t
@@ -150,7 +150,7 @@ ok($aaNoN->lt("Z", "A\x{30A}\x{31A}"));
# 40
-# suppress contractions
+# suppress contractions (not affected)
my $kjeSup = Unicode::Collate->new(
level => 1,
@@ -160,10 +160,10 @@ my $kjeSup = Unicode::Collate->new(
suppress => [0x400..0x45F],
);
-ok($kjeSup->eq("\x{43A}", "\x{43A}\x{301}"));
-ok($kjeSup->gt("\x{45C}", "\x{43A}\x{301}"));
-ok($kjeSup->eq("\x{41A}", "\x{41A}\x{301}"));
-ok($kjeSup->gt("\x{40C}", "\x{41A}\x{301}"));
+ok($kjeSup->lt("\x{43A}", "\x{43A}\x{301}"));
+ok($kjeSup->eq("\x{45C}", "\x{43A}\x{301}"));
+ok($kjeSup->lt("\x{41A}", "\x{41A}\x{301}"));
+ok($kjeSup->eq("\x{40C}", "\x{41A}\x{301}"));
# 44
diff --git a/cpan/Unicode-Collate/t/default.t b/cpan/Unicode-Collate/t/default.t
index 72bbdc2e50..e3ada75ef3 100644
--- a/cpan/Unicode-Collate/t/default.t
+++ b/cpan/Unicode-Collate/t/default.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 56 };
+BEGIN { plan tests => 60 };
use strict;
use warnings;
@@ -142,3 +142,19 @@ ok( $Collator->le("abc", "ABC") );
ok( $Collator->cmp($hiragana, $katakana), -1);
ok( $Collator->lt($hiragana, $katakana) );
+##### 55..60
+
+$Collator->change(level => 1);
+
+my $SupCyril = Unicode::Collate->new(
+ normalization => undef,
+ suppress => [0x400..0x4FF],
+ level => 1,
+);
+
+# Ka vs Kje
+ok($Collator->gt("\x{45C}", "\x{43A}"));
+ok($Collator->gt("\x{40C}", "\x{41A}"));
+ok($SupCyril->gt("\x{45C}", "\x{43A}"));
+ok($SupCyril->gt("\x{40C}", "\x{41A}"));
+
diff --git a/cpan/Unicode-Collate/t/loc_ar.t b/cpan/Unicode-Collate/t/loc_ar.t
index 089c30b899..4faabda1c6 100644
--- a/cpan/Unicode-Collate/t/loc_ar.t
+++ b/cpan/Unicode-Collate/t/loc_ar.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 8 };
+BEGIN { plan tests => 30 };
use strict;
use warnings;
@@ -30,13 +30,40 @@ ok($objAr->getlocale, 'ar');
$objAr->change(level => 1);
ok($objAr->eq("\x{62A}", "\x{629}"));
-ok($objAr->eq("\x{62A}", "\x{FE93}"));
-ok($objAr->eq("\x{62A}", "\x{FE94}"));
+ok($objAr->eq("\x{64A}", "\x{649}"));
+
+# 4
+
+$objAr->change(level => 2);
+
+ok($objAr->lt("\x{62A}", "\x{629}"));
+ok($objAr->eq("\x{629}", "\x{FE94}"));
+ok($objAr->eq("\x{FE94}","\x{FE93}"));
+
+ok($objAr->lt("\x{64A}", "\x{649}"));
+ok($objAr->eq("\x{649}", "\x{FBE8}"));
+ok($objAr->eq("\x{FBE8}","\x{FBE9}"));
+ok($objAr->eq("\x{FBE9}","\x{FEF0}"));
+ok($objAr->eq("\x{FEF0}","\x{FEEF}"));
+ok($objAr->eq("\x{FEEF}","\x{FC90}"));
+ok($objAr->eq("\x{FC90}","\x{FC5D}"));
+
+# 14
$objAr->change(level => 3);
-ok($objAr->eq("\x{62A}", "\x{629}"));
-ok($objAr->eq("\x{62A}", "\x{FE93}"));
-ok($objAr->eq("\x{62A}", "\x{FE94}"));
+for my $up_lo (0, 1) {
+ $objAr->change(upper_before_lower => $up_lo);
+
+ ok($objAr->lt("\x{629}", "\x{FE94}"));
+ ok($objAr->lt("\x{FE94}","\x{FE93}"));
+
+ ok($objAr->lt("\x{649}", "\x{FBE8}"));
+ ok($objAr->lt("\x{FBE8}","\x{FBE9}"));
+ ok($objAr->lt("\x{FBE9}","\x{FEF0}"));
+ ok($objAr->lt("\x{FEF0}","\x{FEEF}"));
+ ok($objAr->lt("\x{FEEF}","\x{FC90}"));
+ ok($objAr->lt("\x{FC90}","\x{FC5D}"));
+}
-# 8
+# 30
diff --git a/cpan/Unicode-Collate/t/loc_as.t b/cpan/Unicode-Collate/t/loc_as.t
new file mode 100644
index 0000000000..12e513fb40
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_as.t
@@ -0,0 +1,41 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 10 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objAs = Unicode::Collate::Locale->
+ new(locale => 'AS', normalization => undef);
+
+ok($objAs->getlocale, 'as');
+
+$objAs->change(level => 1);
+
+ok($objAs->lt("\x{994}", "\x{982}"));
+ok($objAs->lt("\x{982}", "\x{981}"));
+ok($objAs->lt("\x{981}", "\x{983}"));
+ok($objAs->lt("\x{983}", "\x{995}"));
+
+ok($objAs->lt("\x{9A3}","\x{9A4}\x{9CD}\x{200D}"));
+ok($objAs->lt("\x{9A4}\x{9CD}\x{200D}","\x{9A4}"));
+
+ok($objAs->lt("\x{9B9}", "\x{995}\x{9CD}\x{9B7}"));
+ok($objAs->lt("\x{995}\x{9CD}\x{9B7}", "\x{9BD}"));
diff --git a/cpan/Unicode-Collate/t/loc_be.t b/cpan/Unicode-Collate/t/loc_be.t
index 708b03d255..f9d20d9c30 100644
--- a/cpan/Unicode-Collate/t/loc_be.t
+++ b/cpan/Unicode-Collate/t/loc_be.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 130 };
+BEGIN { plan tests => 190 };
use strict;
use warnings;
@@ -29,149 +29,174 @@ ok($objBe->getlocale, 'be');
$objBe->change(level => 1);
-ok($objBe->gt("\x{4E5}", "\x{438}"));
-ok($objBe->gt("\x{4E4}", "\x{418}"));
-ok($objBe->gt("\x{439}", "\x{438}"));
-ok($objBe->gt("\x{419}", "\x{418}"));
+ok($objBe->gt("\x{451}", "\x{435}"));
+ok($objBe->gt("\x{401}", "\x{415}"));
+ok($objBe->lt("\x{451}", "\x{454}"));
+ok($objBe->lt("\x{401}", "\x{404}"));
-# 6
+ok($objBe->gt("\x{4E5}", "\x{438}")); # not suppressed
+ok($objBe->gt("\x{4E4}", "\x{418}")); # not suppressed
+ok($objBe->gt("\x{439}", "\x{438}")); # not suppressed
+ok($objBe->gt("\x{419}", "\x{418}")); # not suppressed
+ok($objBe->gt("\x{45E}", "\x{443}")); # not suppressed
+ok($objBe->gt("\x{40E}", "\x{423}")); # not suppressed
+ok($objBe->gt("\x{4F1}", "\x{443}")); # not suppressed
+ok($objBe->gt("\x{4F0}", "\x{423}")); # not suppressed
+ok($objBe->gt("\x{4F3}", "\x{443}")); # not suppressed
+ok($objBe->gt("\x{4F2}", "\x{423}")); # not suppressed
+
+# 16
ok($objBe->eq("\x{4D1}", "\x{430}"));
ok($objBe->eq("\x{4D0}", "\x{410}"));
ok($objBe->eq("\x{4D3}", "\x{430}"));
ok($objBe->eq("\x{4D2}", "\x{410}"));
+ok($objBe->eq("\x{4DB}", "\x{4D9}"));
+ok($objBe->eq("\x{4DA}", "\x{4D8}"));
ok($objBe->eq("\x{453}", "\x{433}"));
ok($objBe->eq("\x{403}", "\x{413}"));
+ok($objBe->eq("\x{450}", "\x{435}")); # not contraction
+ok($objBe->eq("\x{400}", "\x{415}")); # not contraction
ok($objBe->eq("\x{4D7}", "\x{435}"));
ok($objBe->eq("\x{4D6}", "\x{415}"));
+ok($objBe->eq("\x{4C2}", "\x{436}")); # not contraction
+ok($objBe->eq("\x{4C1}", "\x{416}")); # not contraction
ok($objBe->eq("\x{4DD}", "\x{436}"));
ok($objBe->eq("\x{4DC}", "\x{416}"));
ok($objBe->eq("\x{4DF}", "\x{437}"));
ok($objBe->eq("\x{4DE}", "\x{417}"));
+ok($objBe->eq("\x{45D}", "\x{438}")); # not contraction
+ok($objBe->eq("\x{40D}", "\x{418}")); # not contraction
+ok($objBe->eq("\x{4E3}", "\x{438}")); # not contraction
+ok($objBe->eq("\x{4E2}", "\x{418}")); # not contraction
ok($objBe->eq("\x{457}", "\x{456}"));
ok($objBe->eq("\x{407}", "\x{406}"));
ok($objBe->eq("\x{4E7}", "\x{43E}"));
ok($objBe->eq("\x{4E6}", "\x{41E}"));
+ok($objBe->eq("\x{4EB}", "\x{4E9}"));
+ok($objBe->eq("\x{4EA}", "\x{4E8}"));
ok($objBe->eq("\x{45C}", "\x{43A}"));
ok($objBe->eq("\x{40C}", "\x{41A}"));
-ok($objBe->eq("\x{45E}", "\x{443}"));
-ok($objBe->eq("\x{40E}", "\x{423}"));
-ok($objBe->eq("\x{4F1}", "\x{443}"));
-ok($objBe->eq("\x{4F0}", "\x{423}"));
-ok($objBe->eq("\x{4F3}", "\x{443}"));
-ok($objBe->eq("\x{4F2}", "\x{423}"));
+ok($objBe->eq("\x{4EF}", "\x{443}")); # not contraction
+ok($objBe->eq("\x{4EE}", "\x{423}")); # not contraction
ok($objBe->eq("\x{4F5}", "\x{447}"));
ok($objBe->eq("\x{4F4}", "\x{427}"));
ok($objBe->eq("\x{4F9}", "\x{44B}"));
ok($objBe->eq("\x{4F8}", "\x{42B}"));
ok($objBe->eq("\x{4ED}", "\x{44D}"));
ok($objBe->eq("\x{4EC}", "\x{42D}"));
+ok($objBe->eq("\x{477}", "\x{475}"));
+ok($objBe->eq("\x{476}", "\x{474}"));
-# 36
+# 56
$objBe->change(level => 2);
+ok($objBe->eq("\x{451}", "\x{401}"));
+
ok($objBe->gt("\x{4D1}", "\x{430}"));
ok($objBe->gt("\x{4D0}", "\x{410}"));
ok($objBe->gt("\x{4D3}", "\x{430}"));
ok($objBe->gt("\x{4D2}", "\x{410}"));
+ok($objBe->gt("\x{4DB}", "\x{4D9}"));
+ok($objBe->gt("\x{4DA}", "\x{4D8}"));
ok($objBe->gt("\x{453}", "\x{433}"));
ok($objBe->gt("\x{403}", "\x{413}"));
+ok($objBe->gt("\x{450}", "\x{435}")); # not contraction
+ok($objBe->gt("\x{400}", "\x{415}")); # not contraction
ok($objBe->gt("\x{4D7}", "\x{435}"));
ok($objBe->gt("\x{4D6}", "\x{415}"));
+ok($objBe->gt("\x{4C2}", "\x{436}")); # not contraction
+ok($objBe->gt("\x{4C1}", "\x{416}")); # not contraction
ok($objBe->gt("\x{4DD}", "\x{436}"));
ok($objBe->gt("\x{4DC}", "\x{416}"));
ok($objBe->gt("\x{4DF}", "\x{437}"));
ok($objBe->gt("\x{4DE}", "\x{417}"));
+ok($objBe->gt("\x{45D}", "\x{438}")); # not contraction
+ok($objBe->gt("\x{40D}", "\x{418}")); # not contraction
+ok($objBe->gt("\x{4E3}", "\x{438}")); # not contraction
+ok($objBe->gt("\x{4E2}", "\x{418}")); # not contraction
ok($objBe->gt("\x{457}", "\x{456}"));
ok($objBe->gt("\x{407}", "\x{406}"));
ok($objBe->gt("\x{4E7}", "\x{43E}"));
ok($objBe->gt("\x{4E6}", "\x{41E}"));
+ok($objBe->gt("\x{4EB}", "\x{4E9}"));
+ok($objBe->gt("\x{4EA}", "\x{4E8}"));
ok($objBe->gt("\x{45C}", "\x{43A}"));
ok($objBe->gt("\x{40C}", "\x{41A}"));
-ok($objBe->gt("\x{45E}", "\x{443}"));
-ok($objBe->gt("\x{40E}", "\x{423}"));
-ok($objBe->gt("\x{4F1}", "\x{443}"));
-ok($objBe->gt("\x{4F0}", "\x{423}"));
-ok($objBe->gt("\x{4F3}", "\x{443}"));
-ok($objBe->gt("\x{4F2}", "\x{423}"));
+ok($objBe->gt("\x{4EF}", "\x{443}")); # not contraction
+ok($objBe->gt("\x{4EE}", "\x{423}")); # not contraction
ok($objBe->gt("\x{4F5}", "\x{447}"));
ok($objBe->gt("\x{4F4}", "\x{427}"));
ok($objBe->gt("\x{4F9}", "\x{44B}"));
ok($objBe->gt("\x{4F8}", "\x{42B}"));
ok($objBe->gt("\x{4ED}", "\x{44D}"));
ok($objBe->gt("\x{4EC}", "\x{42D}"));
+ok($objBe->gt("\x{477}", "\x{475}"));
+ok($objBe->gt("\x{476}", "\x{474}"));
-# 66
+# 97
$objBe->change(level => 3);
-ok($objBe->eq("\x{4D1}", "\x{430}\x{306}"));
-ok($objBe->eq("\x{4D0}", "\x{410}\x{306}"));
-ok($objBe->eq("\x{4D3}", "\x{430}\x{308}"));
-ok($objBe->eq("\x{4D2}", "\x{410}\x{308}"));
-ok($objBe->eq("\x{453}", "\x{433}\x{301}"));
-ok($objBe->eq("\x{403}", "\x{413}\x{301}"));
-ok($objBe->eq("\x{4D7}", "\x{435}\x{306}"));
-ok($objBe->eq("\x{4D6}", "\x{415}\x{306}"));
-ok($objBe->eq("\x{4DD}", "\x{436}\x{308}"));
-ok($objBe->eq("\x{4DC}", "\x{416}\x{308}"));
-ok($objBe->eq("\x{4DF}", "\x{437}\x{308}"));
-ok($objBe->eq("\x{4DE}", "\x{417}\x{308}"));
-ok($objBe->eq("\x{4E5}", "\x{438}\x{308}"));
-ok($objBe->eq("\x{4E4}", "\x{418}\x{308}"));
-ok($objBe->eq("\x{457}", "\x{456}\x{308}"));
-ok($objBe->eq("\x{407}", "\x{406}\x{308}"));
-ok($objBe->eq("\x{439}", "\x{438}\x{306}"));
-ok($objBe->eq("\x{419}", "\x{418}\x{306}"));
-ok($objBe->eq("\x{4E7}", "\x{43E}\x{308}"));
-ok($objBe->eq("\x{4E6}", "\x{41E}\x{308}"));
-ok($objBe->eq("\x{45C}", "\x{43A}\x{301}"));
-ok($objBe->eq("\x{40C}", "\x{41A}\x{301}"));
-ok($objBe->eq("\x{45E}", "\x{443}\x{306}"));
-ok($objBe->eq("\x{40E}", "\x{423}\x{306}"));
-ok($objBe->eq("\x{4F1}", "\x{443}\x{308}"));
-ok($objBe->eq("\x{4F0}", "\x{423}\x{308}"));
-ok($objBe->eq("\x{4F3}", "\x{443}\x{30B}"));
-ok($objBe->eq("\x{4F2}", "\x{423}\x{30B}"));
-ok($objBe->eq("\x{4F5}", "\x{447}\x{308}"));
-ok($objBe->eq("\x{4F4}", "\x{427}\x{308}"));
-ok($objBe->eq("\x{4F9}", "\x{44B}\x{308}"));
-ok($objBe->eq("\x{4F8}", "\x{42B}\x{308}"));
-ok($objBe->eq("\x{4ED}", "\x{44D}\x{308}"));
-ok($objBe->eq("\x{4EC}", "\x{42D}\x{308}"));
-
-# 100
-
-ok($objBe->eq("\x{4D1}", "\x{430}\0\x{306}"));
-ok($objBe->eq("\x{4D0}", "\x{410}\0\x{306}"));
-ok($objBe->eq("\x{4D3}", "\x{430}\0\x{308}"));
-ok($objBe->eq("\x{4D2}", "\x{410}\0\x{308}"));
-ok($objBe->eq("\x{453}", "\x{433}\0\x{301}"));
-ok($objBe->eq("\x{403}", "\x{413}\0\x{301}"));
-ok($objBe->eq("\x{4D7}", "\x{435}\0\x{306}"));
-ok($objBe->eq("\x{4D6}", "\x{415}\0\x{306}"));
-ok($objBe->eq("\x{4DD}", "\x{436}\0\x{308}"));
-ok($objBe->eq("\x{4DC}", "\x{416}\0\x{308}"));
-ok($objBe->eq("\x{4DF}", "\x{437}\0\x{308}"));
-ok($objBe->eq("\x{4DE}", "\x{417}\0\x{308}"));
-ok($objBe->eq("\x{457}", "\x{456}\0\x{308}"));
-ok($objBe->eq("\x{407}", "\x{406}\0\x{308}"));
-ok($objBe->eq("\x{4E7}", "\x{43E}\0\x{308}"));
-ok($objBe->eq("\x{4E6}", "\x{41E}\0\x{308}"));
-ok($objBe->eq("\x{45C}", "\x{43A}\0\x{301}"));
-ok($objBe->eq("\x{40C}", "\x{41A}\0\x{301}"));
-ok($objBe->eq("\x{45E}", "\x{443}\0\x{306}"));
-ok($objBe->eq("\x{40E}", "\x{423}\0\x{306}"));
-ok($objBe->eq("\x{4F1}", "\x{443}\0\x{308}"));
-ok($objBe->eq("\x{4F0}", "\x{423}\0\x{308}"));
-ok($objBe->eq("\x{4F3}", "\x{443}\0\x{30B}"));
-ok($objBe->eq("\x{4F2}", "\x{423}\0\x{30B}"));
-ok($objBe->eq("\x{4F5}", "\x{447}\0\x{308}"));
-ok($objBe->eq("\x{4F4}", "\x{427}\0\x{308}"));
-ok($objBe->eq("\x{4F9}", "\x{44B}\0\x{308}"));
-ok($objBe->eq("\x{4F8}", "\x{42B}\0\x{308}"));
-ok($objBe->eq("\x{4ED}", "\x{44D}\0\x{308}"));
-ok($objBe->eq("\x{4EC}", "\x{42D}\0\x{308}"));
-
-# 130
+ok($objBe->lt("\x{451}", "\x{401}"));
+
+ok($objBe->eq("\x{451}", "\x{435}\x{308}"));
+ok($objBe->eq("\x{401}", "\x{415}\x{308}"));
+ok($objBe->eq("\x{4E5}", "\x{438}\x{308}")); # not suppressed
+ok($objBe->eq("\x{4E4}", "\x{418}\x{308}")); # not suppressed
+ok($objBe->eq("\x{439}", "\x{438}\x{306}")); # not suppressed
+ok($objBe->eq("\x{419}", "\x{418}\x{306}")); # not suppressed
+ok($objBe->eq("\x{45E}", "\x{443}\x{306}")); # not suppressed
+ok($objBe->eq("\x{40E}", "\x{423}\x{306}")); # not suppressed
+ok($objBe->eq("\x{4F1}", "\x{443}\x{308}")); # not suppressed
+ok($objBe->eq("\x{4F0}", "\x{423}\x{308}")); # not suppressed
+ok($objBe->eq("\x{4F3}", "\x{443}\x{30B}")); # not suppressed
+ok($objBe->eq("\x{4F2}", "\x{423}\x{30B}")); # not suppressed
+
+# 110
+
+for my $i ("", "\0") {
+ ok($objBe->eq("\x{4D1}", "\x{430}$i\x{306}"));
+ ok($objBe->eq("\x{4D0}", "\x{410}$i\x{306}"));
+ ok($objBe->eq("\x{4D3}", "\x{430}$i\x{308}"));
+ ok($objBe->eq("\x{4D2}", "\x{410}$i\x{308}"));
+ ok($objBe->eq("\x{4DB}", "\x{4D9}$i\x{308}"));
+ ok($objBe->eq("\x{4DA}", "\x{4D8}$i\x{308}"));
+ ok($objBe->eq("\x{453}", "\x{433}$i\x{301}"));
+ ok($objBe->eq("\x{403}", "\x{413}$i\x{301}"));
+ ok($objBe->eq("\x{450}", "\x{435}$i\x{300}")); # not contraction
+ ok($objBe->eq("\x{400}", "\x{415}$i\x{300}")); # not contraction
+ ok($objBe->eq("\x{4D7}", "\x{435}$i\x{306}"));
+ ok($objBe->eq("\x{4D6}", "\x{415}$i\x{306}"));
+ ok($objBe->eq("\x{4C2}", "\x{436}$i\x{306}")); # not contraction
+ ok($objBe->eq("\x{4C1}", "\x{416}$i\x{306}")); # not contraction
+ ok($objBe->eq("\x{4DD}", "\x{436}$i\x{308}"));
+ ok($objBe->eq("\x{4DC}", "\x{416}$i\x{308}"));
+ ok($objBe->eq("\x{4DF}", "\x{437}$i\x{308}"));
+ ok($objBe->eq("\x{4DE}", "\x{417}$i\x{308}"));
+ ok($objBe->eq("\x{45D}", "\x{438}$i\x{300}")); # not contraction
+ ok($objBe->eq("\x{40D}", "\x{418}$i\x{300}")); # not contraction
+ ok($objBe->eq("\x{4E3}", "\x{438}$i\x{304}")); # not contraction
+ ok($objBe->eq("\x{4E2}", "\x{418}$i\x{304}")); # not contraction
+ ok($objBe->eq("\x{457}", "\x{456}$i\x{308}"));
+ ok($objBe->eq("\x{407}", "\x{406}$i\x{308}"));
+ ok($objBe->eq("\x{4E7}", "\x{43E}$i\x{308}"));
+ ok($objBe->eq("\x{4E6}", "\x{41E}$i\x{308}"));
+ ok($objBe->eq("\x{4EB}", "\x{4E9}$i\x{308}"));
+ ok($objBe->eq("\x{4EA}", "\x{4E8}$i\x{308}"));
+ ok($objBe->eq("\x{45C}", "\x{43A}$i\x{301}"));
+ ok($objBe->eq("\x{40C}", "\x{41A}$i\x{301}"));
+ ok($objBe->eq("\x{4EF}", "\x{443}$i\x{304}")); # not contraction
+ ok($objBe->eq("\x{4EE}", "\x{423}$i\x{304}")); # not contraction
+ ok($objBe->eq("\x{4F5}", "\x{447}$i\x{308}"));
+ ok($objBe->eq("\x{4F4}", "\x{427}$i\x{308}"));
+ ok($objBe->eq("\x{4F9}", "\x{44B}$i\x{308}"));
+ ok($objBe->eq("\x{4F8}", "\x{42B}$i\x{308}"));
+ ok($objBe->eq("\x{4ED}", "\x{44D}$i\x{308}"));
+ ok($objBe->eq("\x{4EC}", "\x{42D}$i\x{308}"));
+ ok($objBe->eq("\x{477}", "\x{475}$i\x{30F}"));
+ ok($objBe->eq("\x{476}", "\x{474}$i\x{30F}"));
+}
+
+# 190
diff --git a/cpan/Unicode-Collate/t/loc_bg.t b/cpan/Unicode-Collate/t/loc_bg.t
index 9c706a3c55..2299d391dd 100644
--- a/cpan/Unicode-Collate/t/loc_bg.t
+++ b/cpan/Unicode-Collate/t/loc_bg.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 130 };
+BEGIN { plan tests => 202 };
use strict;
use warnings;
@@ -29,10 +29,10 @@ ok($objBg->getlocale, 'bg');
$objBg->change(level => 1);
-ok($objBg->gt("\x{4E5}", "\x{438}"));
-ok($objBg->gt("\x{4E4}", "\x{418}"));
-ok($objBg->gt("\x{439}", "\x{438}"));
-ok($objBg->gt("\x{419}", "\x{418}"));
+ok($objBg->gt("\x{4E5}", "\x{438}")); # not suppressed
+ok($objBg->gt("\x{4E4}", "\x{418}")); # not suppressed
+ok($objBg->gt("\x{439}", "\x{438}")); # not suppressed
+ok($objBg->gt("\x{419}", "\x{418}")); # not suppressed
# 6
@@ -40,20 +40,36 @@ ok($objBg->eq("\x{4D1}", "\x{430}"));
ok($objBg->eq("\x{4D0}", "\x{410}"));
ok($objBg->eq("\x{4D3}", "\x{430}"));
ok($objBg->eq("\x{4D2}", "\x{410}"));
+ok($objBg->eq("\x{4DB}", "\x{4D9}"));
+ok($objBg->eq("\x{4DA}", "\x{4D8}"));
ok($objBg->eq("\x{453}", "\x{433}"));
ok($objBg->eq("\x{403}", "\x{413}"));
+ok($objBg->eq("\x{450}", "\x{435}")); # not contraction
+ok($objBg->eq("\x{400}", "\x{415}")); # not contraction
+ok($objBg->eq("\x{451}", "\x{435}")); # not contraction
+ok($objBg->eq("\x{401}", "\x{415}")); # not contraction
ok($objBg->eq("\x{4D7}", "\x{435}"));
ok($objBg->eq("\x{4D6}", "\x{415}"));
+ok($objBg->eq("\x{4C2}", "\x{436}")); # not contraction
+ok($objBg->eq("\x{4C1}", "\x{416}")); # not contraction
ok($objBg->eq("\x{4DD}", "\x{436}"));
ok($objBg->eq("\x{4DC}", "\x{416}"));
ok($objBg->eq("\x{4DF}", "\x{437}"));
ok($objBg->eq("\x{4DE}", "\x{417}"));
+ok($objBg->eq("\x{45D}", "\x{438}")); # not contraction
+ok($objBg->eq("\x{40D}", "\x{418}")); # not contraction
+ok($objBg->eq("\x{4E3}", "\x{438}")); # not contraction
+ok($objBg->eq("\x{4E2}", "\x{418}")); # not contraction
ok($objBg->eq("\x{457}", "\x{456}"));
ok($objBg->eq("\x{407}", "\x{406}"));
ok($objBg->eq("\x{4E7}", "\x{43E}"));
ok($objBg->eq("\x{4E6}", "\x{41E}"));
+ok($objBg->eq("\x{4EB}", "\x{4E9}"));
+ok($objBg->eq("\x{4EA}", "\x{4E8}"));
ok($objBg->eq("\x{45C}", "\x{43A}"));
ok($objBg->eq("\x{40C}", "\x{41A}"));
+ok($objBg->eq("\x{4EF}", "\x{443}")); # not contraction
+ok($objBg->eq("\x{4EE}", "\x{423}")); # not contraction
ok($objBg->eq("\x{45E}", "\x{443}"));
ok($objBg->eq("\x{40E}", "\x{423}"));
ok($objBg->eq("\x{4F1}", "\x{443}"));
@@ -66,8 +82,10 @@ ok($objBg->eq("\x{4F9}", "\x{44B}"));
ok($objBg->eq("\x{4F8}", "\x{42B}"));
ok($objBg->eq("\x{4ED}", "\x{44D}"));
ok($objBg->eq("\x{4EC}", "\x{42D}"));
+ok($objBg->eq("\x{477}", "\x{475}"));
+ok($objBg->eq("\x{476}", "\x{474}"));
-# 36
+# 54
$objBg->change(level => 2);
@@ -75,20 +93,36 @@ ok($objBg->gt("\x{4D1}", "\x{430}"));
ok($objBg->gt("\x{4D0}", "\x{410}"));
ok($objBg->gt("\x{4D3}", "\x{430}"));
ok($objBg->gt("\x{4D2}", "\x{410}"));
+ok($objBg->gt("\x{4DB}", "\x{4D9}"));
+ok($objBg->gt("\x{4DA}", "\x{4D8}"));
ok($objBg->gt("\x{453}", "\x{433}"));
ok($objBg->gt("\x{403}", "\x{413}"));
+ok($objBg->gt("\x{450}", "\x{435}")); # not contraction
+ok($objBg->gt("\x{400}", "\x{415}")); # not contraction
+ok($objBg->gt("\x{451}", "\x{435}")); # not contraction
+ok($objBg->gt("\x{401}", "\x{415}")); # not contraction
ok($objBg->gt("\x{4D7}", "\x{435}"));
ok($objBg->gt("\x{4D6}", "\x{415}"));
+ok($objBg->gt("\x{4C2}", "\x{436}")); # not contraction
+ok($objBg->gt("\x{4C1}", "\x{416}")); # not contraction
ok($objBg->gt("\x{4DD}", "\x{436}"));
ok($objBg->gt("\x{4DC}", "\x{416}"));
ok($objBg->gt("\x{4DF}", "\x{437}"));
ok($objBg->gt("\x{4DE}", "\x{417}"));
+ok($objBg->gt("\x{45D}", "\x{438}")); # not contraction
+ok($objBg->gt("\x{40D}", "\x{418}")); # not contraction
+ok($objBg->gt("\x{4E3}", "\x{438}")); # not contraction
+ok($objBg->gt("\x{4E2}", "\x{418}")); # not contraction
ok($objBg->gt("\x{457}", "\x{456}"));
ok($objBg->gt("\x{407}", "\x{406}"));
ok($objBg->gt("\x{4E7}", "\x{43E}"));
ok($objBg->gt("\x{4E6}", "\x{41E}"));
+ok($objBg->gt("\x{4EB}", "\x{4E9}"));
+ok($objBg->gt("\x{4EA}", "\x{4E8}"));
ok($objBg->gt("\x{45C}", "\x{43A}"));
ok($objBg->gt("\x{40C}", "\x{41A}"));
+ok($objBg->gt("\x{4EF}", "\x{443}")); # not contraction
+ok($objBg->gt("\x{4EE}", "\x{423}")); # not contraction
ok($objBg->gt("\x{45E}", "\x{443}"));
ok($objBg->gt("\x{40E}", "\x{423}"));
ok($objBg->gt("\x{4F1}", "\x{443}"));
@@ -101,77 +135,69 @@ ok($objBg->gt("\x{4F9}", "\x{44B}"));
ok($objBg->gt("\x{4F8}", "\x{42B}"));
ok($objBg->gt("\x{4ED}", "\x{44D}"));
ok($objBg->gt("\x{4EC}", "\x{42D}"));
+ok($objBg->gt("\x{477}", "\x{475}"));
+ok($objBg->gt("\x{476}", "\x{474}"));
-# 66
+# 102
$objBg->change(level => 3);
-ok($objBg->eq("\x{4D1}", "\x{430}\x{306}"));
-ok($objBg->eq("\x{4D0}", "\x{410}\x{306}"));
-ok($objBg->eq("\x{4D3}", "\x{430}\x{308}"));
-ok($objBg->eq("\x{4D2}", "\x{410}\x{308}"));
-ok($objBg->eq("\x{453}", "\x{433}\x{301}"));
-ok($objBg->eq("\x{403}", "\x{413}\x{301}"));
-ok($objBg->eq("\x{4D7}", "\x{435}\x{306}"));
-ok($objBg->eq("\x{4D6}", "\x{415}\x{306}"));
-ok($objBg->eq("\x{4DD}", "\x{436}\x{308}"));
-ok($objBg->eq("\x{4DC}", "\x{416}\x{308}"));
-ok($objBg->eq("\x{4DF}", "\x{437}\x{308}"));
-ok($objBg->eq("\x{4DE}", "\x{417}\x{308}"));
-ok($objBg->eq("\x{4E5}", "\x{438}\x{308}"));
-ok($objBg->eq("\x{4E4}", "\x{418}\x{308}"));
-ok($objBg->eq("\x{457}", "\x{456}\x{308}"));
-ok($objBg->eq("\x{407}", "\x{406}\x{308}"));
-ok($objBg->eq("\x{439}", "\x{438}\x{306}"));
-ok($objBg->eq("\x{419}", "\x{418}\x{306}"));
-ok($objBg->eq("\x{4E7}", "\x{43E}\x{308}"));
-ok($objBg->eq("\x{4E6}", "\x{41E}\x{308}"));
-ok($objBg->eq("\x{45C}", "\x{43A}\x{301}"));
-ok($objBg->eq("\x{40C}", "\x{41A}\x{301}"));
-ok($objBg->eq("\x{45E}", "\x{443}\x{306}"));
-ok($objBg->eq("\x{40E}", "\x{423}\x{306}"));
-ok($objBg->eq("\x{4F1}", "\x{443}\x{308}"));
-ok($objBg->eq("\x{4F0}", "\x{423}\x{308}"));
-ok($objBg->eq("\x{4F3}", "\x{443}\x{30B}"));
-ok($objBg->eq("\x{4F2}", "\x{423}\x{30B}"));
-ok($objBg->eq("\x{4F5}", "\x{447}\x{308}"));
-ok($objBg->eq("\x{4F4}", "\x{427}\x{308}"));
-ok($objBg->eq("\x{4F9}", "\x{44B}\x{308}"));
-ok($objBg->eq("\x{4F8}", "\x{42B}\x{308}"));
-ok($objBg->eq("\x{4ED}", "\x{44D}\x{308}"));
-ok($objBg->eq("\x{4EC}", "\x{42D}\x{308}"));
-
-# 100
-
-ok($objBg->eq("\x{4D1}", "\x{430}\0\x{306}"));
-ok($objBg->eq("\x{4D0}", "\x{410}\0\x{306}"));
-ok($objBg->eq("\x{4D3}", "\x{430}\0\x{308}"));
-ok($objBg->eq("\x{4D2}", "\x{410}\0\x{308}"));
-ok($objBg->eq("\x{453}", "\x{433}\0\x{301}"));
-ok($objBg->eq("\x{403}", "\x{413}\0\x{301}"));
-ok($objBg->eq("\x{4D7}", "\x{435}\0\x{306}"));
-ok($objBg->eq("\x{4D6}", "\x{415}\0\x{306}"));
-ok($objBg->eq("\x{4DD}", "\x{436}\0\x{308}"));
-ok($objBg->eq("\x{4DC}", "\x{416}\0\x{308}"));
-ok($objBg->eq("\x{4DF}", "\x{437}\0\x{308}"));
-ok($objBg->eq("\x{4DE}", "\x{417}\0\x{308}"));
-ok($objBg->eq("\x{457}", "\x{456}\0\x{308}"));
-ok($objBg->eq("\x{407}", "\x{406}\0\x{308}"));
-ok($objBg->eq("\x{4E7}", "\x{43E}\0\x{308}"));
-ok($objBg->eq("\x{4E6}", "\x{41E}\0\x{308}"));
-ok($objBg->eq("\x{45C}", "\x{43A}\0\x{301}"));
-ok($objBg->eq("\x{40C}", "\x{41A}\0\x{301}"));
-ok($objBg->eq("\x{45E}", "\x{443}\0\x{306}"));
-ok($objBg->eq("\x{40E}", "\x{423}\0\x{306}"));
-ok($objBg->eq("\x{4F1}", "\x{443}\0\x{308}"));
-ok($objBg->eq("\x{4F0}", "\x{423}\0\x{308}"));
-ok($objBg->eq("\x{4F3}", "\x{443}\0\x{30B}"));
-ok($objBg->eq("\x{4F2}", "\x{423}\0\x{30B}"));
-ok($objBg->eq("\x{4F5}", "\x{447}\0\x{308}"));
-ok($objBg->eq("\x{4F4}", "\x{427}\0\x{308}"));
-ok($objBg->eq("\x{4F9}", "\x{44B}\0\x{308}"));
-ok($objBg->eq("\x{4F8}", "\x{42B}\0\x{308}"));
-ok($objBg->eq("\x{4ED}", "\x{44D}\0\x{308}"));
-ok($objBg->eq("\x{4EC}", "\x{42D}\0\x{308}"));
-
-# 130
+ok($objBg->eq("\x{4E5}", "\x{438}\x{308}")); # not suppressed
+ok($objBg->eq("\x{4E4}", "\x{418}\x{308}")); # not suppressed
+ok($objBg->eq("\x{439}", "\x{438}\x{306}")); # not suppressed
+ok($objBg->eq("\x{419}", "\x{418}\x{306}")); # not suppressed
+
+# 106
+
+for my $i ("", "\0") {
+ ok($objBg->eq("\x{4D1}", "\x{430}$i\x{306}"));
+ ok($objBg->eq("\x{4D0}", "\x{410}$i\x{306}"));
+ ok($objBg->eq("\x{4D3}", "\x{430}$i\x{308}"));
+ ok($objBg->eq("\x{4D2}", "\x{410}$i\x{308}"));
+ ok($objBg->eq("\x{4DB}", "\x{4D9}$i\x{308}"));
+ ok($objBg->eq("\x{4DA}", "\x{4D8}$i\x{308}"));
+ ok($objBg->eq("\x{453}", "\x{433}$i\x{301}"));
+ ok($objBg->eq("\x{403}", "\x{413}$i\x{301}"));
+ ok($objBg->eq("\x{450}", "\x{435}$i\x{300}")); # not contraction
+ ok($objBg->eq("\x{400}", "\x{415}$i\x{300}")); # not contraction
+ ok($objBg->eq("\x{451}", "\x{435}$i\x{308}")); # not contraction
+ ok($objBg->eq("\x{401}", "\x{415}$i\x{308}")); # not contraction
+ ok($objBg->eq("\x{4D7}", "\x{435}$i\x{306}"));
+ ok($objBg->eq("\x{4D6}", "\x{415}$i\x{306}"));
+ ok($objBg->eq("\x{4C2}", "\x{436}$i\x{306}")); # not contraction
+ ok($objBg->eq("\x{4C1}", "\x{416}$i\x{306}")); # not contraction
+ ok($objBg->eq("\x{4DD}", "\x{436}$i\x{308}"));
+ ok($objBg->eq("\x{4DC}", "\x{416}$i\x{308}"));
+ ok($objBg->eq("\x{4DF}", "\x{437}$i\x{308}"));
+ ok($objBg->eq("\x{4DE}", "\x{417}$i\x{308}"));
+ ok($objBg->eq("\x{45D}", "\x{438}$i\x{300}")); # not contraction
+ ok($objBg->eq("\x{40D}", "\x{418}$i\x{300}")); # not contraction
+ ok($objBg->eq("\x{4E3}", "\x{438}$i\x{304}")); # not contraction
+ ok($objBg->eq("\x{4E2}", "\x{418}$i\x{304}")); # not contraction
+ ok($objBg->eq("\x{457}", "\x{456}$i\x{308}"));
+ ok($objBg->eq("\x{407}", "\x{406}$i\x{308}"));
+ ok($objBg->eq("\x{4E7}", "\x{43E}$i\x{308}"));
+ ok($objBg->eq("\x{4E6}", "\x{41E}$i\x{308}"));
+ ok($objBg->eq("\x{4EB}", "\x{4E9}$i\x{308}"));
+ ok($objBg->eq("\x{4EA}", "\x{4E8}$i\x{308}"));
+ ok($objBg->eq("\x{45C}", "\x{43A}$i\x{301}"));
+ ok($objBg->eq("\x{40C}", "\x{41A}$i\x{301}"));
+ ok($objBg->eq("\x{4EF}", "\x{443}$i\x{304}")); # not contraction
+ ok($objBg->eq("\x{4EE}", "\x{423}$i\x{304}")); # not contraction
+ ok($objBg->eq("\x{45E}", "\x{443}$i\x{306}"));
+ ok($objBg->eq("\x{40E}", "\x{423}$i\x{306}"));
+ ok($objBg->eq("\x{4F1}", "\x{443}$i\x{308}"));
+ ok($objBg->eq("\x{4F0}", "\x{423}$i\x{308}"));
+ ok($objBg->eq("\x{4F3}", "\x{443}$i\x{30B}"));
+ ok($objBg->eq("\x{4F2}", "\x{423}$i\x{30B}"));
+ ok($objBg->eq("\x{4F5}", "\x{447}$i\x{308}"));
+ ok($objBg->eq("\x{4F4}", "\x{427}$i\x{308}"));
+ ok($objBg->eq("\x{4F9}", "\x{44B}$i\x{308}"));
+ ok($objBg->eq("\x{4F8}", "\x{42B}$i\x{308}"));
+ ok($objBg->eq("\x{4ED}", "\x{44D}$i\x{308}"));
+ ok($objBg->eq("\x{4EC}", "\x{42D}$i\x{308}"));
+ ok($objBg->eq("\x{477}", "\x{475}$i\x{30F}"));
+ ok($objBg->eq("\x{476}", "\x{474}$i\x{30F}"));
+}
+
+# 202
diff --git a/cpan/Unicode-Collate/t/loc_ca.t b/cpan/Unicode-Collate/t/loc_ca.t
index 092d75d0e8..5569cccd8e 100644
--- a/cpan/Unicode-Collate/t/loc_ca.t
+++ b/cpan/Unicode-Collate/t/loc_ca.t
@@ -31,11 +31,11 @@ ok($objCa->getlocale, 'ca');
$objCa->change(level => 1);
-ok($objCa->lt("c", "ch"));
-ok($objCa->lt("cz", "ch"));
+ok($objCa->lt("c", "ch"));
+ok($objCa->lt("cz","ch"));
ok($objCa->gt("d", "ch"));
-ok($objCa->lt("l", "ll"));
-ok($objCa->lt("lz", "ll"));
+ok($objCa->lt("l", "ll"));
+ok($objCa->lt("lz","ll"));
ok($objCa->gt("m", "ll"));
# 8
@@ -57,13 +57,13 @@ ok($objCa->eq("Ch", "CH"));
ok($objCa->eq("ll", "lL"));
ok($objCa->eq("lL", "Ll"));
ok($objCa->eq("Ll", "LL"));
-ok($objCa->eq("l${dot}l", "lL"));
-ok($objCa->eq("l${dot}L", "Ll"));
-ok($objCa->eq("L${dot}l", "LL"));
-ok($objCa->eq("ll","l${dot}l"));
-ok($objCa->eq("lL","l${dot}L"));
-ok($objCa->eq("Ll","L${dot}l"));
-ok($objCa->eq("LL","L${dot}L"));
+ok($objCa->eq("ll", "l${dot}l"));
+ok($objCa->eq("lL", "l${dot}l"));
+ok($objCa->eq("lL", "l${dot}L"));
+ok($objCa->eq("Ll", "l${dot}L"));
+ok($objCa->eq("Ll", "L${dot}l"));
+ok($objCa->eq("LL", "L${dot}l"));
+ok($objCa->eq("LL", "L${dot}L"));
# 25
@@ -76,13 +76,13 @@ ok($objCa->lt("Ch", "CH"));
ok($objCa->lt("ll", "lL"));
ok($objCa->lt("lL", "Ll"));
ok($objCa->lt("Ll", "LL"));
-ok($objCa->lt("l${dot}l", "lL"));
-ok($objCa->lt("l${dot}L", "Ll"));
-ok($objCa->lt("L${dot}l", "LL"));
-ok($objCa->lt("ll","l${dot}l"));
-ok($objCa->lt("lL","l${dot}L"));
-ok($objCa->lt("Ll","L${dot}l"));
-ok($objCa->lt("LL","L${dot}L"));
+ok($objCa->lt("ll", "l${dot}l"));
+ok($objCa->gt("lL", "l${dot}l"));
+ok($objCa->lt("lL", "l${dot}L"));
+ok($objCa->gt("Ll", "l${dot}L"));
+ok($objCa->lt("Ll", "L${dot}l"));
+ok($objCa->gt("LL", "L${dot}l"));
+ok($objCa->lt("LL", "L${dot}L"));
# 38
diff --git a/cpan/Unicode-Collate/t/loc_fiph.t b/cpan/Unicode-Collate/t/loc_fiph.t
new file mode 100644
index 0000000000..4c38c1565b
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_fiph.t
@@ -0,0 +1,149 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 83 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $uuml = pack 'U', 0xFC;
+my $Uuml = pack 'U', 0xDC;
+my $arng = pack 'U', 0xE5;
+my $Arng = pack 'U', 0xC5;
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ae = pack 'U', 0xE6;
+my $AE = pack 'U', 0xC6;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $ostk = pack 'U', 0xF8;
+my $Ostk = pack 'U', 0xD8;
+
+my $objFiPhone = Unicode::Collate::Locale->
+ new(locale => 'FI__phonebook', normalization => undef);
+
+ok($objFiPhone->getlocale, 'fi__phonebook');
+
+$objFiPhone->change(level => 1);
+
+ok($objFiPhone->lt('z', $arng));
+ok($objFiPhone->lt($arng, $auml));
+ok($objFiPhone->lt($auml, $ouml));
+ok($objFiPhone->lt($ouml, "\x{1C0}"));
+
+# 6
+
+ok($objFiPhone->eq("d\x{335}", "\x{111}"));
+ok($objFiPhone->eq("g\x{335}", "\x{1E5}"));
+ok($objFiPhone->eq("n\x{335}", "\x{14B}"));
+ok($objFiPhone->eq("t\x{335}", "\x{167}"));
+ok($objFiPhone->eq("z\x{335}", "\x{292}"));
+ok($objFiPhone->lt('v', 'w'));
+ok($objFiPhone->eq('y', $uuml));
+ok($objFiPhone->eq($auml, $ae));
+ok($objFiPhone->eq($ouml, $ostk));
+
+# 15
+
+$objFiPhone->change(level => 2);
+
+ok($objFiPhone->lt("d\x{335}", "\x{111}"));
+ok($objFiPhone->lt("g\x{335}", "\x{1E5}"));
+ok($objFiPhone->lt("n\x{335}", "\x{14B}"));
+ok($objFiPhone->lt("t\x{335}", "\x{167}"));
+ok($objFiPhone->lt("z\x{335}", "\x{292}"));
+ok($objFiPhone->lt('v', 'w'));
+ok($objFiPhone->lt('y', $uuml));
+ok($objFiPhone->lt($auml, $ae));
+ok($objFiPhone->lt($ouml, $ostk));
+
+# 24
+
+ok($objFiPhone->eq("\x{111}", "\x{110}"));
+ok($objFiPhone->eq("\x{1E5}", "\x{1E4}"));
+ok($objFiPhone->eq("\x{14B}", "\x{14A}"));
+ok($objFiPhone->eq("\x{167}", "\x{166}"));
+ok($objFiPhone->eq("\x{292}", "\x{1B7}"));
+ok($objFiPhone->eq('w', 'W'));
+ok($objFiPhone->eq($uuml, $Uuml));
+ok($objFiPhone->eq($arng, $Arng));
+ok($objFiPhone->eq($auml, $Auml));
+ok($objFiPhone->eq($ae, $AE));
+ok($objFiPhone->eq($AE, "\x{1D2D}"));
+ok($objFiPhone->eq($ouml, $Ouml));
+ok($objFiPhone->eq($ostk, $Ostk));
+
+# 37
+
+$objFiPhone->change(level => 3);
+
+ok($objFiPhone->lt("\x{111}", "\x{110}"));
+ok($objFiPhone->lt("\x{1E5}", "\x{1E4}"));
+ok($objFiPhone->lt("\x{14B}", "\x{14A}"));
+ok($objFiPhone->lt("\x{167}", "\x{166}"));
+ok($objFiPhone->lt("\x{292}", "\x{1B7}"));
+ok($objFiPhone->lt('w', 'W'));
+ok($objFiPhone->lt($uuml, $Uuml));
+ok($objFiPhone->lt($arng, $Arng));
+ok($objFiPhone->lt($auml, $Auml));
+ok($objFiPhone->lt($ae, $AE));
+ok($objFiPhone->lt($AE, "\x{1D2D}"));
+ok($objFiPhone->lt($ouml, $Ouml));
+ok($objFiPhone->lt($ostk, $Ostk));
+
+# 50
+
+ok($objFiPhone->eq("u\x{308}", $uuml));
+ok($objFiPhone->eq("U\x{308}", $Uuml));
+ok($objFiPhone->eq("\x{1EF}", "\x{292}\x{30C}"));
+ok($objFiPhone->eq("\x{1EE}", "\x{1B7}\x{30C}"));
+ok($objFiPhone->eq("a\x{30A}", $arng));
+ok($objFiPhone->eq("A\x{30A}", $Arng));
+ok($objFiPhone->eq("a\x{308}", $auml));
+ok($objFiPhone->eq("A\x{308}", $Auml));
+ok($objFiPhone->eq("o\x{308}", $ouml));
+ok($objFiPhone->eq("O\x{308}", $Ouml));
+ok($objFiPhone->eq("o\x{338}", $ostk));
+ok($objFiPhone->eq("O\x{338}", $Ostk));
+
+# 62
+
+ok($objFiPhone->eq("u\x{308}\x{300}", "\x{1DC}"));
+ok($objFiPhone->eq("U\x{308}\x{300}", "\x{1DB}"));
+ok($objFiPhone->eq("u\x{308}\x{301}", "\x{1D8}"));
+ok($objFiPhone->eq("U\x{308}\x{301}", "\x{1D7}"));
+ok($objFiPhone->eq("u\x{308}\x{304}", "\x{1D6}"));
+ok($objFiPhone->eq("U\x{308}\x{304}", "\x{1D5}"));
+ok($objFiPhone->eq("u\x{308}\x{30C}", "\x{1DA}"));
+ok($objFiPhone->eq("U\x{308}\x{30C}", "\x{1D9}"));
+ok($objFiPhone->eq("A\x{30A}", "\x{212B}"));
+ok($objFiPhone->eq("a\x{30A}\x{301}", "\x{1FB}"));
+ok($objFiPhone->eq("A\x{30A}\x{301}", "\x{1FA}"));
+ok($objFiPhone->eq("a\x{308}\x{304}", "\x{1DF}"));
+ok($objFiPhone->eq("A\x{308}\x{304}", "\x{1DE}"));
+ok($objFiPhone->eq("\x{1FD}", "$ae\x{301}"));
+ok($objFiPhone->eq("\x{1FC}", "$AE\x{301}"));
+ok($objFiPhone->eq("\x{1E3}", "$ae\x{304}"));
+ok($objFiPhone->eq("\x{1E2}", "$AE\x{304}"));
+ok($objFiPhone->eq("o\x{308}\x{304}", "\x{22B}"));
+ok($objFiPhone->eq("O\x{308}\x{304}", "\x{22A}"));
+ok($objFiPhone->eq("o\x{338}\x{301}", "\x{1FF}"));
+ok($objFiPhone->eq("O\x{338}\x{301}", "\x{1FE}"));
+
+# 83
diff --git a/cpan/Unicode-Collate/t/loc_gu.t b/cpan/Unicode-Collate/t/loc_gu.t
new file mode 100644
index 0000000000..e9b7e30310
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_gu.t
@@ -0,0 +1,41 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 7 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objGu = Unicode::Collate::Locale->
+ new(locale => 'GU', normalization => undef);
+
+ok($objGu->getlocale, 'gu');
+
+$objGu->change(level => 1);
+
+ok($objGu->lt("\x{AD0}", "\x{A82}"));
+ok($objGu->lt("\x{A82}", "\x{A83}"));
+ok($objGu->lt("\x{A83}", "\x{A85}"));
+
+ok($objGu->eq("\x{A82}", "\x{A81}"));
+
+$objGu->change(level => 2);
+
+ok($objGu->lt("\x{A82}", "\x{A81}"));
+