summaryrefslogtreecommitdiff
path: root/cpan/Unicode-Collate
diff options
context:
space:
mode:
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>2010-10-17 00:37:58 +0100
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>2010-10-17 00:37:58 +0100
commitaa7758f756e0b1b04750a2eeecdc7edbb9000ff6 (patch)
tree4ecf1390ce1ca78fdd0f7435d0056f164c4a4c9c /cpan/Unicode-Collate
parentb110ebfd39b99ef18dc9d64c02d8d52190a42816 (diff)
downloadperl-aa7758f756e0b1b04750a2eeecdc7edbb9000ff6.tar.gz
Update Unicode-Collate to CPAN version 0.63
[DELTA] 0.63 Sun Oct 10 22:13:21 2010 - supported suppress contractions (see 'suppress' in POD). - internal for hangul_terminator in getSortKey(). - U::C::Locale newly supports locales: be, bg, kk, mk, ru, sr. - added tailoring with U+0340 or U+0341 instead of U+0300 or U+0301. (affected locales: hr, is, pl, se, to, wo)
Diffstat (limited to 'cpan/Unicode-Collate')
-rw-r--r--cpan/Unicode-Collate/Changes15
-rw-r--r--cpan/Unicode-Collate/Collate.pm77
-rw-r--r--cpan/Unicode-Collate/Collate/Locale.pm34
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/hr.pl2
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/is.pl12
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/kk.pl44
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/pl.pl10
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/ru.pl35
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/se.pl4
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/to.pl10
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/wo.pl6
-rw-r--r--cpan/Unicode-Collate/README2
-rw-r--r--cpan/Unicode-Collate/t/contract.t53
-rw-r--r--cpan/Unicode-Collate/t/loc_be.t162
-rw-r--r--cpan/Unicode-Collate/t/loc_bg.t162
-rw-r--r--cpan/Unicode-Collate/t/loc_cyrl.t128
-rw-r--r--cpan/Unicode-Collate/t/loc_hr.t8
-rw-r--r--cpan/Unicode-Collate/t/loc_is.t20
-rw-r--r--cpan/Unicode-Collate/t/loc_kk.t185
-rw-r--r--cpan/Unicode-Collate/t/loc_mk.t162
-rw-r--r--cpan/Unicode-Collate/t/loc_pl.t14
-rw-r--r--cpan/Unicode-Collate/t/loc_ru.t162
-rw-r--r--cpan/Unicode-Collate/t/loc_se.t14
-rw-r--r--cpan/Unicode-Collate/t/loc_sr.t162
-rw-r--r--cpan/Unicode-Collate/t/loc_to.t16
-rw-r--r--cpan/Unicode-Collate/t/loc_wo.t10
26 files changed, 1432 insertions, 77 deletions
diff --git a/cpan/Unicode-Collate/Changes b/cpan/Unicode-Collate/Changes
index 1abdf45635..98ff5beb4a 100644
--- a/cpan/Unicode-Collate/Changes
+++ b/cpan/Unicode-Collate/Changes
@@ -1,5 +1,12 @@
Revision history for Perl module Unicode::Collate.
+0.63 Sun Oct 10 22:13:21 2010
+ - supported suppress contractions (see 'suppress' in POD).
+ - internal for hangul_terminator in getSortKey().
+ - U::C::Locale newly supports locales: be, bg, kk, mk, ru, sr.
+ - added tailoring with U+0340 or U+0341 instead of U+0300 or U+0301.
+ (affected locales: hr, is, pl, se, to, wo)
+
0.62 Wed Oct 6 21:35:54 2010
- U::C::Locale newly supports locales: ar, hu, hy, se, to, uk.
- Vietnamese (vi): added tailoring for U+0340 and U+0341.
@@ -9,14 +16,14 @@ Revision history for Perl module Unicode::Collate.
- precomposites of e-dot-below, o-dot-below, o-tilde are tailored as well.
(affected locales: et, yo)
- Vietnamese (vi): added contractions for non-blocked decompositions
- * base + dot-below + diacritical such as a\x{323}\x{306}, \x{1EA1}\x{306} etc.
+ * base + dot-below + mark such as a\x{323}\x{306}, \x{1EA1}\x{306} etc.
* base + tone + horn such as o\x{309}\x{31B}, \x{1ECF}\x{31B} etc.
0.60 Thu Sep 23 21:37:36 2010
- bug fix: index() [and its friends including gmatch()] didn't remove
ignorable characters in the substring correctly.
Thanks for the bug report:
- http://www.xray.mpe.mpg.de/mailing-lists/perl-unicode/2010-09/msg00014.html
+ http://www.xray.mpe.mpg.de/mailing-lists/perl-unicode/2010-09/msg00014.html
- U::C::Locale newly supports locales: de__phonebook, nso, om, tn, vi.
- precomposites of a-breve, a-circ, e-circ, o-circ are tailored as well.
@@ -38,8 +45,8 @@ Revision history for Perl module Unicode::Collate.
! renamed t/locale_{xy}.t to t/loc_{xy}.t (for safer 8.3 names)
0.55 Sun Aug 1 21:21:23 2010
- - incorporated Unicode::Collate::Locale with some changes. (see:
- http://www.xray.mpe.mpg.de/mailing-lists/perl-unicode/2004-03/msg00030.html)
+ - incorporated Unicode::Collate::Locale with some changes. see:
+ http://www.xray.mpe.mpg.de/mailing-lists/perl-unicode/2004-03/msg00030.html
- supported locales: cs, es, es__traditional, fr, nn, pl.
! added t/locale*.t that uses DUCET.
diff --git a/cpan/Unicode-Collate/Collate.pm b/cpan/Unicode-Collate/Collate.pm
index 4b195df1c5..9dec10c31b 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.62';
+our $VERSION = '0.63';
our $PACKAGE = __PACKAGE__;
my @Path = qw(Unicode Collate);
@@ -144,6 +144,7 @@ our @ChangeNG = qw/
ignoreChar ignoreName undefChar undefName variableTable
versionTable alternateTable backwardsTable forwardsTable rearrangeTable
derivCode normCode rearrangeHash backwardsFlag
+ suppress suppressHash
/;
# The hash key 'ignored' is deleted at v 0.21.
# The hash key 'isShift' is deleted at v 0.23.
@@ -276,6 +277,11 @@ sub new
my $class = shift;
my $self = bless { @_ }, $class;
+ # keys of $self->{suppressHash} are $self->{suppress}.
+ if ($self->{suppress} && @{ $self->{suppress} }) {
+ @{ $self->{suppressHash} }{ @{ $self->{suppress} } } = ();
+ } # before read_table()
+
# If undef is passed explicitly, no file is read.
$self->{table} = $KeyFile if ! exists $self->{table};
$self->read_table() if defined $self->{table};
@@ -380,7 +386,8 @@ sub parseEntry
@uv = _getHexArray($e);
return if !@uv;
-
+ return if @uv > 1 && $self->{suppressHash} &&
+ exists $self->{suppressHash}{$uv[0]};
$entry = join(CODE_SEP, @uv); # in JCPS
if (defined $self->{undefChar} || defined $self->{ignoreChar}) {
@@ -423,7 +430,7 @@ sub parseEntry
##
-## VCE = _varCE(variable term, VCE)
+## VCE = _varCE(variable, VCE)
##
sub _varCE
{
@@ -671,32 +678,28 @@ sub getSortKey
my $lev = $self->{level};
my $rEnt = $self->splitEnt(shift); # get an arrayref of JCPS
my $vers = $self->{UCA_Version};
- my $v2i = $vers >= 9 && $self->{variable} ne 'non-ignorable';
+ my $vbl = $self->{variable};
+ my $term = $self->{hangul_terminator};
+ my $v2i = $vers >= 9 && $vbl ne 'non-ignorable';
my @buf; # weight arrays
- if ($self->{hangul_terminator}) {
+ if ($term) {
my $preHST = '';
+ my $termCE = _varCE($vbl, pack(VCE_TEMPLATE, NON_VAR, $term, 0,0,0));
foreach my $jcps (@$rEnt) {
# weird things like VL, TL-contraction are not considered!
- my $curHST = '';
- foreach my $u (split /;/, $jcps) {
- $curHST .= getHST($u, $vers);
- }
+ my $curHST = join '', map getHST($_, $vers), split /;/, $jcps;
if ($preHST && !$curHST || # hangul before non-hangul
$preHST =~ /L\z/ && $curHST =~ /^T/ ||
$preHST =~ /V\z/ && $curHST =~ /^L/ ||
$preHST =~ /T\z/ && $curHST =~ /^[LV]/) {
-
- push @buf, $self->getWtHangulTerm();
+ push @buf, $termCE;
}
$preHST = $curHST;
-
push @buf, $self->getWt($jcps);
}
- $preHST # end at hangul
- and push @buf, $self->getWtHangulTerm();
- }
- else {
+ push @buf, $termCE if $preHST; # end at hangul
+ } else {
foreach my $jcps (@$rEnt) {
push @buf, $self->getWt($jcps);
}
@@ -713,11 +716,9 @@ sub getSortKey
if ($v2i) {
if ($var) {
$last_is_variable = TRUE;
- }
- elsif (!$wt[0]) { # ignorable
+ } elsif (!$wt[0]) { # ignorable
next if $last_is_variable;
- }
- else {
+ } else {
$last_is_variable = FALSE;
}
}
@@ -858,13 +859,6 @@ sub _isUIdeo {
}
-sub getWtHangulTerm {
- my $self = shift;
- return _varCE($self->{variable},
- pack(VCE_TEMPLATE, NON_VAR, $self->{hangul_terminator}, 0,0,0));
-}
-
-
##
## "hhhh hhhh hhhh" to (dddd, dddd, dddd)
##
@@ -1199,7 +1193,7 @@ The C<new> method returns a collator object.
$Collator = Unicode::Collate->new(
UCA_Version => $UCA_Version,
- alternate => $alternate, # deprecated: use of 'variable' is recommended.
+ alternate => $alternate, # alias for 'variable'
backwards => $levelNumber, # or \@levelNumbers
entry => $element,
hangul_terminator => $term_primary_weight,
@@ -1212,6 +1206,7 @@ The C<new> method returns a collator object.
overrideHangul => \&overrideHangul,
preprocess => \&preprocess,
rearrange => \@charList,
+ suppress => \@charList,
table => $filename,
undefName => qr/$undefName/,
undefChar => qr/$undefChar/,
@@ -1433,7 +1428,7 @@ C<CJK Unified Ideographs Extension>.
U+4E00..U+9FA5 if UCA_Version is 8 to 11;
U+4E00..U+9FBB if UCA_Version is 14 to 16;
U+4E00..U+9FC3 if UCA_Version is 18;
- U+4E00..U+9FCB if UCA_Version> is 20.
+ U+4E00..U+9FCB if UCA_Version is 20.
CJK Unified Ideographs Extension:
Ext.A (U+3400..U+4DB5) and Ext.B (U+20000..U+2A6D6) if UCA_Version < 20;
@@ -1461,7 +1456,7 @@ ex. ignores all CJK Unified Ideographs.
If C<undef> is passed explicitly as the value for this key,
weights for CJK Unified Ideographs are treated as undefined.
But assignment of weight for CJK Unified Ideographs
-in table or C<entry> is still valid.
+in <table> or C<entry> is still valid.
=item overrideHangul
@@ -1481,7 +1476,7 @@ If C<undef> is passed explicitly as the value for this key,
weight for Hangul Syllables is treated as undefined
without decomposition into Hangul Jamo.
But definition of weight for Hangul Syllables
-in table or C<entry> is still valid.
+in <table> or C<entry> is still valid.
=item preprocess
@@ -1519,6 +1514,20 @@ If C<UCA_Version> is equal to or greater than 14, default is C<[]>
B<According to the version 9 of UCA, this parameter shall not be used;
but it is not warned at present.>
+=item suppress
+
+-- see suppress contractions in 5.14.11 Special-Purpose Commands,
+UTS #35 (LDML).
+
+Contractions begining with the specified characters are suppressed,
+even if those contractions are defined in <table> or C<entry>.
+
+An example for Russian and some languages using the Cyrillic script:
+
+ suppress => [0x0400..0x0417, 0x041A..0x0437, 0x043A..0x045F],
+
+where 0x0400 stands for C<U+0400>, CYRILLIC CAPITAL LETTER IE WITH GRAVE.
+
=item table
-- see 3.2 Default Unicode Collation Element Table, UTS #10.
@@ -1566,7 +1575,7 @@ specified as a comment (following C<#>) on each line.
-- see 6.3.4 Reducing the Repertoire, UTS #10.
-Undefines the collation element as if it were unassigned in the table.
+Undefines the collation element as if it were unassigned in the <table>.
This reduces the size of the table.
If an unassigned character appears in the string to be collated,
the sort key is made from its codepoint
@@ -1945,6 +1954,10 @@ L<http://www.unicode.org/Public/UNIDATA/HangulSyllableType.txt>
L<http://www.unicode.org/reports/tr15/>
+=item Unicode Locale Data Markup Language (LDML) - UTS #35
+
+L<http://www.unicode.org/reports/tr35/>
+
=back
=cut
diff --git a/cpan/Unicode-Collate/Collate/Locale.pm b/cpan/Unicode-Collate/Collate/Locale.pm
index 09cb4ce799..bbd6e1f498 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.62';
+our $VERSION = '0.63';
use File::Spec;
@@ -14,12 +14,16 @@ 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 kl lt lv mt nb nn nso om pl ro
+ hr hu hy ig is kk kl lt lv mt nb nn nso om pl ro ru
se sk sl sq sv sw tn to tr uk vi wo yo
);
$LocaleFile{'default'} = '';
$LocaleFile{'de__phonebook'} = 'de_phone';
$LocaleFile{'es__traditional'} = 'es_trad';
+ $LocaleFile{'be'} = "ru";
+ $LocaleFile{'bg'} = "ru";
+ $LocaleFile{'mk'} = "ru";
+ $LocaleFile{'sr'} = "ru";
sub _locale {
my $locale = shift;
@@ -158,6 +162,8 @@ this method returns a string C<'default'> meaning no special tailoring.
af Afrikaans
ar Arabic
az Azerbaijani (Azeri)
+ be Belarusian
+ bg Bulgarian
ca Catalan
cs Czech
cy Welsh
@@ -178,9 +184,11 @@ this method returns a string C<'default'> meaning no special tailoring.
hy Armenian
ig Igbo
is Icelandic
+ kk Kazakh
kl Kalaallisut
lt Lithuanian
lv Latvian
+ mk Macedonian
mt Maltese
nb Norwegian Bokmal
nn Norwegian Nynorsk
@@ -188,10 +196,12 @@ this method returns a string C<'default'> meaning no special tailoring.
om Oromo
pl Polish
ro Romanian
+ ru Russian
se Northern Sami
sk Slovak
sl Slovenian
sq Albanian
+ sr Serbian
sv Swedish
sw Swahili
tn Tswana
@@ -201,6 +211,22 @@ this method returns a string C<'default'> meaning no special tailoring.
vi Vietnamese
wo Wolof
yo Yoruba
+ ----------------------------------------------------------
+
+Locales according to default UCA rules include:
+de (German),
+en (English),
+ga (Irish),
+id (Indonesian),
+it (Italian),
+ka (Georgian),
+ln (Lingala),
+ms (Malay),
+nl (Dutch),
+pt (Portuguese),
+st (Southern Sotho),
+xh (Xhosa),
+zu (Zulu).
=head1 INSTALL
@@ -246,6 +272,10 @@ L<http://www.unicode.org/reports/tr10/>
L<http://www.unicode.org/Public/UCA/latest/allkeys.txt>
+=item Unicode Locale Data Markup Language (LDML) - UTS #35
+
+L<http://www.unicode.org/reports/tr35/>
+
=item CLDR - Unicode Common Locale Data Repository
L<http://cldr.unicode.org/>
diff --git a/cpan/Unicode-Collate/Collate/Locale/hr.pl b/cpan/Unicode-Collate/Collate/Locale/hr.pl
index 83ed61631a..0a15e84477 100644
--- a/cpan/Unicode-Collate/Collate/Locale/hr.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/hr.pl
@@ -6,8 +6,10 @@
0043 030C ; [.123E.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
0107 ; [.123F.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
0063 0301 ; [.123F.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
+0063 0341 ; [.123F.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
0106 ; [.123F.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
0043 0301 ; [.123F.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
+0043 0341 ; [.123F.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
01C6 ; [.1251.0020.0002.01C6] # LATIN SMALL LETTER DZ WITH CARON
0064 017D ; [.1251.0020.0007.0064][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z WITH CARON>
01C5 ; [.1251.0020.0007.01C5][.0000.0000.0008.0000] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
diff --git a/cpan/Unicode-Collate/Collate/Locale/is.pl b/cpan/Unicode-Collate/Collate/Locale/is.pl
index b6c93a9c01..076a443568 100644
--- a/cpan/Unicode-Collate/Collate/Locale/is.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/is.pl
@@ -2,8 +2,10 @@
entry => <<'ENTRY', # for DUCET v5.2.0
00E1 ; [.1224.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
0061 0301 ; [.1224.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.1224.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
00C1 ; [.1224.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
0041 0301 ; [.1224.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.1224.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
0111 ; [.1250.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
0064 0335 ; [.1250.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
0110 ; [.1250.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
@@ -12,24 +14,34 @@
00D0 ; [.1251.0020.0008.00D0] # LATIN CAPITAL LETTER ETH
00E9 ; [.12A2.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
0065 0301 ; [.12A2.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.12A2.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
00C9 ; [.12A2.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
0045 0301 ; [.12A2.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.12A2.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
00ED ; [.1304.0020.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
0069 0301 ; [.1304.0020.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0341 ; [.1304.0020.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
00CD ; [.1304.0020.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
0049 0301 ; [.1304.0020.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0341 ; [.1304.0020.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
00F3 ; [.13B2.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
006F 0301 ; [.13B2.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.13B2.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
00D3 ; [.13B2.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
004F 0301 ; [.13B2.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.13B2.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
00FA ; [.147A.0020.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
0075 0301 ; [.147A.0020.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0341 ; [.147A.0020.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
00DA ; [.147A.0020.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
0055 0301 ; [.147A.0020.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0341 ; [.147A.0020.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
00FD ; [.14AC.0020.0002.00FD] # LATIN SMALL LETTER Y WITH ACUTE
0079 0301 ; [.14AC.0020.0002.00FD] # LATIN SMALL LETTER Y WITH ACUTE
+0079 0341 ; [.14AC.0020.0002.00FD] # LATIN SMALL LETTER Y WITH ACUTE
00DD ; [.14AC.0020.0008.00DD] # LATIN CAPITAL LETTER Y WITH ACUTE
0059 0301 ; [.14AC.0020.0008.00DD] # LATIN CAPITAL LETTER Y WITH ACUTE
+0059 0341 ; [.14AC.0020.0008.00DD] # LATIN CAPITAL LETTER Y WITH ACUTE
00E6 ; [.1522.0020.0002.00E6] # LATIN SMALL LETTER AE
00C6 ; [.1522.0020.0008.00C6] # LATIN CAPITAL LETTER AE
1D2D ; [.1522.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
diff --git a/cpan/Unicode-Collate/Collate/Locale/kk.pl b/cpan/Unicode-Collate/Collate/Locale/kk.pl
new file mode 100644
index 0000000000..a5e1a71200
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/kk.pl
@@ -0,0 +1,44 @@
++{
+# barred-o doesn't require tailoring
+ suppress => [0x0400..0x045F],
+ entry => <<'ENTRY', # for DUCET v5.2.0
+04B1 ; [.16E3.0020.0002.04B1] # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B0 ; [.16E3.0020.0008.04B0] # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+0456 ; [.175F.0020.0002.0456] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0406 ; [.175F.0020.0008.0406] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+04D1 ; [.15AC.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.15AC.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.15AC.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.15AC.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+0453 ; [.15CC.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.15CC.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.15F4.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.15F4.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.1600.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.1600.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.160D.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.160D.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E5 ; [.1625.0020.0002.0438][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E4 ; [.1625.0020.0008.0418][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+0457 ; [.175F.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407 ; [.175F.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+0439 ; [.1625.0020.0002.0438][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT I
+0419 ; [.1625.0020.0008.0418][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT I
+04E7 ; [.1692.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1692.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+045C ; [.1643.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.1643.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E ; [.16D4.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.16D4.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.16D4.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.16D4.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.16D4.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.16D4.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5 ; [.1725.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1725.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1758.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1758.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.176D.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.176D.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/pl.pl b/cpan/Unicode-Collate/Collate/Locale/pl.pl
index f9694d9ff6..485e38078f 100644
--- a/cpan/Unicode-Collate/Collate/Locale/pl.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/pl.pl
@@ -6,8 +6,10 @@
0041 0328 ; [.1210.0020.0008.0104] # LATIN CAPITAL LETTER A WITH OGONEK
0107 ; [.123E.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
0063 0301 ; [.123E.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
+0063 0341 ; [.123E.0020.0002.0107] # LATIN SMALL LETTER C WITH ACUTE
0106 ; [.123E.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
0043 0301 ; [.123E.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
+0043 0341 ; [.123E.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
0119 ; [.126C.0020.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
0065 0328 ; [.126C.0020.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
0118 ; [.126C.0020.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
@@ -18,20 +20,28 @@
004C 0335 ; [.1331.0020.0008.0141] # LATIN CAPITAL LETTER L WITH STROKE
0144 ; [.136E.0020.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
006E 0301 ; [.136E.0020.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0341 ; [.136E.0020.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
0143 ; [.136E.0020.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
004E 0301 ; [.136E.0020.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0341 ; [.136E.0020.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
00F3 ; [.138F.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
006F 0301 ; [.138F.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.138F.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
00D3 ; [.138F.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
004F 0301 ; [.138F.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.138F.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
015B ; [.1411.0020.0002.015B] # LATIN SMALL LETTER S WITH ACUTE
0073 0301 ; [.1411.0020.0002.015B] # LATIN SMALL LETTER S WITH ACUTE
+0073 0341 ; [.1411.0020.0002.015B] # LATIN SMALL LETTER S WITH ACUTE
015A ; [.1411.0020.0008.015A] # LATIN CAPITAL LETTER S WITH ACUTE
0053 0301 ; [.1411.0020.0008.015A] # LATIN CAPITAL LETTER S WITH ACUTE
+0053 0341 ; [.1411.0020.0008.015A] # LATIN CAPITAL LETTER S WITH ACUTE
017A ; [.14AE.0020.0002.017A] # LATIN SMALL LETTER Z WITH ACUTE
007A 0301 ; [.14AE.0020.0002.017A] # LATIN SMALL LETTER Z WITH ACUTE
+007A 0341 ; [.14AE.0020.0002.017A] # LATIN SMALL LETTER Z WITH ACUTE
0179 ; [.14AE.0020.0008.0179] # LATIN CAPITAL LETTER Z WITH ACUTE
005A 0301 ; [.14AE.0020.0008.0179] # LATIN CAPITAL LETTER Z WITH ACUTE
+005A 0341 ; [.14AE.0020.0008.0179] # LATIN CAPITAL LETTER Z WITH ACUTE
017C ; [.14AF.0020.0002.017C] # LATIN SMALL LETTER Z WITH DOT ABOVE
007A 0307 ; [.14AF.0020.0002.017C] # LATIN SMALL LETTER Z WITH DOT ABOVE
017B ; [.14AF.0020.0008.017B] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
diff --git a/cpan/Unicode-Collate/Collate/Locale/ru.pl b/cpan/Unicode-Collate/Collate/Locale/ru.pl
new file mode 100644
index 0000000000..ea2eabde95
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/ru.pl
@@ -0,0 +1,35 @@
++{
+ suppress => [0x0400..0x0417, 0x041A..0x0437, 0x043A..0x045F],
+ entry => <<'ENTRY', # for DUCET v5.2.0
+04D1 ; [.15AC.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.15AC.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.15AC.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.15AC.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+0453 ; [.15CC.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.15CC.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.15F4.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.15F4.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.1600.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.1600.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.160D.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.160D.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+0457 ; [.1631.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407 ; [.1631.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+04E7 ; [.1692.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1692.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+045C ; [.1643.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.1643.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E ; [.16D4.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.16D4.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.16D4.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.16D4.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.16D4.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.16D4.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5 ; [.1725.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1725.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1758.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1758.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.176D.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.176D.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/se.pl b/cpan/Unicode-Collate/Collate/Locale/se.pl
index 5b8c8e4a3f..a37ed34baf 100644
--- a/cpan/Unicode-Collate/Collate/Locale/se.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/se.pl
@@ -3,8 +3,10 @@
entry => <<'ENTRY', # for DUCET v5.2.0
00E1 ; [.1224.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
0061 0301 ; [.1224.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.1224.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
00C1 ; [.1224.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
0041 0301 ; [.1224.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.1224.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
010D ; [.124D.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
0063 030C ; [.124D.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
010C ; [.124D.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
@@ -31,8 +33,10 @@
004B 030C ; [.132F.0020.0008.01E8] # LATIN CAPITAL LETTER K WITH CARON
0144 ; [.138A.0021.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
006E 0301 ; [.138A.0021.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0341 ; [.138A.0021.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
0143 ; [.138A.0021.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
004E 0301 ; [.138A.0021.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0341 ; [.138A.0021.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
00F1 ; [.138A.0022.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
006E 0303 ; [.138A.0022.0002.00F1] # LATIN SMALL LETTER N WITH TILDE
00D1 ; [.138A.0022.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
diff --git a/cpan/Unicode-Collate/Collate/Locale/to.pl b/cpan/Unicode-Collate/Collate/Locale/to.pl
index c52aa36839..af445a1c6e 100644
--- a/cpan/Unicode-Collate/Collate/Locale/to.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/to.pl
@@ -11,41 +11,51 @@
0061 0304 ; [.120F.0021.0002.0101] # LATIN SMALL LETTER A WITH MACRON
00E1 ; [.120F.0021.0003.00E1] # LATIN SMALL LETTER A WITH ACUTE
0061 0301 ; [.120F.0021.0003.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.120F.0021.0003.00E1] # LATIN SMALL LETTER A WITH ACUTE
0100 ; [.120F.0021.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
0041 0304 ; [.120F.0021.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
00C1 ; [.120F.0021.0009.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
0041 0301 ; [.120F.0021.0009.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.120F.0021.0009.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
0113 ; [.126B.0021.0002.0113] # LATIN SMALL LETTER E WITH MACRON
0065 0304 ; [.126B.0021.0002.0113] # LATIN SMALL LETTER E WITH MACRON
00E9 ; [.126B.0021.0003.00E9] # LATIN SMALL LETTER E WITH ACUTE
0065 0301 ; [.126B.0021.0003.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.126B.0021.0003.00E9] # LATIN SMALL LETTER E WITH ACUTE
0112 ; [.126B.0021.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
0045 0304 ; [.126B.0021.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
00C9 ; [.126B.0021.0009.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
0045 0301 ; [.126B.0021.0009.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.126B.0021.0009.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
012B ; [.12EC.0021.0002.012B] # LATIN SMALL LETTER I WITH MACRON
0069 0304 ; [.12EC.0021.0002.012B] # LATIN SMALL LETTER I WITH MACRON
00ED ; [.12EC.0021.0003.00ED] # LATIN SMALL LETTER I WITH ACUTE
0069 0301 ; [.12EC.0021.0003.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0341 ; [.12EC.0021.0003.00ED] # LATIN SMALL LETTER I WITH ACUTE
012A ; [.12EC.0021.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
0049 0304 ; [.12EC.0021.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
00CD ; [.12EC.0021.0009.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
0049 0301 ; [.12EC.0021.0009.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0341 ; [.12EC.0021.0009.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
014D ; [.138E.0021.0002.014D] # LATIN SMALL LETTER O WITH MACRON
006F 0304 ; [.138E.0021.0002.014D] # LATIN SMALL LETTER O WITH MACRON
00F3 ; [.138E.0021.0003.00F3] # LATIN SMALL LETTER O WITH ACUTE
006F 0301 ; [.138E.0021.0003.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.138E.0021.0003.00F3] # LATIN SMALL LETTER O WITH ACUTE
014C ; [.138E.0021.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
004F 0304 ; [.138E.0021.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
00D3 ; [.138E.0021.0009.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
004F 0301 ; [.138E.0021.0009.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.138E.0021.0009.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
016B ; [.1453.0021.0002.016B] # LATIN SMALL LETTER U WITH MACRON
0075 0304 ; [.1453.0021.0002.016B] # LATIN SMALL LETTER U WITH MACRON
00FA ; [.1453.0021.0003.00FA] # LATIN SMALL LETTER U WITH ACUTE
0075 0301 ; [.1453.0021.0003.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0341 ; [.1453.0021.0003.00FA] # LATIN SMALL LETTER U WITH ACUTE
016A ; [.1453.0021.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
0055 0304 ; [.1453.0021.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
00DA ; [.1453.0021.0009.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
0055 0301 ; [.1453.0021.0009.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0341 ; [.1453.0021.0009.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
ENTRY
};
diff --git a/cpan/Unicode-Collate/Collate/Locale/wo.pl b/cpan/Unicode-Collate/Collate/Locale/wo.pl
index 941260cf7f..818a5c1179 100644
--- a/cpan/Unicode-Collate/Collate/Locale/wo.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/wo.pl
@@ -3,12 +3,16 @@
entry => <<'ENTRY', # for DUCET v5.2.0
00E0 ; [.1210.0020.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
0061 0300 ; [.1210.0020.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0340 ; [.1210.0020.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
00C0 ; [.1210.0020.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
0041 0300 ; [.1210.0020.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0340 ; [.1210.0020.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
00E9 ; [.126C.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
0065 0301 ; [.126C.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.126C.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
00C9 ; [.126C.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
0045 0301 ; [.126C.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.126C.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
00EB ; [.126D.0020.0002.00EB] # LATIN SMALL LETTER E WITH DIAERESIS
0065 0308 ; [.126D.0020.0002.00EB] # LATIN SMALL LETTER E WITH DIAERESIS
00CB ; [.126D.0020.0008.00CB] # LATIN CAPITAL LETTER E WITH DIAERESIS
@@ -19,7 +23,9 @@
004E 0303 ; [.136E.0020.0008.00D1] # LATIN CAPITAL LETTER N WITH TILDE
00F3 ; [.138F.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
006F 0301 ; [.138F.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.138F.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
00D3 ; [.138F.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
004F 0301 ; [.138F.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.138F.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
ENTRY
};
diff --git a/cpan/Unicode-Collate/README b/cpan/Unicode-Collate/README
index 2e12016669..9df8d22507 100644
--- a/cpan/Unicode-Collate/README
+++ b/cpan/Unicode-Collate/README
@@ -1,4 +1,4 @@
-Unicode/Collate version 0.62
+Unicode/Collate version 0.63
===============================
NAME
diff --git a/cpan/Unicode-Collate/t/contract.t b/cpan/Unicode-Collate/t/contract.t
index 9c55ecdc8b..e87239f38a 100644
--- a/cpan/Unicode-Collate/t/contract.t
+++ b/cpan/Unicode-Collate/t/contract.t
@@ -11,7 +11,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 40 };
+BEGIN { plan tests => 44 };
use strict;
use warnings;
@@ -54,16 +54,16 @@ my $kjeNoN = Unicode::Collate->new(
entry => $kjeEntry,
);
-ok($kjeNoN->lt("\x{043A}", "\x{043A}\x{0301}"));
-ok($kjeNoN->gt("\x{045C}", "\x{043A}\x{0334}\x{0301}"));
-ok($kjeNoN->eq("\x{043A}", "\x{043A}\x{0334}\x{0301}"));
-ok($kjeNoN->eq("\x{045C}", "\x{043A}\x{0301}\x{0334}"));
+ok($kjeNoN->lt("\x{43A}", "\x{43A}\x{301}"));
+ok($kjeNoN->gt("\x{45C}", "\x{43A}\x{334}\x{301}"));
+ok($kjeNoN->eq("\x{43A}", "\x{43A}\x{334}\x{301}"));
+ok($kjeNoN->eq("\x{45C}", "\x{43A}\x{301}\x{334}"));
our %sortkeys;
-$sortkeys{'KAac'} = $kjeNoN->viewSortKey("\x{043A}\x{0301}");
-$sortkeys{'KAta'} = $kjeNoN->viewSortKey("\x{043A}\x{0334}\x{0301}");
-$sortkeys{'KAat'} = $kjeNoN->viewSortKey("\x{043A}\x{0301}\x{0334}");
+$sortkeys{'KAac'} = $kjeNoN->viewSortKey("\x{43A}\x{301}");
+$sortkeys{'KAta'} = $kjeNoN->viewSortKey("\x{43A}\x{334}\x{301}");
+$sortkeys{'KAat'} = $kjeNoN->viewSortKey("\x{43A}\x{301}\x{334}");
eval { require Unicode::Normalize };
if (!$@) {
@@ -72,10 +72,10 @@ if (!$@) {
table => undef,
entry => $kjeEntry,
);
-ok($kjeNFD->lt("\x{043A}", "\x{043A}\x{0301}"));
-ok($kjeNFD->eq("\x{045C}", "\x{043A}\x{0334}\x{0301}"));
-ok($kjeNFD->lt("\x{043A}", "\x{043A}\x{0334}\x{0301}"));
-ok($kjeNFD->eq("\x{045C}", "\x{043A}\x{0301}\x{0334}"));
+ok($kjeNFD->lt("\x{43A}", "\x{43A}\x{301}"));
+ok($kjeNFD->eq("\x{45C}", "\x{43A}\x{334}\x{301}"));
+ok($kjeNFD->lt("\x{43A}", "\x{43A}\x{334}\x{301}"));
+ok($kjeNFD->eq("\x{45C}", "\x{43A}\x{301}\x{334}"));
my $aaNFD = Unicode::Collate->new(
level => 1,
@@ -113,14 +113,14 @@ else {
}
# again: loading Unicode::Normalize should not affect $kjeNoN.
-ok($kjeNoN->lt("\x{043A}", "\x{043A}\x{0301}"));
-ok($kjeNoN->gt("\x{045C}", "\x{043A}\x{0334}\x{0301}"));
-ok($kjeNoN->eq("\x{043A}", "\x{043A}\x{0334}\x{0301}"));
-ok($kjeNoN->eq("\x{045C}", "\x{043A}\x{0301}\x{0334}"));
+ok($kjeNoN->lt("\x{43A}", "\x{43A}\x{301}"));
+ok($kjeNoN->gt("\x{45C}", "\x{43A}\x{334}\x{301}"));
+ok($kjeNoN->eq("\x{43A}", "\x{43A}\x{334}\x{301}"));
+ok($kjeNoN->eq("\x{45C}", "\x{43A}\x{301}\x{334}"));
-ok($sortkeys{'KAac'}, $kjeNoN->viewSortKey("\x{043A}\x{0301}"));
-ok($sortkeys{'KAta'}, $kjeNoN->viewSortKey("\x{043A}\x{0334}\x{0301}"));
-ok($sortkeys{'KAat'}, $kjeNoN->viewSortKey("\x{043A}\x{0301}\x{0334}"));
+ok($sortkeys{'KAac'}, $kjeNoN->viewSortKey("\x{43A}\x{301}"));
+ok($sortkeys{'KAta'}, $kjeNoN->viewSortKey("\x{43A}\x{334}\x{301}"));
+ok($sortkeys{'KAat'}, $kjeNoN->viewSortKey("\x{43A}\x{301}\x{334}"));
my $aaNoN = Unicode::Collate->new(
level => 1,
@@ -138,3 +138,18 @@ ok($aaNoN->lt("Z", "A\x{30A}\x{327}"));
ok($aaNoN->eq("A", "A\x{31A}\x{30A}"));
ok($aaNoN->lt("Z", "A\x{30A}\x{31A}"));
+# suppress contractions
+
+my $kjeSup = Unicode::Collate->new(
+ level => 1,
+ table => undef,
+ normalization => undef,
+ entry => $kjeEntry,
+ 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}"));
+
diff --git a/cpan/Unicode-Collate/t/loc_be.t b/cpan/Unicode-Collate/t/loc_be.t
new file mode 100644
index 0000000000..90f93dbe1b
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_be.t
@@ -0,0 +1,162 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 130;
+
+my $objBe = Unicode::Collate::Locale->
+ new(locale => 'BE', normalization => undef);
+
+ok(1);
+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}"));
+
+# 6
+
+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{453}", "\x{433}"));
+ok($objBe->eq("\x{403}", "\x{413}"));
+ok($objBe->eq("\x{4D7}", "\x{435}"));
+ok($objBe->eq("\x{4D6}", "\x{415}"));
+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{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{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{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}"));
+
+# 36
+
+$objBe->change(level => 2);
+
+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{453}", "\x{433}"));
+ok($objBe->gt("\x{403}", "\x{413}"));
+ok($objBe->gt("\x{4D7}", "\x{435}"));
+ok($objBe->gt("\x{4D6}", "\x{415}"));
+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{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{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{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}"));
+
+# 66
+
+$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
diff --git a/cpan/Unicode-Collate/t/loc_bg.t b/cpan/Unicode-Collate/t/loc_bg.t
new file mode 100644
index 0000000000..59acb41589
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_bg.t
@@ -0,0 +1,162 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 130;
+
+my $objBg = Unicode::Collate::Locale->
+ new(locale => 'BG', normalization => undef);
+
+ok(1);
+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}"));
+
+# 6
+
+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{453}", "\x{433}"));
+ok($objBg->eq("\x{403}", "\x{413}"));
+ok($objBg->eq("\x{4D7}", "\x{435}"));
+ok($objBg->eq("\x{4D6}", "\x{415}"));
+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{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{45C}", "\x{43A}"));
+ok($objBg->eq("\x{40C}", "\x{41A}"));
+ok($objBg->eq("\x{45E}", "\x{443}"));
+ok($objBg->eq("\x{40E}", "\x{423}"));
+ok($objBg->eq("\x{4F1}", "\x{443}"));
+ok($objBg->eq("\x{4F0}", "\x{423}"));
+ok($objBg->eq("\x{4F3}", "\x{443}"));
+ok($objBg->eq("\x{4F2}", "\x{423}"));
+ok($objBg->eq("\x{4F5}", "\x{447}"));
+ok($objBg->eq("\x{4F4}", "\x{427}"));
+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}"));
+
+# 36
+
+$objBg->change(level => 2);
+
+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{453}", "\x{433}"));
+ok($objBg->gt("\x{403}", "\x{413}"));
+ok($objBg->gt("\x{4D7}", "\x{435}"));
+ok($objBg->gt("\x{4D6}", "\x{415}"));
+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{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{45C}", "\x{43A}"));
+ok($objBg->gt("\x{40C}", "\x{41A}"));
+ok($objBg->gt("\x{45E}", "\x{443}"));
+ok($objBg->gt("\x{40E}", "\x{423}"));
+ok($objBg->gt("\x{4F1}", "\x{443}"));
+ok($objBg->gt("\x{4F0}", "\x{423}"));
+ok($objBg->gt("\x{4F3}", "\x{443}"));
+ok($objBg->gt("\x{4F2}", "\x{423}"));
+ok($objBg->gt("\x{4F5}", "\x{447}"));
+ok($objBg->gt("\x{4F4}", "\x{427}"));
+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}"));
+
+# 66
+
+$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
diff --git a/cpan/Unicode-Collate/t/loc_cyrl.t b/cpan/Unicode-Collate/t/loc_cyrl.t
new file mode 100644
index 0000000000..c7223ac145
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_cyrl.t
@@ -0,0 +1,128 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 104;
+
+my $objNoSuppress = Unicode::Collate::Locale->
+ new(locale => 'NoSuppress', normalization => undef);
+
+ok(1);
+ok($objNoSuppress->getlocale, 'default');
+
+$objNoSuppress->change(level => 1);
+
+ok($objNoSuppress->ne("\x{4D1}", "\x{430}"));
+ok($objNoSuppress->ne("\x{4D0}", "\x{410}"));
+ok($objNoSuppress->ne("\x{4D3}", "\x{430}"));
+ok($objNoSuppress->ne("\x{4D2}", "\x{410}"));
+ok($objNoSuppress->ne("\x{453}", "\x{433}"));
+ok($objNoSuppress->ne("\x{403}", "\x{413}"));
+ok($objNoSuppress->ne("\x{4D7}", "\x{435}"));
+ok($objNoSuppress->ne("\x{4D6}", "\x{415}"));
+ok($objNoSuppress->ne("\x{4DD}", "\x{436}"));
+ok($objNoSuppress->ne("\x{4DC}", "\x{416}"));
+ok($objNoSuppress->ne("\x{4DF}", "\x{437}"));
+ok($objNoSuppress->ne("\x{4DE}", "\x{417}"));
+ok($objNoSuppress->ne("\x{4E5}", "\x{438}"));
+ok($objNoSuppress->ne("\x{4E4}", "\x{418}"));
+ok($objNoSuppress->ne("\x{457}", "\x{456}"));
+ok($objNoSuppress->ne("\x{407}", "\x{406}"));
+ok($objNoSuppress->ne("\x{439}", "\x{438}"));
+ok($objNoSuppress->ne("\x{419}", "\x{418}"));
+ok($objNoSuppress->ne("\x{4E7}", "\x{43E}"));
+ok($objNoSuppress->ne("\x{4E6}", "\x{41E}"));
+ok($objNoSuppress->ne("\x{45C}", "\x{43A}"));
+ok($objNoSuppress->ne("\x{40C}", "\x{41A}"));
+ok($objNoSuppress->ne("\x{45E}", "\x{443}"));
+ok($objNoSuppress->ne("\x{40E}", "\x{423}"));
+ok($objNoSuppress->ne("\x{4F1}", "\x{443}"));
+ok($objNoSuppress->ne("\x{4F0}", "\x{423}"));
+ok($objNoSuppress->ne("\x{4F3}", "\x{443}"));
+ok($objNoSuppress->ne("\x{4F2}", "\x{423}"));
+ok($objNoSuppress->ne("\x{4F5}", "\x{447}"));
+ok($objNoSuppress->ne("\x{4F4}", "\x{427}"));
+ok($objNoSuppress->ne("\x{4F9}", "\x{44B}"));
+ok($objNoSuppress->ne("\x{4F8}", "\x{42B}"));
+ok($objNoSuppress->ne("\x{4ED}", "\x{44D}"));
+ok($objNoSuppress->ne("\x{4EC}", "\x{42D}"));
+
+# 36
+
+$objNoSuppress->change(level => 3);
+
+ok($objNoSuppress->eq("\x{4D1}", "\x{430}\x{306}"));
+ok($objNoSuppress->eq("\x{4D0}", "\x{410}\x{306}"));
+ok($objNoSuppress->eq("\x{4D3}", "\x{430}\x{308}"));
+ok($objNoSuppress->eq("\x{4D2}", "\x{410}\x{308}"));
+ok($objNoSuppress->eq("\x{453}", "\x{433}\x{301}"));
+ok($objNoSuppress->eq("\x{403}", "\x{413}\x{301}"));
+ok($objNoSuppress->eq("\x{4D7}", "\x{435}\x{306}"));
+ok($objNoSuppress->eq("\x{4D6}", "\x{415}\x{306}"));
+ok($objNoSuppress->eq("\x{4DD}", "\x{436}\x{308}"));
+ok($objNoSuppress->eq("\x{4DC}", "\x{416}\x{308}"));
+ok($objNoSuppress->eq("\x{4DF}", "\x{437}\x{308}"));
+ok($objNoSuppress->eq("\x{4DE}", "\x{417}\x{308}"));
+ok($objNoSuppress->eq("\x{4E5}", "\x{438}\x{308}"));
+ok($objNoSuppress->eq("\x{4E4}", "\x{418}\x{308}"));
+ok($objNoSuppress->eq("\x{457}", "\x{456}\x{308}"));
+ok($objNoSuppress->eq("\x{407}", "\x{406}\x{308}"));
+ok($objNoSuppress->eq("\x{439}", "\x{438}\x{306}"));
+ok($objNoSuppress->eq("\x{419}", "\x{418}\x{306}"));
+ok($objNoSuppress->eq("\x{4E7}", "\x{43E}\x{308}"));
+ok($objNoSuppress->eq("\x{4E6}", "\x{41E}\x{308}"));
+ok($objNoSuppress->eq("\x{45C}", "\x{43A}\x{301}"));
+ok($objNoSuppress->eq("\x{40C}", "\x{41A}\x{301}"));
+ok($objNoSuppress->eq("\x{45E}", "\x{443}\x{306}"));
+ok($objNoSuppress->eq("\x{40E}", "\x{423}\x{306}"));
+ok($objNoSuppress->eq("\x{4F1}", "\x{443}\x{308}"));
+ok($objNoSuppress->eq("\x{4F0}", "\x{423}\x{308}"));
+ok($objNoSuppress->eq("\x{4F3}", "\x{443}\x{30B}"));
+ok($objNoSuppress->eq("\x{4F2}", "\x{423}\x{30B}"));
+ok($objNoSuppress->eq("\x{4F5}", "\x{447}\x{308}"));
+ok($objNoSuppress->eq("\x{4F4}", "\x{427}\x{308}"));
+ok($objNoSuppress->eq("\x{4F9}", "\x{44B}\x{308}"));
+ok($objNoSuppress->eq("\x{4F8}", "\x{42B}\x{308}"));
+ok($objNoSuppress->eq("\x{4ED}", "\x{44D}\x{308}"));
+ok($objNoSuppress->eq("\x{4EC}", "\x{42D}\x{308}"));
+
+# 70
+
+ok($objNoSuppress->ne("\x{4D1}", "\x{430}\0\x{306}"));
+ok($objNoSuppress->ne("\x{4D0}", "\x{410}\0\x{306}"));
+ok($objNoSuppress->ne("\x{4D3}", "\x{430}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4D2}", "\x{410}\0\x{308}"));
+ok($objNoSuppress->ne("\x{453}", "\x{433}\0\x{301}"));
+ok($objNoSuppress->ne("\x{403}", "\x{413}\0\x{301}"));
+ok($objNoSuppress->ne("\x{4D7}", "\x{435}\0\x{306}"));
+ok($objNoSuppress->ne("\x{4D6}", "\x{415}\0\x{306}"));
+ok($objNoSuppress->ne("\x{4DD}", "\x{436}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4DC}", "\x{416}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4DF}", "\x{437}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4DE}", "\x{417}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4E5}", "\x{438}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4E4}", "\x{418}\0\x{308}"));
+ok($objNoSuppress->ne("\x{457}", "\x{456}\0\x{308}"));
+ok($objNoSuppress->ne("\x{407}", "\x{406}\0\x{308}"));
+ok($objNoSuppress->ne("\x{439}", "\x{438}\0\x{306}"));
+ok($objNoSuppress->ne("\x{419}", "\x{418}\0\x{306}"));
+ok($objNoSuppress->ne("\x{4E7}", "\x{43E}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4E6}", "\x{41E}\0\x{308}"));
+ok($objNoSuppress->ne("\x{45C}", "\x{43A}\0\x{301}"));
+ok($objNoSuppress->ne("\x{40C}", "\x{41A}\0\x{301}"));
+ok($objNoSuppress->ne("\x{45E}", "\x{443}\0\x{306}"));
+ok($objNoSuppress->ne("\x{40E}", "\x{423}\0\x{306}"));
+ok($objNoSuppress->ne("\x{4F1}", "\x{443}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4F0}", "\x{423}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4F3}", "\x{443}\0\x{30B}"));
+ok($objNoSuppress->ne("\x{4F2}", "\x{423}\0\x{30B}"));
+ok($objNoSuppress->ne("\x{4F5}", "\x{447}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4F4}", "\x{427}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4F9}", "\x{44B}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4F8}", "\x{42B}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4ED}", "\x{44D}\0\x{308}"));
+ok($objNoSuppress->ne("\x{4EC}", "\x{42D}\0\x{308}"));
+
+# 104
diff --git a/cpan/Unicode-Collate/t/loc_hr.t b/cpan/Unicode-Collate/t/loc_hr.t
index beded45b92..026657e73e 100644
--- a/cpan/Unicode-Collate/t/loc_hr.t
+++ b/cpan/Unicode-Collate/t/loc_hr.t
@@ -4,7 +4,7 @@ use warnings;
use Unicode::Collate::Locale;
use Test;
-plan tests => 86;
+plan tests => 88;
my $objHr = Unicode::Collate::Locale->
new(locale => 'HR', normalization => undef);
@@ -77,7 +77,9 @@ ok($objHr->lt("z\x{30C}", "Z\x{30C}"));
ok($objHr->eq("c\x{30C}", "\x{10D}"));
ok($objHr->eq("C\x{30C}", "\x{10C}"));
ok($objHr->eq("c\x{301}", "\x{107}"));
+ok($objHr->eq("c\x{341}", "\x{107}"));
ok($objHr->eq("C\x{301}", "\x{106}"));
+ok($objHr->eq("C\x{341}", "\x{106}"));
ok($objHr->eq("dz\x{30C}", "\x{1C6}"));
ok($objHr->eq("Dz\x{30C}", "\x{1C5}"));
ok($objHr->eq("DZ\x{30C}", "\x{1C4}"));
@@ -98,7 +100,7 @@ ok($objHr->eq("S\x{30C}", "\x{160}"));
ok($objHr->eq("z\x{30C}", "\x{17E}"));
ok($objHr->eq("Z\x{30C}", "\x{17D}"));
-# 72
+# 74
$objHr->change(upper_before_lower => 1);
@@ -117,4 +119,4 @@ ok($objHr->gt("Nj", "NJ"));
ok($objHr->gt("s\x{30C}", "S\x{30C}"));
ok($objHr->gt("z\x{30C}", "Z\x{30C}"));
-# 86
+# 88
diff --git a/cpan/Unicode-Collate/t/loc_is.t b/cpan/Unicode-Collate/t/loc_is.t
index 6e490a3458..e97357caf9 100644
--- a/cpan/Unicode-Collate/t/loc_is.t
+++ b/cpan/Unicode-Collate/t/loc_is.t
@@ -4,7 +4,7 @@ use warnings;
use Unicode::Collate::Locale;
use Test;
-plan tests => 98;
+plan tests => 110;
my $eth = pack 'U', 0xF0;
my $ETH = pack 'U', 0xD0;
@@ -105,19 +105,31 @@ ok($objIs->lt($arng, $Arng));
# 57
ok($objIs->eq("a\x{301}", pack('U', 0xE1)));
+ok($objIs->eq("a\x{341}", pack('U', 0xE1)));
ok($objIs->eq("A\x{301}", pack('U', 0xC1)));
+ok($objIs->eq("A\x{341}", pack('U', 0xC1)));
ok($objIs->eq("d\x{335}", "\x{111}"));
ok($objIs->eq("D\x{335}", "\x{110}"));
ok($objIs->eq("e\x{301}", pack('U', 0xE9)));
+ok($objIs->eq("e\x{341}", pack('U', 0xE9)));
ok($objIs->eq("E\x{301}", pack('U', 0xC9)));
+ok($objIs->eq("E\x{341}", pack('U', 0xC9)));
ok($objIs->eq("i\x{301}", pack('U', 0xED)));
+ok($objIs->eq("i\x{341}", pack('U', 0xED)));
ok($objIs->eq("I\x{301}", pack('U', 0xCD)));
+ok($objIs->eq("I\x{341}", pack('U', 0xCD)));
ok($objIs->eq("o\x{301}", pack('U', 0xF3)));
+ok($objIs->eq("o\x{341}", pack('U', 0xF3)));
ok($objIs->eq("O\x{301}", pack('U', 0xD3)));
+ok($objIs->eq("O\x{341}", pack('U', 0xD3)));
ok($objIs->eq("u\x{301}", pack('U', 0xFA)));
+ok($objIs->eq("u\x{341}", pack('U', 0xFA)));
ok($objIs->eq("U\x{301}", pack('U', 0xDA)));
+ok($objIs->eq("U\x{341}", pack('U', 0xDA)));
ok($objIs->eq("y\x{301}", pack('U', 0xFD)));
+ok($objIs->eq("y\x{341}", pack('U', 0xFD)));
ok($objIs->eq("Y\x{301}", pack('U', 0xDD)));
+ok($objIs->eq("Y\x{341}", pack('U', 0xDD)));
ok($objIs->eq("a\x{308}", $auml));
ok($objIs->eq("A\x{308}", $Auml));
ok($objIs->eq("o\x{308}", $ouml));
@@ -127,7 +139,7 @@ ok($objIs->eq("O\x{338}", $Ostk));
ok($objIs->eq("a\x{30A}", $arng));
ok($objIs->eq("A\x{30A}", $Arng));
-# 79
+# 91
ok($objIs->eq("\x{1FD}", "$ae\x{301}"));
ok($objIs->eq("\x{1FC}", "$AE\x{301}"));
@@ -143,7 +155,7 @@ ok($objIs->eq("A\x{30A}", "\x{212B}"));
ok($objIs->eq("a\x{30A}\x{301}", "\x{1FB}"));
ok($objIs->eq("A\x{30A}\x{301}", "\x{1FA}"));
-# 92
+# 104
$objIs->change(upper_before_lower => 1);
@@ -154,4 +166,4 @@ ok($objIs->gt($ouml, $Ouml));
ok($objIs->gt($ostk, $Ostk));
ok($objIs->gt($arng, $Arng));
-# 98
+# 110
diff --git a/cpan/Unicode-Collate/t/loc_kk.t b/cpan/Unicode-Collate/t/loc_kk.t
new file mode 100644
index 0000000000..ecdfd6e95f
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_kk.t
@@ -0,0 +1,185 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 149;
+
+my $objKk = Unicode::Collate::Locale->
+ new(locale => 'KK', normalization => undef);
+
+ok(1);
+ok($objKk->getlocale, 'kk');
+
+$objKk->change(level => 1);
+
+ok($objKk->lt("\x{43E}", "\x{4E9}"));
+ok($objKk->gt("\x{43F}", "\x{4E9}"));
+ok($objKk->lt("\x{443}", "\x{4B1}"));
+ok($objKk->gt("\x{4AF}", "\x{4B1}"));
+ok($objKk->lt("\x{44B}", "\x{456}"));
+ok($objKk->gt("\x{44C}", "\x{456}"));
+
+# 8
+
+ok($objKk->eq("\x{4D1}", "\x{430}"));
+ok($objKk->eq("\x{4D0}", "\x{410}"));
+ok($objKk->eq("\x{4D3}", "\x{430}"));
+ok($objKk->eq("\x{4D2}", "\x{410}"));
+ok($objKk->eq("\x{453}", "\x{433}"));
+ok($objKk->eq("\x{403}", "\x{413}"));
+ok($objKk->eq("\x{4D7}", "\x{435}"));
+ok($objKk->eq("\x{4D6}", "\x{415}"));
+ok($objKk->eq("\x{4DD}", "\x{436}"));
+ok($objKk->eq("\x{4DC}", "\x{416}"));
+ok($objKk->eq("\x{4DF}", "\x{437}"));
+ok($objKk->eq("\x{4DE}", "\x{417}"));
+ok($objKk->eq("\x{4E5}", "\x{438}"));
+ok($objKk->eq("\x{4E4}", "\x{418}"));
+ok($objKk->eq("\x{457}", "\x{456}"));
+ok($objKk->eq("\x{407}", "\x{406}"));
+ok($objKk->eq("\x{439}", "\x{438}"));
+ok($objKk->eq("\x{419}", "\x{418}"));
+ok($objKk->eq("\x{4E7}", "\x{43E}"));
+ok($objKk->eq("\x{4E6}", "\x{41E}"));
+ok($objKk->eq("\x{45C}", "\x{43A}"));
+ok($objKk->eq("\x{40C}", "\x{41A}"));
+ok($objKk->eq("\x{45E}", "\x{443}"));
+ok($objKk->eq("\x{40E}", "\x{423}"));
+ok($objKk->eq("\x{4F1}", "\x{443}"));
+ok($objKk->eq("\x{4F0}", "\x{423}"));
+ok($objKk->eq("\x{4F3}", "\x{443}"));
+ok($objKk->eq("\x{4F2}", "\x{423}"));
+ok($objKk->eq("\x{4F5}", "\x{447}"));
+ok($objKk->eq("\x{4F4}", "\x{427}"));
+ok($objKk->eq("\x{4F9}", "\x{44B}"));
+ok($objKk->eq("\x{4F8}", "\x{42B}"));
+ok($objKk->eq("\x{4ED}", "\x{44D}"));
+ok($objKk->eq("\x{4EC}", "\x{42D}"));
+
+# 42
+
+$objKk->change(level => 2);
+
+ok($objKk->gt("\x{4D1}", "\x{430}"));
+ok($objKk->gt("\x{4D0}", "\x{410}"));
+ok($objKk->gt("\x{4D3}", "\x{430}"));
+ok($objKk->gt("\x{4D2}", "\x{410}"));
+ok($objKk->gt("\x{453}", "\x{433}"));
+ok($objKk->gt("\x{403}", "\x{413}"));
+ok($objKk->gt("\x{4D7}", "\x{435}"));
+ok($objKk->gt("\x{4D6}", "\x{415}"));
+ok($objKk->gt("\x{4DD}", "\x{436}"));
+ok($objKk->gt("\x{4DC}", "\x{416}"));
+ok($objKk->gt("\x{4DF}", "\x{437}"));
+ok($objKk->gt("\x{4DE}", "\x{417}"));
+ok($objKk->gt("\x{4E5}", "\x{438}"));
+ok($objKk->gt("\x{4E4}", "\x{418}"));
+ok($objKk->gt("\x{457}", "\x{456}"));
+ok($objKk->gt("\x{407}", "\x{406}"));
+ok($objKk->gt("\x{439}", "\x{438}"));
+ok($objKk->gt("\x{419}", "\x{418}"));
+ok($objKk->gt("\x{4E7}", "\x{43E}"));
+ok($objKk->gt("\x{4E6}", "\x{41E}"));
+ok($objKk->gt("\x{45C}", "\x{43A}"));
+ok($objKk->gt("\x{40C}", "\x{41A}"));
+ok($objKk->gt("\x{45E}", "\x{443}"));
+ok($objKk->gt("\x{40E}", "\x{423}"));
+ok($objKk->gt("\x{4F1}", "\x{443}"));
+ok($objKk->gt("\x{4F0}", "\x{423}"));
+ok($objKk->gt("\x{4F3}", "\x{443}"));
+ok($objKk->gt("\x{4F2}", "\x{423}"));
+ok($objKk->gt("\x{4F5}", "\x{447}"));
+ok($objKk->gt("\x{4F4}", "\x{427}"));
+ok($objKk->gt("\x{4F9}", "\x{44B}"));
+ok($objKk->gt("\x{4F8}", "\x{42B}"));
+ok($objKk->gt("\x{4ED}", "\x{44D}"));
+ok($objKk->gt("\x{4EC}", "\x{42D}"));
+
+# 76
+
+$objKk->change(level => 3);
+
+ok($objKk->lt("\x{4E9}", "\x{4E8}"));
+ok($objKk->lt("\x{4B1}", "\x{4B0}"));
+ok($objKk->lt("\x{456}", "\x{406}"));
+
+ok($objKk->eq("\x{4EB}", "\x{4E9}\x{308}"));
+ok($objKk->eq("\x{4EA}", "\x{4E8}\x{308}"));
+
+# 81
+
+ok($objKk->eq("\x{4D1}", "\x{430}\x{306}"));
+ok($objKk->eq("\x{4D0}", "\x{410}\x{306}"));
+ok($objKk->eq("\x{4D3}", "\x{430}\x{308}"));
+ok($objKk->eq("\x{4D2}", "\x{410}\x{308}"));
+ok($objKk->eq("\x{453}", "\x{433}\x{301}"));
+ok($objKk->eq("\x{403}", "\x{413}\x{301}"));
+ok($objKk->eq("\x{4D7}", "\x{435}\x{306}"));
+ok($objKk->eq("\x{4D6}", "\x{415}\x{306}"));
+ok($objKk->eq("\x{4DD}", "\x{436}\x{308}"));
+ok($objKk->eq("\x{4DC}", "\x{416}\x{308}"));
+ok($objKk->eq("\x{4DF}", "\x{437}\x{308}"));
+ok($objKk->eq("\x{4DE}", "\x{417}\x{308}"));
+ok($objKk->eq("\x{4E5}", "\x{438}\x{308}"));
+ok($objKk->eq("\x{4E4}", "\x{418}\x{308}"));
+ok($objKk->eq("\x{457}", "\x{456}\x{308}"));
+ok($objKk->eq("\x{407}", "\x{406}\x{308}"));
+ok($objKk->eq("\x{439}", "\x{438}\x{306}"));
+ok($objKk->eq("\x{419}", "\x{418}\x{306}"));
+ok($objKk->eq("\x{4E7}", "\x{43E}\x{308}"));
+ok($objKk->eq("\x{4E6}", "\x{41E}\x{308}"));
+ok($objKk->eq("\x{45C}", "\x{43A}\x{301}"));
+ok($objKk->eq("\x{40C}", "\x{41A}\x{301}"));
+ok($objKk->eq("\x{45E}", "\x{443}\x{306}"));
+ok($objKk->eq("\x{40E}", "\x{423}\x{306}"));
+ok($objKk->eq("\x{4F1}", "\x{443}\x{308}"));
+ok($objKk->eq("\x{4F0}", "\x{423}\x{308}"));
+ok($objKk->eq("\x{4F3}", "\x{443}\x{30B}"));
+ok($objKk->eq("\x{4F2}", "\x{423}\x{30B}"));
+ok($objKk->eq("\x{4F5}", "\x{447}\x{308}"));
+ok($objKk->eq("\x{4F4}", "\x{427}\x{308}"));
+ok($objKk->eq("\x{4F9}", "\x{44B}\x{308}"));
+ok($objKk->eq("\x{4F8}", "\x{42B}\x{308}"));
+ok($objKk->eq("\x{4ED}", "\x{44D}\x{308}"));
+ok($objKk->eq("\x{4EC}", "\x{42D}\x{308}"));
+
+# 115
+
+ok($objKk->eq("\x{4D1}", "\x{430}\0\x{306}"));
+ok($objKk->eq("\x{4D0}", "\x{410}\0\x{306}"));
+ok($objKk->eq("\x{4D3}", "\x{430}\0\x{308}"));
+ok($objKk->eq("\x{4D2}", "\x{410}\0\x{308}"));
+ok($objKk->eq("\x{453}", "\x{433}\0\x{301}"));
+ok($objKk->eq("\x{403}", "\x{413}\0\x{301}"));
+ok($objKk->eq("\x{4D7}", "\x{435}\0\x{306}"));
+ok($objKk->eq("\x{4D6}", "\x{415}\0\x{306}"));
+ok($objKk->eq("\x{4DD}", "\x{436}\0\x{308}"));
+ok($objKk->eq("\x{4DC}", "\x{416}\0\x{308}"));
+ok($objKk->eq("\x{4DF}", "\x{437}\0\x{308}"));
+ok($objKk->eq("\x{4DE}", "\x{417}\0\x{308}"));
+ok($objKk->eq("\x{4E5}", "\x{438}\0\x{308}"));
+ok($objKk->eq("\x{4E4}", "\x{418}\0\x{308}"));
+ok($objKk->eq("\x{457}", "\x{456}\0\x{308}"));
+ok($objKk->eq("\x{407}", "\x{406}\0\x{308}"));
+ok($objKk->eq("\x{439}", "\x{438}\0\x{306}"));
+ok($objKk->eq("\x{419}", "\x{418}\0\x{306}"));
+ok($objKk->eq("\x{4E7}", "\x{43E}\0\x{308}"));
+ok($objKk->eq("\x{4E6}", "\x{41E}\0\x{308}"));
+ok($objKk->eq("\x{45C}", "\x{43A}\0\x{301}"));
+ok($objKk->eq("\x{40C}", "\x{41A}\0\x{301}"));
+ok($objKk->eq("\x{45E}", "\x{443}\0\x{306}"));
+ok($objKk->eq("\x{40E}", "\x{423}\0\x{306}"));
+ok($objKk->eq("\x{4F1}", "\x{443}\0\x{308}"));
+ok($objKk->eq("\x{4F0}", "\x{423}\0\x{308}"));
+ok($objKk->eq("\x{4F3}", "\x{443}\0\x{30B}"));
+ok($objKk->eq("\x{4F2}", "\x{423}\0\x{30B}"));
+ok($objKk->eq("\x{4F5}", "\x{447}\0\x{308}"));
+ok($objKk->eq("\x{4F4}", "\x{427}\0\x{308}"));
+ok($objKk->eq("\x{4F9}", "\x{44B}\0\x{308}"));
+ok($objKk->eq("\x{4F8}", "\x{42B}\0\x{308}"));
+ok($objKk->eq("\x{4ED}", "\x{44D}\0\x{308}"));
+ok($objKk->eq("\x{4EC}", "\x{42D}\0\x{308}"));
+
+# 149
diff --git a/cpan/Unicode-Collate/t/loc_mk.t b/cpan/Unicode-Collate/t/loc_mk.t
new file mode 100644
index 0000000000..87164baa25
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_mk.t
@@ -0,0 +1,162 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 130;
+
+my $objMk = Unicode::Collate::Locale->
+ new(locale => 'MK', normalization => undef);
+
+ok(1);
+ok($objMk->getlocale, 'mk');
+
+$objMk->change(level => 1);
+
+ok($objMk->gt("\x{4E5}", "\x{438}"));
+ok($objMk->gt("\x{4E4}", "\x{418}"));
+ok($objMk->gt("\x{439}", "\x{438}"));
+ok($objMk->gt("\x{419}", "\x{418}"));
+
+# 6
+
+ok($objMk->eq("\x{4D1}", "\x{430}"));
+ok($objMk->eq("\x{4D0}", "\x{410}"));
+ok($objMk->eq("\x{4D3}", "\x{430}"));
+ok($objMk->eq("\x{4D2}", "\x{410}"));
+ok($objMk->eq("\x{453}", "\x{433}"));
+ok($objMk->eq("\x{403}", "\x{413}"));
+ok($objMk->eq("\x{4D7}", "\x{435}"));
+ok($objMk->eq("\x{4D6}", "\x{415}"));
+ok($objMk->eq("\x{4DD}", "\x{436}"));
+ok($objMk->eq("\x{4DC}", "\x{416}"));
+ok($objMk->eq("\x{4DF}", "\x{437}"));
+ok($objMk->eq("\x{4DE}", "\x{417}"));
+ok($objMk->eq("\x{457}", "\x{456}"));
+ok($objMk->eq("\x{407}", "\x{406}"));
+ok($objMk->eq("\x{4E7}", "\x{43E}"));
+ok($objMk->eq("\x{4E6}", "\x{41E}"));
+ok($objMk->eq("\x{45C}", "\x{43A}"));
+ok($objMk->eq("\x{40C}", "\x{41A}"));
+ok($objMk->eq("\x{45E}", "\x{443}"));
+ok($objMk->eq("\x{40E}", "\x{423}"));
+ok($objMk->eq("\x{4F1}", "\x{443}"));
+ok($objMk->eq("\x{4F0}", "\x{423}"));
+ok($objMk->eq("\x{4F3}", "\x{443}"));
+ok($objMk->eq("\x{4F2}", "\x{423}"));
+ok($objMk->eq("\x{4F5}", "\x{447}"));
+ok($objMk->eq("\x{4F4}", "\x{427}"));
+ok($objMk->eq("\x{4F9}", "\x{44B}"));
+ok($objMk->eq("\x{4F8}", "\x{42B}"));
+ok($objMk->eq("\x{4ED}", "\x{44D}"));
+ok($objMk->eq("\x{4EC}", "\x{42D}"));
+
+# 36
+
+$objMk->change(level => 2);
+
+ok($objMk->gt("\x{4D1}", "\x{430}"));
+ok($objMk->gt("\x{4D0}", "\x{410}"));
+ok($objMk->gt("\x{4D3}", "\x{430}"));
+ok($objMk->gt("\x{4D2}", "\x{410}"));
+ok($objMk->gt("\x{453}", "\x{433}"));
+ok($objMk->gt("\x{403}", "\x{413}"));
+ok($objMk->gt("\x{4D7}", "\x{435}"));
+ok($objMk->gt("\x{4D6}", "\x{415}"));
+ok($objMk->gt("\x{4DD}", "\x{436}"));
+ok($objMk->gt("\x{4DC}", "\x{416}"));
+ok($objMk->gt("\x{4DF}", "\x{437}"));
+ok($objMk->gt("\x{4DE}", "\x{417}"));
+ok($objMk->gt("\x{457}", "\x{456}"));
+ok($objMk->gt("\x{407}", "\x{406}"));
+ok($objMk->gt("\x{4E7}", "\x{43E}"));
+ok($objMk->gt("\x{4E6}", "\x{41E}"));
+ok($objMk->gt("\x{45C}", "\x{43A}"));
+ok($objMk->gt("\x{40C}", "\x{41A}"));
+ok($objMk->gt("\x{45E}", "\x{443}"));
+ok($objMk->gt("\x{40E}", "\x{423}"));
+ok($objMk->gt("\x{4F1}", "\x{443}"));
+ok($objMk->gt("\x{4F0}", "\x{423}"));
+ok($objMk->gt("\x{4F3}", "\x{443}"));
+ok($objMk->gt("\x{4F2}", "\x{423}"));
+ok($objMk->gt("\x{4F5}", "\x{447}"));
+ok($objMk->gt("\x{4F4}", "\x{427}"));
+ok($objMk->gt("\x{4F9}", "\x{44B}"));
+ok($objMk->gt("\x{4F8}", "\x{42B}"));
+ok($objMk->gt("\x{4ED}", "\x{44D}"));
+ok($objMk->gt("\x{4EC}", "\x{42D}"));
+
+# 66
+
+$objMk->change(level => 3);
+
+ok($objMk->eq("\x{4D1}", "\x{430}\x{306}"));
+ok($objMk->eq("\x{4D0}", "\x{410}\x{306}"));
+ok($objMk->eq("\x{4D3}", "\x{430}\x{308}"));
+ok($objMk->eq("\x{4D2}", "\x{410}\x{308}"));
+ok($objMk->eq("\x{453}", "\x{433}\x{301}"));
+ok($objMk->eq("\x{403}", "\x{413}\x{301}"));
+ok($objMk->eq("\x{4D7}", "\x{435}\x{306}"));
+ok($objMk->eq("\x{4D6}", "\x{415}\x{306}"));
+ok($objMk->eq("\x{4DD}", "\x{436}\x{308}"));
+ok($objMk->eq("\x{4DC}", "\x{416}\x{308}"));
+ok($objMk->eq("\x{4DF}", "\x{437}\x{308}"));
+ok($objMk->eq("\x{4DE}", "\x{417}\x{308}"));
+ok($objMk->eq("\x{4E5}", "\x{438}\x{308}"));
+ok($objMk->eq("\x{4E4}", "\x{418}\x{308}"));
+ok($objMk->eq("\x{457}", "\x{456}\x{308}"));
+ok($objMk->eq("\x{407}", "\x{406}\x{308}"));
+ok($objMk->eq("\x{439}", "\x{438}\x{306}"));
+ok($objMk->eq("\x{419}", "\x{418}\x{306}"));
+ok($objMk->eq("\x{4E7}", "\x{43E}\x{308}"));
+ok($objMk->eq("\x{4E6}", "\x{41E}\x{308}"));
+ok($objMk->eq("\x{45C}", "\x{43A}\x{301}"));
+ok($objMk->eq("\x{40C}", "\x{41A}\x{301}"));
+ok($objMk->eq("\x{45E}", "\x{443}\x{306}"));
+ok($objMk->eq("\x{40E}", "\x{423}\x{306}"));
+ok($objMk->eq("\x{4F1}", "\x{443}\x{308}"));
+ok($objMk->eq("\x{4F0}", "\x{423}\x{308}"));
+ok($objMk->eq("\x{4F3}", "\x{443}\x{30B}"));
+ok($objMk->eq("\x{4F2}", "\x{423}\x{30B}"));
+ok($objMk->eq("\x{4F5}", "\x{447}\x{308}"));
+ok($objMk->eq("\x{4F4}", "\x{427}\x{308}"));
+ok($objMk->eq("\x{4F9}", "\x{44B}\x{308}"));
+ok($objMk->eq("\x{4F8}", "\x{42B}\x{308}"));
+ok($objMk->eq("\x{4ED}", "\x{44D}\x{308}"));
+ok($objMk->eq("\x{4EC}", "\x{42D}\x{308}"));
+
+# 100
+
+ok($objMk->eq("\x{4D1}", "\x{430}\0\x{306}"));
+ok($objMk->eq("\x{4D0}", "\x{410}\0\x{306}"));
+ok($objMk->eq("\x{4D3}", "\x{430}\0\x{308}"));
+ok($objMk->eq("\x{4D2}", "\x{410}\0\x{308}"));
+ok($objMk->eq("\x{453}", "\x{433}\0\x{301}"));
+ok($objMk->eq("\x{403}", "\x{413}\0\x{301}"));
+ok($objMk->eq("\x{4D7}", "\x{435}\0\x{306}"));
+ok($objMk->eq("\x{4D6}", "\x{415}\0\x{306}"));
+ok($objMk->eq("\x{4DD}", "\x{436}\0\x{308}"));
+ok($objMk->eq("\x{4DC}", "\x{416}\0\x{308}"));
+ok($objMk->eq("\x{4DF}", "\x{437}\0\x{308}"));
+ok($objMk->eq("\x{4DE}", "\x{417}\0\x{308}"));
+ok($objMk->eq("\x{457}", "\x{456}\0\x{308}"));
+ok($objMk->eq("\x{407}", "\x{406}\0\x{308}"));
+ok($objMk->eq("\x{4E7}", "\x{43E}\0\x{308}"));
+ok($objMk->eq("\x{4E6}", "\x{41E}\0\x{308}"));
+ok($objMk->eq("\x{45C}", "\x{43A}\0\x{301}"));
+ok($objMk->eq("\x{40C}", "\x{41A}\0\x{301}"));
+ok($objMk->eq("\x{45E}", "\x{443}\0\x{306}"));
+ok($objMk->eq("\x{40E}", "\x{423}\0\x{306}"));
+ok($objMk->eq("\x{4F1}", "\x{443}\0\x{308}"));
+ok($objMk->eq("\x{4F0}", "\x{423}\0\x{308}"));
+ok($objMk->eq("\x{4F3}", "\x{443}\0\x{30B}"));
+ok($objMk->eq("\x{4F2}", "\x{423}\0\x{30B}"));
+ok($objMk->eq("\x{4F5}", "\x{447}\0\x{308}"));
+ok($objMk->eq("\x{4F4}", "\x{427}\0\x{308}"));
+ok($objMk->eq("\x{4F9}", "\x{44B}\0\x{308}"));
+ok($objMk->eq("\x{4F8}", "\x{42B}\0\x{308}"));
+ok($objMk->eq("\x{4ED}", "\x{44D}\0\x{308}"));
+ok($objMk->eq("\x{4EC}", "\x{42D}\0\x{308}"));
+
+# 130
diff --git a/cpan/Unicode-Collate/t/loc_pl.t b/cpan/Unicode-Collate/t/loc_pl.t
index 380744930a..5291062fe1 100644
--- a/cpan/Unicode-Collate/t/loc_pl.t
+++ b/cpan/Unicode-Collate/t/loc_pl.t
@@ -4,7 +4,7 @@ use warnings;
use Unicode::Collate::Locale;
use Test;
-plan tests => 55;
+plan tests => 65;
my $objPl = Unicode::Collate::Locale->
new(locale => 'PL', normalization => undef);
@@ -65,20 +65,30 @@ ok($objPl->lt("z\x{307}", "Z\x{307}"));
ok($objPl->eq("a\x{328}", "\x{105}"));
ok($objPl->eq("A\x{328}", "\x{104}"));
ok($objPl->eq("c\x{301}", "\x{107}"));
+ok($objPl->eq("c\x{341}", "\x{107}"));
ok($objPl->eq("C\x{301}", "\x{106}"));
+ok($objPl->eq("C\x{341}", "\x{106}"));
ok($objPl->eq("e\x{328}", "\x{119}"));
ok($objPl->eq("E\x{328}", "\x{118}"));
ok($objPl->eq("l\x{335}", "\x{142}"));
ok($objPl->eq("L\x{335}", "\x{141}"));
ok($objPl->eq("n\x{301}", "\x{144}"));
+ok($objPl->eq("n\x{341}", "\x{144}"));
ok($objPl->eq("N\x{301}", "\x{143}"));
+ok($objPl->eq("N\x{341}", "\x{143}"));
ok($objPl->eq("o\x{301}", pack('U', 0xF3)));
+ok($objPl->eq("o\x{341}", pack('U', 0xF3)));
ok($objPl->eq("O\x{301}", pack('U', 0xD3)));
+ok($objPl->eq("O\x{341}", pack('U', 0xD3)));
ok($objPl->eq("s\x{301}", "\x{15B}"));
+ok($objPl->eq("s\x{341}", "\x{15B}"));
ok($objPl->eq("S\x{301}", "\x{15A}"));
+ok($objPl->eq("S\x{341}", "\x{15A}"));
ok($objPl->eq("z\x{301}", "\x{17A}"));
+ok($objPl->eq("z\x{341}", "\x{17A}"));
ok($objPl->eq("Z\x{301}", "\x{179}"));
+ok($objPl->eq("Z\x{341}", "\x{179}"));
ok($objPl->eq("z\x{307}", "\x{17C}"));
ok($objPl->eq("Z\x{307}", "\x{17B}"));
-# 55
+# 65
diff --git a/cpan/Unicode-Collate/t/loc_ru.t b/cpan/Unicode-Collate/t/loc_ru.t
new file mode 100644
index 0000000000..111f81d91d
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_ru.t
@@ -0,0 +1,162 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 130;
+
+my $objRu = Unicode::Collate::Locale->
+ new(locale => 'RU', normalization => undef);
+
+ok(1);
+ok($objRu->getlocale, 'ru');
+
+$objRu->change(level => 1);
+
+ok($objRu->gt("\x{4E5}", "\x{438}"));
+ok($objRu->gt("\x{4E4}", "\x{418}"));
+ok($objRu->gt("\x{439}", "\x{438}"));
+ok($objRu->gt("\x{419}", "\x{418}"));
+
+# 6
+
+ok($objRu->eq("\x{4D1}", "\x{430}"));
+ok($objRu->eq("\x{4D0}", "\x{410}"));
+ok($objRu->eq("\x{4D3}", "\x{430}"));
+ok($objRu->eq("\x{4D2}", "\x{410}"));
+ok($objRu->eq("\x{453}", "\x{433}"));
+ok($objRu->eq("\x{403}", "\x{413}"));
+ok($objRu->eq("\x{4D7}", "\x{435}"));
+ok($objRu->eq("\x{4D6}", "\x{415}"));
+ok($objRu->eq("\x{4DD}", "\x{436}"));
+ok($objRu->eq("\x{4DC}", "\x{416}"));
+ok($objRu->eq("\x{4DF}", "\x{437}"));
+ok($objRu->eq("\x{4DE}", "\x{417}"));
+ok($objRu->eq("\x{457}", "\x{456}"));
+ok($objRu->eq("\x{407}", "\x{406}"));
+ok($objRu->eq("\x{4E7}", "\x{43E}"));
+ok($objRu->eq("\x{4E6}", "\x{41E}"));
+ok($objRu->eq("\x{45C}", "\x{43A}"));
+ok($objRu->eq("\x{40C}", "\x{41A}"));
+ok($objRu->eq("\x{45E}", "\x{443}"));
+ok($objRu->eq("\x{40E}", "\x{423}"));
+ok($objRu->eq("\x{4F1}", "\x{443}"));
+ok($objRu->eq("\x{4F0}", "\x{423}"));
+ok($objRu->eq("\x{4F3}", "\x{443}"));
+ok($objRu->eq("\x{4F2}", "\x{423}"));
+ok($objRu->eq("\x{4F5}", "\x{447}"));
+ok($objRu->eq("\x{4F4}", "\x{427}"));
+ok($objRu->eq("\x{4F9}", "\x{44B}"));
+ok($objRu->eq("\x{4F8}", "\x{42B}"));
+ok($objRu->eq("\x{4ED}", "\x{44D}"));
+ok($objRu->eq("\x{4EC}", "\x{42D}"));
+
+# 36
+
+$objRu->change(level => 2);
+
+ok($objRu->gt("\x{4D1}", "\x{430}"));
+ok($objRu->gt("\x{4D0}", "\x{410}"));
+ok($objRu->gt("\x{4D3}", "\x{430}"));
+ok($objRu->gt("\x{4D2}", "\x{410}"));
+ok($objRu->gt("\x{453}", "\x{433}"));
+ok($objRu->gt("\x{403}", "\x{413}"));
+ok($objRu->gt("\x{4D7}", "\x{435}"));
+ok($objRu->gt("\x{4D6}", "\x{415}"));
+ok($objRu->gt("\x{4DD}", "\x{436}"));
+ok($objRu->gt("\x{4DC}", "\x{416}"));
+ok($objRu->gt("\x{4DF}", "\x{437}"));
+ok($objRu->gt("\x{4DE}", "\x{417}"));
+ok($objRu->gt("\x{457}", "\x{456}"));
+ok($objRu->gt("\x{407}", "\x{406}"));
+ok($objRu->gt("\x{4E7}", "\x{43E}"));
+ok($objRu->gt("\x{4E6}", "\x{41E}"));
+ok($objRu->gt("\x{45C}", "\x{43A}"));
+ok($objRu->gt("\x{40C}", "\x{41A}"));
+ok($objRu->gt("\x{45E}", "\x{443}"));
+ok($objRu->gt("\x{40E}", "\x{423}"));
+ok($objRu->gt("\x{4F1}", "\x{443}"));
+ok($objRu->gt("\x{4F0}", "\x{423}"));
+ok($objRu->gt("\x{4F3}", "\x{443}"));
+ok($objRu->gt("\x{4F2}", "\x{423}"));
+ok($objRu->gt("\x{4F5}", "\x{447}"));
+ok($objRu->gt("\x{4F4}", "\x{427}"));
+ok($objRu->gt("\x{4F9}", "\x{44B}"));
+ok($objRu->gt("\x{4F8}", "\x{42B}"));
+ok($objRu->gt("\x{4ED}", "\x{44D}"));
+ok($objRu->gt("\x{4EC}", "\x{42D}"));
+
+# 66
+
+$objRu->change(level => 3);
+
+ok($objRu->eq("\x{4D1}", "\x{430}\x{306}"));
+ok($objRu->eq("\x{4D0}", "\x{410}\x{306}"));
+ok($objRu->eq("\x{4D3}", "\x{430}\x{308}"));
+ok($objRu->eq("\x{4D2}", "\x{410}\x{308}"));
+ok($objRu->eq("\x{453}", "\x{433}\x{301}"));
+ok($objRu->eq("\x{403}", "\x{413}\x{301}"));
+ok($objRu->eq("\x{4D7}", "\x{435}\x{306}"));
+ok($objRu->eq("\x{4D6}", "\x{415}\x{306}"));
+ok($objRu->eq("\x{4DD}", "\x{436}\x{308}"));
+ok($objRu->eq("\x{4DC}", "\x{416}\x{308}"));
+ok($objRu->eq("\x{4DF}", "\x{437}\x{308}"));
+ok($objRu->eq("\x{4DE}", "\x{417}\x{308}"));
+ok($objRu->eq("\x{4E5}", "\x{438}\x{308}"));
+ok($objRu->eq("\x{4E4}", "\x{418}\x{308}"));
+ok($objRu->eq("\x{457}", "\x{456}\x{308}"));
+ok($objRu->eq("\x{407}", "\x{406}\x{308}"));
+ok($objRu->eq("\x{439}", "\x{438}\x{306}"));
+ok($objRu->eq("\x{419}", "\x{418}\x{306}"));
+ok($objRu->eq("\x{4E7}", "\x{43E}\x{308}"));
+ok($objRu->eq("\x{4E6}", "\x{41E}\x{308}"));
+ok($objRu->eq("\x{45C}", "\x{43A}\x{301}"));
+ok($objRu->eq("\x{40C}", "\x{41A}\x{301}"));
+ok($objRu->eq("\x{45E}", "\x{443}\x{306}"));
+ok($objRu->eq("\x{40E}", "\x{423}\x{306}"));
+ok($objRu->eq("\x{4F1}", "\x{443}\x{308}"));
+ok($objRu->eq("\x{4F0}", "\x{423}\x{308}"));
+ok($objRu->eq("\x{4F3}", "\x{443}\x{30B}"));
+ok($objRu->eq("\x{4F2}", "\x{423}\x{30B}"));
+ok($objRu->eq("\x{4F5}", "\x{447}\x{308}"));
+ok($objRu->eq("\x{4F4}", "\x{427}\x{308}"));
+ok($objRu->eq("\x{4F9}", "\x{44B}\x{308}"));
+ok($objRu->eq("\x{4F8}", "\x{42B}\x{308}"));
+ok($objRu->eq("\x{4ED}", "\x{44D}\x{308}"));
+ok($objRu->eq("\x{4EC}", "\x{42D}\x{308}"));
+
+# 100
+
+ok($objRu->eq("\x{4D1}", "\x{430}\0\x{306}"));
+ok($objRu->eq("\x{4D0}", "\x{410}\0\x{306}"));
+ok($objRu->eq("\x{4D3}", "\x{430}\0\x{308}"));
+ok($objRu->eq("\x{4D2}", "\x{410}\0\x{308}"));
+ok($objRu->eq("\x{453}", "\x{433}\0\x{301}"));
+ok($objRu->eq("\x{403}", "\x{413}\0\x{301}"));
+ok($objRu->eq("\x{4D7}", "\x{435}\0\x{306}"));
+ok($objRu->eq("\x{4D6}", "\x{415}\0\x{306}"));
+ok($objRu->eq("\x{4DD}", "\x{436}\0\x{308}"));
+ok($objRu->eq("\x{4DC}", "\x{416}\0\x{308}"));
+ok($objRu->eq("\x{4DF}", "\x{437}\0\x{308}"));
+ok($objRu->eq("\x{4DE}", "\x{417}\0\x{308}"));
+ok($objRu->eq("\x{457}", "\x{456}\0\x{308}"));
+ok($objRu->eq("\x{407}", "\x{406}\0\x{308}"));
+ok($objRu->eq("\x{4E7}", "\x{43E}\0\x{308}"));
+ok($objRu->eq("\x{4E6}", "\x{41E}\0\x{308}"));
+ok($objRu->eq("\x{45C}", "\x{43A}\0\x{301}"));
+ok($objRu->eq("\x{40C}", "\x{41A}\0\x{301}"));
+ok($objRu->eq("\x{45E}", "\x{443}\0\x{306}"));
+ok($objRu->eq("\x{40E}", "\x{423}\0\x{306}"));
+ok($objRu->eq("\x{4F1}", "\x{443}\0\x{308}"));
+ok($objRu->eq("\x{4F0}", "\x{423}\0\x{308}"));
+ok($objRu->eq("\x{4F3}", "\x{443}\0\x{30B}"));
+ok($objRu->eq("\x{4F2}", "\x{423}\0\x{30B}"));
+ok($objRu->eq("\x{4F5}", "\x{447}\0\x{308}"));
+ok($objRu->eq("\x{4F4}", "\x{427}\0\x{308}"));
+ok($objRu->eq("\x{4F9}", "\x{44B}\0\x{308}"));
+ok($objRu->eq("\x{4F8}", "\x{42B}\0\x{308}"));
+ok($objRu->eq("\x{4ED}", "\x{44D}\0\x{308}"));
+ok($objRu->eq("\x{4EC}", "\x{42D}\0\x{308}"));
+
+# 130
diff --git a/cpan/Unicode-Collate/t/loc_se.t b/cpan/Unicode-Collate/t/loc_se.t
index 5921fd49b0..9e3ecf0037 100644
--- a/cpan/Unicode-Collate/t/loc_se.t
+++ b/cpan/Unicode-Collate/t/loc_se.t
@@ -4,7 +4,7 @@ use warnings;
use Unicode::Collate::Locale;
use Test;
-plan tests => 213;
+plan tests => 217;
my $objSe = Unicode::Collate::Locale->
new(locale => 'SE', normalization => undef);
@@ -155,7 +155,9 @@ ok($objSe->lt("o\x{328}", "O\x{328}"));
# 116
ok($objSe->eq("a\x{301}", pack('U', 0xE1)));
+ok($objSe->eq("a\x{341}", pack('U', 0xE1)));
ok($objSe->eq("A\x{301}", pack('U', 0xC1)));
+ok($objSe->eq("A\x{341}", pack('U', 0xC1)));
ok($objSe->eq("c\x{30C}", "\x{10D}"));
ok($objSe->eq("C\x{30C}", "\x{10C}"));
ok($objSe->eq("\x{1EF}", "\x{292}\x{30C}"));
@@ -167,7 +169,9 @@ ok($objSe->eq("G\x{30C}", "\x{1E6}"));
ok($objSe->eq("k\x{30C}", "\x{1E9}"));
ok($objSe->eq("K\x{30C}", "\x{1E8}"));
ok($objSe->eq("n\x{301}", "\x{144}"));
+ok($objSe->eq("n\x{341}", "\x{144}"));
ok($objSe->eq("N\x{301}", "\x{143}"));
+ok($objSe->eq("N\x{341}", "\x{143}"));
ok($objSe->eq("n\x{303}", pack('U', 0xF1)));
ok($objSe->eq("N\x{303}", pack('U', 0xD1)));
ok($objSe->eq("s\x{30C}", "\x{161}"));
@@ -177,7 +181,7 @@ ok($objSe->eq("U\x{308}", pack('U', 0xDC)));
ok($objSe->eq("u\x{30B}", "\x{171}"));
ok($objSe->eq("U\x{30B}", "\x{170}"));
-# 138
+# 142
ok($objSe->eq("z\x{30C}", "\x{17E}"));
ok($objSe->eq("Z\x{30C}", "\x{17D}"));
@@ -202,7 +206,7 @@ ok($objSe->eq("O\x{302}", pack('U', 0xD4)));
ok($objSe->eq("o\x{328}", "\x{1EB}"));
ok($objSe->eq("O\x{328}", "\x{1EA}"));
-# 160
+# 164
ok($objSe->eq("u\x{308}\x{300}", "\x{1DC}"));
ok($objSe->eq("U\x{308}\x{300}", "\x{1DB}"));
@@ -247,7 +251,7 @@ ok($objSe->eq("O\x{302}\x{309}", "\x{1ED4}"));
ok($objSe->eq("o\x{302}\x{323}", "\x{1ED9}"));
ok($objSe->eq("O\x{302}\x{323}", "\x{1ED8}"));
-# 199
+# 203
$objSe->change(upper_before_lower => 1);
@@ -266,4 +270,4 @@ ok($objSe->gt("o\x{303}", "O\x{303}"));
ok($objSe->gt("o\x{302}", "O\x{302}"));
ok($objSe->gt("o\x{328}", "O\x{328}"));
-# 213
+# 217
diff --git a/cpan/Unicode-Collate/t/loc_sr.t b/cpan/Unicode-Collate/t/loc_sr.t
new file mode 100644
index 0000000000..a80fc6208d
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_sr.t
@@ -0,0 +1,162 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 130;
+
+my $objSr = Unicode::Collate::Locale->
+ new(locale => 'SR', normalization => undef);
+
+ok(1);
+ok($objSr->getlocale, 'sr');
+
+$objSr->change(level => 1);
+
+ok($objSr->gt("\x{4E5}", "\x{438}"));
+ok($objSr->gt("\x{4E4}", "\x{418}"));
+ok($objSr->gt("\x{439}", "\x{438}"));
+ok($objSr->gt("\x{419}", "\x{418}"));
+
+# 6
+
+ok($objSr->eq("\x{4D1}", "\x{430}"));
+ok($objSr->eq("\x{4D0}", "\x{410}"));
+ok($objSr->eq("\x{4D3}", "\x{430}"));
+ok($objSr->eq("\x{4D2}", "\x{410}"));
+ok($objSr->eq("\x{453}", "\x{433}"));
+ok($objSr->eq("\x{403}", "\x{413}"));
+ok($objSr->eq("\x{4D7}", "\x{435}"));
+ok($objSr->eq("\x{4D6}", "\x{415}"));
+ok($objSr->eq("\x{4DD}", "\x{436}"));
+ok($objSr->eq("\x{4DC}", "\x{416}"));
+ok($objSr->eq("\x{4DF}", "\x{437}"));
+ok($objSr->eq("\x{4DE}", "\x{417}"));
+ok($objSr->eq("\x{457}", "\x{456}"));
+ok($objSr->eq("\x{407}", "\x{406}"));
+ok($objSr->eq("\x{4E7}", "\x{43E}"));
+ok($objSr->eq("\x{4E6}", "\x{41E}"));
+ok($objSr->eq("\x{45C}", "\x{43A}"));
+ok($objSr->eq("\x{40C}", "\x{41A}"));
+ok($objSr->eq("\x{45E}", "\x{443}"));
+ok($objSr->eq("\x{40E}", "\x{423}"));
+ok($objSr->eq("\x{4F1}", "\x{443}"));
+ok($objSr->eq("\x{4F0}", "\x{423}"));
+ok($objSr->eq("\x{4F3}", "\x{443}"));
+ok($objSr->eq("\x{4F2}", "\x{423}"));
+ok($objSr->eq("\x{4F5}", "\x{447}"));
+ok($objSr->eq("\x{4F4}", "\x{427}"));
+ok($objSr->eq("\x{4F9}", "\x{44B}"));
+ok($objSr->eq("\x{4F8}", "\x{42B}"));
+ok($objSr->eq("\x{4ED}", "\x{44D}"));
+ok($objSr->eq("\x{4EC}", "\x{42D}"));
+
+# 36
+
+$objSr->change(level => 2);
+
+ok($objSr->gt("\x{4D1}", "\x{430}"));
+ok($objSr->gt("\x{4D0}", "\x{410}"));
+ok($objSr->gt("\x{4D3}", "\x{430}"));
+ok($objSr->gt("\x{4D2}", "\x{410}"));
+ok($objSr->gt("\x{453}", "\x{433}"));
+ok($objSr->gt("\x{403}", "\x{413}"));
+ok($objSr->gt("\x{4D7}", "\x{435}"));
+ok($objSr->gt("\x{4D6}", "\x{415}"));
+ok($objSr->gt("\x{4DD}", "\x{436}"));
+ok($objSr->gt("\x{4DC}", "\x{416}"));
+ok($objSr->gt("\x{4DF}", "\x{437}"));
+ok($objSr->gt("\x{4DE}", "\x{417}"));
+ok($objSr->gt("\x{457}", "\x{456}"));
+ok($objSr->gt("\x{407}", "\x{406}"));
+ok($objSr->gt("\x{4E7}", "\x{43E}"));
+ok($objSr->gt("\x{4E6}", "\x{41E}"));
+ok($objSr->gt("\x{45C}", "\x{43A}"));
+ok($objSr->gt("\x{40C}", "\x{41A}"));
+ok($objSr->gt("\x{45E}", "\x{443}"));
+ok($objSr->gt("\x{40E}", "\x{423}"));
+ok($objSr->gt("\x{4F1}", "\x{443}"));
+ok($objSr->gt("\x{4F0}", "\x{423}"));
+ok($objSr->gt("\x{4F3}", "\x{443}"));
+ok($objSr->gt("\x{4F2}", "\x{423}"));
+ok($objSr->gt("\x{4F5}", "\x{447}"));
+ok($objSr->gt("\x{4F4}", "\x{427}"));
+ok($objSr->gt("\x{4F9}", "\x{44B}"));
+ok($objSr->gt("\x{4F8}", "\x{42B}"));
+ok($objSr->gt("\x{4ED}", "\x{44D}"));
+ok($objSr->gt("\x{4EC}", "\x{42D}"));
+
+# 66
+
+$objSr->change(level => 3);
+
+ok($objSr->eq("\x{4D1}", "\x{430}\x{306}"));
+ok($objSr->eq("\x{4D0}", "\x{410}\x{306}"));
+ok($objSr->eq("\x{4D3}", "\x{430}\x{308}"));
+ok($objSr->eq("\x{4D2}", "\x{410}\x{308}"));
+ok($objSr->eq("\x{453}", "\x{433}\x{301}"));
+ok($objSr->eq("\x{403}", "\x{413}\x{301}"));
+ok($objSr->eq("\x{4D7}", "\x{435}\x{306}"));
+ok($objSr->eq("\x{4D6}", "\x{415}\x{306}"));
+ok($objSr->eq("\x{4DD}", "\x{436}\x{308}"));
+ok($objSr->eq("\x{4DC}", "\x{416}\x{308}"));
+ok($objSr->eq("\x{4DF}", "\x{437}\x{308}"));
+ok($objSr->eq("\x{4DE}", "\x{417}\x{308}"));
+ok($objSr->eq("\x{4E5}", "\x{438}\x{308}"));
+ok($objSr->eq("\x{4E4}", "\x{418}\x{308}"));
+ok($objSr->eq("\x{457}", "\x{456}\x{308}"));
+ok($objSr->eq("\x{407}", "\x{406}\x{308}"));
+ok($objSr->eq("\x{439}", "\x{438}\x{306}"));
+ok($objSr->eq("\x{419}", "\x{418}\x{306}"));
+ok($objSr->eq("\x{4E7}", "\x{43E}\x{308}"));
+ok($objSr->eq("\x{4E6}", "\x{41E}\x{308}"));
+ok($objSr->eq("\x{45C}", "\x{43A}\x{301}"));
+ok($objSr->eq("\x{40C}", "\x{41A}\x{301}"));
+ok($objSr->eq("\x{45E}", "\x{443}\x{306}"));
+ok($objSr->eq("\x{40E}", "\x{423}\x{306}"));
+ok($objSr->eq("\x{4F1}", "\x{443}\x{308}"));
+ok($objSr->eq("\x{4F0}", "\x{423}\x{308}"));
+ok($objSr->eq("\x{4F3}", "\x{443}\x{30B}"));
+ok($objSr->eq("\x{4F2}", "\x{423}\x{30B}"));
+ok($objSr->eq("\x{4F5}", "\x{447}\x{308}"));
+ok($objSr->eq("\x{4F4}", "\x{427}\x{308}"));
+ok($objSr->eq("\x{4F9}", "\x{44B}\x{308}"));
+ok($objSr->eq("\x{4F8}", "\x{42B}\x{308}"));
+ok($objSr->eq("\x{4ED}", "\x{44D}\x{308}"));
+ok($objSr->eq("\x{4EC}", "\x{42D}\x{308}"));
+
+# 100
+
+ok($objSr->eq("\x{4D1}", "\x{430}\0\x{306}"));
+ok($objSr->eq("\x{4D0}", "\x{410}\0\x{306}"));
+ok($objSr->eq("\x{4D3}", "\x{430}\0\x{308}"));
+ok($objSr->eq("\x{4D2}", "\x{410}\0\x{308}"));
+ok($objSr->eq("\x{453}", "\x{433}\0\x{301}"));
+ok($objSr->eq("\x{403}", "\x{413}\0\x{301}"));
+ok($objSr->eq("\x{4D7}", "\x{435}\0\x{306}"));
+ok($objSr->eq("\x{4D6}", "\x{415}\0\x{306}"));
+ok($objSr->eq("\x{4DD}", "\x{436}\0\x{308}"));
+ok($objSr->eq("\x{4DC}", "\x{416}\0\x{308}"));
+ok($objSr->eq("\x{4DF}", "\x{437}\0\x{308}"));
+ok($objSr->eq("\x{4DE}", "\x{417}\0\x{308}"));
+ok($objSr->eq("\x{457}", "\x{456}\0\x{308}"));
+ok($objSr->eq("\x{407}", "\x{406}\0\x{308}"));
+ok($objSr->eq("\x{4E7}", "\x{43E}\0\x{308}"));
+ok($objSr->eq("\x{4E6}", "\x{41E}\0\x{308}"));
+ok($objSr->eq("\x{45C}", "\x{43A}\0\x{301}"));
+ok($objSr->eq("\x{40C}", "\x{41A}\0\x{301}"));
+ok($objSr->eq("\x{45E}", "\x{443}\0\x{306}"));
+ok($objSr->eq("\x{40E}", "\x{423}\0\x{306}"));
+ok($objSr->eq("\x{4F1}", "\x{443}\0\x{308}"));
+ok($objSr->eq("\x{4F0}", "\x{423}\0\x{308}"));
+ok($objSr->eq("\x{4F3}", "\x{443}\0\x{30B}"));
+ok($objSr->eq("\x{4F2}", "\x{423}\0\x{30B}"));
+ok($objSr->eq("\x{4F5}", "\x{447}\0\x{308}"));
+ok($objSr->eq("\x{4F4}", "\x{427}\0\x{308}"));
+ok($objSr->eq("\x{4F9}", "\x{44B}\0\x{308}"));
+ok($objSr->eq("\x{4F8}", "\x{42B}\0\x{308}"));
+ok($objSr->eq("\x{4ED}", "\x{44D}\0\x{308}"));
+ok($objSr->eq("\x{4EC}", "\x{42D}\0\x{308}"));
+
+# 130
diff --git a/cpan/Unicode-Collate/t/loc_to.t b/cpan/Unicode-Collate/t/loc_to.t
index e7acf46553..a14c7290f0 100644
--- a/cpan/Unicode-Collate/t/loc_to.t
+++ b/cpan/Unicode-Collate/t/loc_to.t
@@ -4,7 +4,7 @@ use warnings;
use Unicode::Collate::Locale;
use Test;
-plan tests => 122;
+plan tests => 132;
my $objTo = Unicode::Collate::Locale->
new(locale => 'TO', normalization => undef);
@@ -124,17 +124,27 @@ ok($objTo->eq("u\x{304}", "\x{16B}"));
ok($objTo->eq("U\x{304}", "\x{16A}"));
ok($objTo->eq("a\x{301}", pack('U', 0xE1)));
+ok($objTo->eq("a\x{341}", pack('U', 0xE1)));
ok($objTo->eq("A\x{301}", pack('U', 0xC1)));
+ok($objTo->eq("A\x{341}", pack('U', 0xC1)));
ok($objTo->eq("e\x{301}", pack('U', 0xE9)));
+ok($objTo->eq("e\x{341}", pack('U', 0xE9)));
ok($objTo->eq("E\x{301}", pack('U', 0xC9)));
+ok($objTo->eq("E\x{341}", pack('U', 0xC9)));
ok($objTo->eq("i\x{301}", pack('U', 0xED)));
+ok($objTo->eq("i\x{341}", pack('U', 0xED)));
ok($objTo->eq("I\x{301}", pack('U', 0xCD)));
+ok($objTo->eq("I\x{341}", pack('U', 0xCD)));
ok($objTo->eq("o\x{301}", pack('U', 0xF3)));
+ok($objTo->eq("o\x{341}", pack('U', 0xF3)));
ok($objTo->eq("O\x{301}", pack('U', 0xD3)));
+ok($objTo->eq("O\x{341}", pack('U', 0xD3)));
ok($objTo->eq("u\x{301}", pack('U', 0xFA)));
+ok($objTo->eq("u\x{341}", pack('U', 0xFA)));
ok($objTo->eq("U\x{301}", pack('U', 0xDA)));
+ok($objTo->eq("U\x{341}", pack('U', 0xDA)));
-# 97
+# 107
$objTo->change(upper_before_lower => 1);
@@ -166,4 +176,4 @@ ok($objTo->lt("O\x{304}", "O\x{301}"));
ok($objTo->lt("u\x{304}", "u\x{301}"));
ok($objTo->lt("U\x{304}", "U\x{301}"));
-# 122
+# 132
diff --git a/cpan/Unicode-Collate/t/loc_wo.t b/cpan/Unicode-Collate/t/loc_wo.t
index ceff5068e9..48cb8df21d 100644
--- a/cpan/Unicode-Collate/t/loc_wo.t
+++ b/cpan/Unicode-Collate/t/loc_wo.t
@@ -4,7 +4,7 @@ use warnings;
use Unicode::Collate::Locale;
use Test;
-plan tests => 34;
+plan tests => 40;
my $objWo = Unicode::Collate::Locale->
new(locale => 'WO', normalization => undef);
@@ -50,14 +50,20 @@ ok($objWo->lt("o\x{301}", "O\x{301}"));
# 24
ok($objWo->eq("a\x{300}", pack('U', 0xE0)));
+ok($objWo->eq("a\x{340}", pack('U', 0xE0)));
ok($objWo->eq("A\x{300}", pack('U', 0xC0)));
+ok($objWo->eq("A\x{340}", pack('U', 0xC0)));
ok($objWo->eq("e\x{301}", pack('U', 0xE9)));
+ok($objWo->eq("e\x{341}", pack('U', 0xE9)));
ok($objWo->eq("E\x{301}", pack('U', 0xC9)));
+ok($objWo->eq("E\x{341}", pack('U', 0xC9)));
ok($objWo->eq("e\x{308}", pack('U', 0xEB)));
ok($objWo->eq("E\x{308}", pack('U', 0xCB)));
ok($objWo->eq("n\x{303}", pack('U', 0xF1)));
ok($objWo->eq("N\x{303}", pack('U', 0xD1)));
ok($objWo->eq("o\x{301}", pack('U', 0xF3)));
+ok($objWo->eq("o\x{341}", pack('U', 0xF3)));
ok($objWo->eq("O\x{301}", pack('U', 0xD3)));
+ok($objWo->eq("O\x{341}", pack('U', 0xD3)));
-# 34
+# 40