summaryrefslogtreecommitdiff
path: root/cpan/Unicode-Collate
diff options
context:
space:
mode:
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>2010-09-23 17:46:43 +0100
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>2010-09-23 17:47:50 +0100
commit1393fe000d6be26b7927c85788f02d6ea124d991 (patch)
treef9a9da2686b270a9145d3ced711ada1bb5320c6f /cpan/Unicode-Collate
parent3db6ecf2ab3559908674348221dcc60f4fcb6af9 (diff)
downloadperl-1393fe000d6be26b7927c85788f02d6ea124d991.tar.gz
Updated Unicode-Collate to CPAN version 0.60
[DELTA] 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 - 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. (affected locales: ro, sk, sv)
Diffstat (limited to 'cpan/Unicode-Collate')
-rw-r--r--cpan/Unicode-Collate/Changes12
-rw-r--r--cpan/Unicode-Collate/Collate.pm7
-rw-r--r--cpan/Unicode-Collate/Collate/Locale.pm25
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/de_phone.pl28
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/nso.pl36
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/om.pl21
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/ro.pl20
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/sk.pl10
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/sv.pl10
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/tn.pl36
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/vi.pl154
-rw-r--r--cpan/Unicode-Collate/README2
-rw-r--r--cpan/Unicode-Collate/t/index.t29
-rw-r--r--cpan/Unicode-Collate/t/loc_cy.t48
-rw-r--r--cpan/Unicode-Collate/t/loc_da.t34
-rw-r--r--cpan/Unicode-Collate/t/loc_de.t51
-rw-r--r--cpan/Unicode-Collate/t/loc_deph.t87
-rw-r--r--cpan/Unicode-Collate/t/loc_fi.t26
-rw-r--r--cpan/Unicode-Collate/t/loc_fo.t34
-rw-r--r--cpan/Unicode-Collate/t/loc_fr.t61
-rw-r--r--cpan/Unicode-Collate/t/loc_is.t18
-rw-r--r--cpan/Unicode-Collate/t/loc_kl.t34
-rw-r--r--cpan/Unicode-Collate/t/loc_nb.t34
-rw-r--r--cpan/Unicode-Collate/t/loc_nn.t34
-rw-r--r--cpan/Unicode-Collate/t/loc_nso.t71
-rw-r--r--cpan/Unicode-Collate/t/loc_om.t72
-rw-r--r--cpan/Unicode-Collate/t/loc_ro.t40
-rw-r--r--cpan/Unicode-Collate/t/loc_sk.t15
-rw-r--r--cpan/Unicode-Collate/t/loc_sv.t53
-rw-r--r--cpan/Unicode-Collate/t/loc_sw.t48
-rw-r--r--cpan/Unicode-Collate/t/loc_tn.t71
-rw-r--r--cpan/Unicode-Collate/t/loc_vi.t237
32 files changed, 1237 insertions, 221 deletions
diff --git a/cpan/Unicode-Collate/Changes b/cpan/Unicode-Collate/Changes
index 646b93bb06..cc7e75fd99 100644
--- a/cpan/Unicode-Collate/Changes
+++ b/cpan/Unicode-Collate/Changes
@@ -1,5 +1,15 @@
Revision history for Perl module Unicode::Collate.
+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
+
+ - 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.
+ (affected locales: ro, sk, sv)
+
0.59 Sun Sep 5 17:03:52 2010
- U::C::Locale newly supports locales: az, fil, ha, lt, mt, tr, wo, yo.
- precomposites of a-uml, o-uml, and u-uml are tailored as well.
@@ -32,7 +42,7 @@ Revision history for Perl module Unicode::Collate.
! DUCET will be compiled when XS is used. Explicit saying
<table => 'allkeys.txt'> (or using another table) will prevent
- this module using the compiled DUCET.
+ this module from using the compiled DUCET.
! added t/default.t that uses DUCET.
diff --git a/cpan/Unicode-Collate/Collate.pm b/cpan/Unicode-Collate/Collate.pm
index 0836453f8f..bdc00ddeab 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.59';
+our $VERSION = '0.60';
our $PACKAGE = __PACKAGE__;
my @Path = qw(Unicode Collate);
@@ -1015,9 +1015,10 @@ sub index
if (@subWt && !$var && !$wt[0]) {
push @{ $subWt[-1] }, \@wt if $to_be_pushed;
- } else {
+ } elsif ($to_be_pushed) {
push @subWt, [ \@wt ];
}
+ # else ===> skipped
}
my $count = 0;
@@ -1536,7 +1537,7 @@ B<NOTE>: When XSUB is used, the DUCET is compiled on building this
module, and it may save time at the run time.
Explicit saying C<table =E<gt> 'allkeys.txt'> (or using another table),
or using C<ignoreChar>, C<ignoreName>, C<undefChar>, or C<undefName>
-will prevent this module using the compiled DUCET.
+will prevent this module from using the compiled DUCET.
If C<undef> is passed explicitly as the value for this key,
no file is read (but you can define collation elements via C<entry>).
diff --git a/cpan/Unicode-Collate/Collate/Locale.pm b/cpan/Unicode-Collate/Collate/Locale.pm
index 4803df98c7..0715ca929c 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.59';
+our $VERSION = '0.60';
use File::Spec;
@@ -14,9 +14,10 @@ my $PL_EXT = '.pl';
my %LocaleFile = map { ($_, $_) } qw(
af az ca cs cy da eo es et fi fil fo fr ha haw
- is kl lt lv mt nn pl ro sk sl sv sw tr wo yo
+ is kl lt lv mt nn nso om pl ro sk sl sv sw tn tr vi wo yo
);
$LocaleFile{'default'} = '';
+ $LocaleFile{'de__phonebook'} = 'de_phone';
$LocaleFile{'es__traditional'} = 'es_trad';
$LocaleFile{'nb'} = 'nn';
@@ -25,6 +26,7 @@ sub _locale {
if ($locale) {
$locale = lc $locale;
$locale =~ tr/\-\ \./_/;
+ $locale =~ s/_phone\z/_phonebook/;
$locale =~ s/_trad\z/_traditional/;
$LocaleFile{$locale} and return $locale;
@@ -159,6 +161,7 @@ this method returns a string C<'default'> meaning no special tailoring.
cs Czech
cy Welsh
da Danish
+ de__phonebook German (umlaut as 'ae', 'oe', 'ue')
eo Esperanto
es Spanish
es__traditional Spanish ('ch' and 'll' as a grapheme)
@@ -176,13 +179,17 @@ this method returns a string C<'default'> meaning no special tailoring.
mt Maltese
nb Norwegian Bokmal
nn Norwegian Nynorsk
+ nso Northern Sotho
+ om Oromo
pl Polish
ro Romanian
sk Slovak
sl Slovenian
sv Swedish
sw Swahili
+ tn Tswana
tr Turkish
+ vi Vietnamese
wo Wolof
yo Yoruba
@@ -193,6 +200,20 @@ F<Collate/Locale/*.pm> and F<Collate/allkeys.txt>. On building,
Unicode::Collate::Locale doesn't require F<data/*.txt> and F<mklocale>.
Tests for Unicode::Collate::Locale are named F<t/loc_*.t>.
+=head1 CAVEAT
+
+=over 4
+
+=item tailoring is not maximum
+
+If a certain letter is tailored, its equivalents are not always
+tailored as well as it. For example, even though W is tailored,
+fullwidth W (C<U+FF37>), W with acute (C<U+1E82>), etc. are not
+tailored. Thus the result may depend on whether source strings
+are normalized or not.
+
+=back
+
=head1 AUTHOR
The Unicode::Collate::Locale module for perl was written
diff --git a/cpan/Unicode-Collate/Collate/Locale/de_phone.pl b/cpan/Unicode-Collate/Collate/Locale/de_phone.pl
new file mode 100644
index 0000000000..a4405ec23b
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/de_phone.pl
@@ -0,0 +1,28 @@
++{
+ entry => <<'ENTRY', # for DUCET v5.2.0
+00E4 ; [.120F.0021.0002.00E4][.126B.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.120F.0021.0002.00E4][.126B.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.120F.0021.0008.00C4][.126B.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.120F.0021.0008.00C4][.126B.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.120F.0021.0002.00E4][.126B.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.120F.0021.0008.00C4][.126B.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00F6 ; [.138E.0021.0002.00F6][.126B.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.138E.0021.0002.00F6][.126B.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.138E.0021.0008.00D6][.126B.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.138E.0021.0008.00D6][.126B.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.138E.0021.0002.00F6][.126B.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.138E.0021.0008.00D6][.126B.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00FC ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/nso.pl b/cpan/Unicode-Collate/Collate/Locale/nso.pl
new file mode 100644
index 0000000000..2d20e1e403
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/nso.pl
@@ -0,0 +1,36 @@
++{
+ entry => <<'ENTRY', # for DUCET v5.2.0
+00EA ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC1 ; [.126C.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.126C.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EBF ; [.126C.0020.0002.00EA][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.126C.0020.0008.00CA][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC5 ; [.126C.0020.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.126C.0020.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.126C.0020.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.126C.0020.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.126C.0020.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.126C.0020.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+00F4 ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.138F.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.138F.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.138F.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.138F.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.138F.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.138F.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.138F.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.138F.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.138F.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.138F.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+0161 ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.1411.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.1411.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/om.pl b/cpan/Unicode-Collate/Collate/Locale/om.pl
new file mode 100644
index 0000000000..ad7aa41f29
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/om.pl
@@ -0,0 +1,21 @@
++{
+ entry => <<'ENTRY', # for DUCET v5.2.0
+0063 0068 ; [.14AE.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0043 0068 ; [.14AE.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
+0043 0048 ; [.14AE.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
+0064 0068 ; [.14AF.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER H>
+0044 0068 ; [.14AF.0020.0007.0044] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER H>
+0044 0048 ; [.14AF.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER H>
+006B 0068 ; [.14B0.0020.0002.006B] # <LATIN SMALL LETTER K, LATIN SMALL LETTER H>
+004B 0068 ; [.14B0.0020.0007.004B] # <LATIN CAPITAL LETTER K, LATIN SMALL LETTER H>
+004B 0048 ; [.14B0.0020.0008.004B] # <LATIN CAPITAL LETTER K, LATIN CAPITAL LETTER H>
+006E 0079 ; [.14B1.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
+004E 0079 ; [.14B1.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
+004E 0059 ; [.14B1.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
+0070 0068 ; [.14B2.0020.0002.0070] # <LATIN SMALL LETTER P, LATIN SMALL LETTER H>
+0050 0068 ; [.14B2.0020.0007.0050] # <LATIN CAPITAL LETTER P, LATIN SMALL LETTER H>
+0050 0048 ; [.14B2.0020.0008.0050] # <LATIN CAPITAL LETTER P, LATIN CAPITAL LETTER H>
+0073 0068 ; [.14B3.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
+0053 0068 ; [.14B3.0020.0007.0053] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER H>
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/ro.pl b/cpan/Unicode-Collate/Collate/Locale/ro.pl
index 35c7f33925..f59ca14ee9 100644
--- a/cpan/Unicode-Collate/Collate/Locale/ro.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/ro.pl
@@ -4,10 +4,30 @@
0061 0306 ; [.1210.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
0102 ; [.1210.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
0041 0306 ; [.1210.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
+1EB1 ; [.1210.0020.0002.0103][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB0 ; [.1210.0020.0008.0102][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EAF ; [.1210.0020.0002.0103][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EAE ; [.1210.0020.0008.0102][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB5 ; [.1210.0020.0002.0103][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB4 ; [.1210.0020.0008.0102][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB3 ; [.1210.0020.0002.0103][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB2 ; [.1210.0020.0008.0102][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB7 ; [.1210.0020.0002.0103][.0000.0070.0002.0323] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB6 ; [.1210.0020.0008.0102][.0000.0070.0002.0323] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
00E2 ; [.1211.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
0061 0302 ; [.1211.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
00C2 ; [.1211.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0041 0302 ; [.1211.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+1EA7 ; [.1211.0020.0002.00E2][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA6 ; [.1211.0020.0008.00C2][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA5 ; [.1211.0020.0002.00E2][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA4 ; [.1211.0020.0008.00C2][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EAB ; [.1211.0020.0002.00E2][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAA ; [.1211.0020.0008.00C2][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EA9 ; [.1211.0020.0002.00E2][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA8 ; [.1211.0020.0008.00C2][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAD ; [.1211.0020.0002.00E2][.0000.0070.0002.0323] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAC ; [.1211.0020.0008.00C2][.0000.0070.0002.0323] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
0111 ; [.1251.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
0064 0335 ; [.1251.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
0110 ; [.1251.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
diff --git a/cpan/Unicode-Collate/Collate/Locale/sk.pl b/cpan/Unicode-Collate/Collate/Locale/sk.pl
index dc42f44acd..fe100ce841 100644
--- a/cpan/Unicode-Collate/Collate/Locale/sk.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/sk.pl
@@ -18,6 +18,16 @@
006F 0302 ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
00D4 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
004F 0302 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.138F.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.138F.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.138F.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.138F.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.138F.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.138F.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.138F.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.138F.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.138F.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.138F.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
0161 ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
0073 030C ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
0160 ; [.1411.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
diff --git a/cpan/Unicode-Collate/Collate/Locale/sv.pl b/cpan/Unicode-Collate/Collate/Locale/sv.pl
index a039152cde..c04bed4d75 100644
--- a/cpan/Unicode-Collate/Collate/Locale/sv.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/sv.pl
@@ -72,5 +72,15 @@
006F 0302 ; [.14B0.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
00D4 ; [.14B0.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
004F 0302 ; [.14B0.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.14B0.0024.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.14B0.0024.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.14B0.0024.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.14B0.0024.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.14B0.0024.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.14B0.0024.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.14B0.0024.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.14B0.0024.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.14B0.0024.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.14B0.0024.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
ENTRY
};
diff --git a/cpan/Unicode-Collate/Collate/Locale/tn.pl b/cpan/Unicode-Collate/Collate/Locale/tn.pl
new file mode 100644
index 0000000000..2d20e1e403
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/tn.pl
@@ -0,0 +1,36 @@
++{
+ entry => <<'ENTRY', # for DUCET v5.2.0
+00EA ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC1 ; [.126C.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.126C.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EBF ; [.126C.0020.0002.00EA][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.126C.0020.0008.00CA][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC5 ; [.126C.0020.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.126C.0020.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.126C.0020.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.126C.0020.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.126C.0020.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.126C.0020.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+00F4 ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.138F.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.138F.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.138F.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.138F.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.138F.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.138F.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.138F.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.138F.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.138F.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.138F.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+0161 ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.1411.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.1411.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/vi.pl b/cpan/Unicode-Collate/Collate/Locale/vi.pl
new file mode 100644
index 0000000000..2057ecf0db
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/vi.pl
@@ -0,0 +1,154 @@
++{
+# 0306 is not a Vietnamese tone, just to avoid \x{303} eq \x{306}.
+ entry => <<'ENTRY', # for DUCET v5.2.0
+0309 ; [.0000.0036.0002.0309] # COMBINING HOOK ABOVE
+1EA3 ; [.120F.0020.0002.0061][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA2 ; [.120F.0020.0008.0041][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EBB ; [.126B.0020.0002.0065][.0000.0036.0002.0309] # LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBA ; [.126B.0020.0008.0045][.0000.0036.0002.0309] # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EC9 ; [.12EC.0020.0002.0069][.0000.0036.0002.0309] # LATIN SMALL LETTER I WITH HOOK ABOVE
+1EC8 ; [.12EC.0020.0008.0049][.0000.0036.0002.0309] # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1ECF ; [.138E.0020.0002.006F][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH HOOK ABOVE
+1ECE ; [.138E.0020.0008.004F][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1EE7 ; [.1453.0020.0002.0075][.0000.0036.0002.0309] # LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE6 ; [.1453.0020.0008.0055][.0000.0036.0002.0309] # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EF7 ; [.149C.0020.0002.0079][.0000.0036.0002.0309] # LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF6 ; [.149C.0020.0008.0059][.0000.0036.0002.0309] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+0303 ; [.0000.0037.0002.0303] # COMBINING TILDE
+00E3 ; [.120F.0020.0002.0061][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH TILDE
+00C3 ; [.120F.0020.0008.0041][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH TILDE
+1EBD ; [.126B.0020.0002.0065][.0000.0037.0002.0303] # LATIN SMALL LETTER E WITH TILDE
+1EBC ; [.126B.0020.0008.0045][.0000.0037.0002.0303] # LATIN CAPITAL LETTER E WITH TILDE
+0129 ; [.12EC.0020.0002.0069][.0000.0037.0002.0303] # LATIN SMALL LETTER I WITH TILDE
+0128 ; [.12EC.0020.0008.0049][.0000.0037.0002.0303] # LATIN CAPITAL LETTER I WITH TILDE
+00F5 ; [.138E.0020.0002.006F][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH TILDE
+00D5 ; [.138E.0020.0008.004F][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH TILDE
+0169 ; [.1453.0020.0002.0075][.0000.0037.0002.0303] # LATIN SMALL LETTER U WITH TILDE
+0168 ; [.1453.0020.0008.0055][.0000.0037.0002.0303] # LATIN CAPITAL LETTER U WITH TILDE
+1EF9 ; [.149C.0020.0002.0079][.0000.0037.0002.0303] # LATIN SMALL LETTER Y WITH TILDE
+1EF8 ; [.149C.0020.0008.0059][.0000.0037.0002.0303] # LATIN CAPITAL LETTER Y WITH TILDE
+0301 ; [.0000.0038.0002.0301] # COMBINING ACUTE ACCENT
+00E1 ; [.120F.0020.0002.0061][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.120F.0020.0008.0041][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH ACUTE
+00E9 ; [.126B.0020.0002.0065][.0000.0038.0002.0301] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.126B.0020.0008.0045][.0000.0038.0002.0301] # LATIN CAPITAL LETTER E WITH ACUTE
+00ED ; [.12EC.0020.0002.0069][.0000.0038.0002.0301] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.12EC.0020.0008.0049][.0000.0038.0002.0301] # LATIN CAPITAL LETTER I WITH ACUTE
+00F3 ; [.138E.0020.0002.006F][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.138E.0020.0008.004F][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH ACUTE
+00FA ; [.1453.0020.0002.0075][.0000.0038.0002.0301] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.1453.0020.0008.0055][.0000.0038.0002.0301] # LATIN CAPITAL LETTER U WITH ACUTE
+00FD ; [.149C.0020.0002.0079][.0000.0038.0002.0301] # LATIN SMALL LETTER Y WITH ACUTE
+00DD ; [.149C.0020.0008.0059][.0000.0038.0002.0301] # LATIN CAPITAL LETTER Y WITH ACUTE
+0323 ; [.0000.0039.0002.0323] # COMBINING DOT BELOW
+1EA1 ; [.120F.0020.0002.0061][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH DOT BELOW
+1EA0 ; [.120F.0020.0008.0041][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH DOT BELOW
+1EB9 ; [.126B.0020.0002.0065][.0000.0039.0002.0323] # LATIN SMALL LETTER E WITH DOT BELOW
+1EB8 ; [.126B.0020.0008.0045][.0000.0039.0002.0323] # LATIN CAPITAL LETTER E WITH DOT BELOW
+1ECB ; [.12EC.0020.0002.0069][.0000.0039.0002.0323] # LATIN SMALL LETTER I WITH DOT BELOW
+1ECA ; [.12EC.0020.0008.0049][.0000.0039.0002.0323] # LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECD ; [.138E.0020.0002.006F][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH DOT BELOW
+1ECC ; [.138E.0020.0008.004F][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH DOT BELOW
+1EE5 ; [.1453.0020.0002.0075][.0000.0039.0002.0323] # LATIN SMALL LETTER U WITH DOT BELOW
+1EE4 ; [.1453.0020.0008.0055][.0000.0039.0002.0323] # LATIN CAPITAL LETTER U WITH DOT BELOW
+1EF5 ; [.149C.0020.0002.0079][.0000.0039.0002.0323] # LATIN SMALL LETTER Y WITH DOT BELOW
+1EF4 ; [.149C.0020.0008.0059][.0000.0039.0002.0323] # LATIN CAPITAL LETTER Y WITH DOT BELOW
+0306 ; [.0000.003A.0002.0306] # COMBINING BREVE
+0115 ; [.126B.0020.0002.0065][.0000.003A.0002.0306] # LATIN SMALL LETTER E WITH BREVE
+0114 ; [.126B.0020.0008.0045][.0000.003A.0002.0306] # LATIN CAPITAL LETTER E WITH BREVE
+012D ; [.12EC.0020.0002.0069][.0000.003A.0002.0306] # LATIN SMALL LETTER I WITH BREVE
+012C ; [.12EC.0020.0008.0049][.0000.003A.0002.0306] # LATIN CAPITAL LETTER I WITH BREVE
+014F ; [.138E.0020.0002.006F][.0000.003A.0002.0306] # LATIN SMALL LETTER O WITH BREVE
+014E ; [.138E.0020.0008.004F][.0000.003A.0002.0306] # LATIN CAPITAL LETTER O WITH BREVE
+016D ; [.1453.0020.0002.0075][.0000.003A.0002.0306] # LATIN SMALL LETTER U WITH BREVE
+016C ; [.1453.0020.0008.0055][.0000.003A.0002.0306] # LATIN CAPITAL LETTER U WITH BREVE
+0103 ; [.1210.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
+0061 0306 ; [.1210.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
+0102 ; [.1210.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
+0041 0306 ; [.1210.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
+1EB1 ; [.1210.0020.0002.0103][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB0 ; [.1210.0020.0008.0102][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EAF ; [.1210.0020.0002.0103][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EAE ; [.1210.0020.0008.0102][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB5 ; [.1210.0020.0002.0103][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB4 ; [.1210.0020.0008.0102][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB3 ; [.1210.0020.0002.0103][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB2 ; [.1210.0020.0008.0102][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB7 ; [.1210.0020.0002.0103][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB6 ; [.1210.0020.0008.0102][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+00E2 ; [.1211.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0061 0302 ; [.1211.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+00C2 ; [.1211.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0041 0302 ; [.1211.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+1EA7 ; [.1211.0020.0002.00E2][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA6 ; [.1211.0020.0008.00C2][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA5 ; [.1211.0020.0002.00E2][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA4 ; [.1211.0020.0008.00C2][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EAB ; [.1211.0020.0002.00E2][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAA ; [.1211.0020.0008.00C2][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EA9 ; [.1211.0020.0002.00E2][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA8 ; [.1211.0020.0008.00C2][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAD ; [.1211.0020.0002.00E2][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAC ; [.1211.0020.0008.00C2][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+0111 ; [.1251.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1251.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1251.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1251.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00EA ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC1 ; [.126C.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.126C.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EBF ; [.126C.0020.0002.00EA][.0000.0038.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.126C.0020.0008.00CA][.0000.0038.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC5 ; [.126C.0020.0002.00EA][.0000.0037.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.126C.0020.0008.00CA][.0000.0037.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.126C.0020.0002.00EA][.0000.0036.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.126C.0020.0008.00CA][.0000.0036.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7 ; [.126C.0020.0002.00EA][.0000.0039.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.126C.0020.0008.00CA][.0000.0039.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+00F4 ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.138F.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.138F.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.138F.0020.0002.00F4][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.138F.0020.0008.00D4][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.138F.0020.0002.00F4][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.138F.0020.0008.00D4][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.138F.0020.0002.00F4][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.138F.0020.0008.00D4][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.138F.0020.0002.00F4][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.138F.0020.0008.00D4][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+01A1 ; [.1390.0020.0002.01A1] # LATIN SMALL LETTER O WITH HORN
+006F 031B ; [.1390.0020.0002.01A1] # LATIN SMALL LETTER O WITH HORN
+01A0 ; [.1390.0020.0008.01A0] # LATIN CAPITAL LETTER O WITH HORN
+004F 031B ; [.1390.0020.0008.01A0] # LATIN CAPITAL LETTER O WITH HORN
+1EDD ; [.1390.0020.0002.01A1][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDC ; [.1390.0020.0008.01A0][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDB ; [.1390.0020.0002.01A1][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDA ; [.1390.0020.0008.01A0][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EE1 ; [.1390.0020.0002.01A1][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE0 ; [.1390.0020.0008.01A0][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EDF ; [.1390.0020.0002.01A1][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EDE ; [.1390.0020.0008.01A0][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EE3 ; [.1390.0020.0002.01A1][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE2 ; [.1390.0020.0008.01A0][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+01B0 ; [.1454.0020.0002.01B0] # LATIN SMALL LETTER U WITH HORN
+0075 031B ; [.1454.0020.0002.01B0] # LATIN SMALL LETTER U WITH HORN
+01AF ; [.1454.0020.0008.01AF] # LATIN CAPITAL LETTER U WITH HORN
+0055 031B ; [.1454.0020.0008.01AF] # LATIN CAPITAL LETTER U WITH HORN
+1EEB ; [.1454.0020.0002.01B0][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEA ; [.1454.0020.0008.01AF][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EE9 ; [.1454.0020.0002.01B0][.0000.0038.0002.0301] # LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EE8 ; [.1454.0020.0008.01AF][.0000.0038.0002.0301] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EEF ; [.1454.0020.0002.01B0][.0000.0037.0002.0303] # LATIN SMALL LETTER U WITH HORN AND TILDE
+1EEE ; [.1454.0020.0008.01AF][.0000.0037.0002.0303] # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EEC ; [.1454.0020.0008.01AF][.0000.0036.0002.0309] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EED ; [.1454.0020.0002.01B0][.0000.0036.0002.0309] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EF0 ; [.1454.0020.0008.01AF][.0000.0039.0002.0323] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF1 ; [.1454.0020.0002.01B0][.0000.0039.0002.0323] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/README b/cpan/Unicode-Collate/README
index ac1fc77796..4a04396861 100644
--- a/cpan/Unicode-Collate/README
+++ b/cpan/Unicode-Collate/README
@@ -1,4 +1,4 @@
-Unicode/Collate version 0.59
+Unicode/Collate version 0.60
===============================
NAME
diff --git a/cpan/Unicode-Collate/t/index.t b/cpan/Unicode-Collate/t/index.t
index 5b6c78d968..cfe89953c9 100644
--- a/cpan/Unicode-Collate/t/index.t
+++ b/cpan/Unicode-Collate/t/index.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 65 };
+BEGIN { plan tests => 71 };
use strict;
use warnings;
@@ -341,6 +341,33 @@ $Collator->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
ok($str, "<b>Camel</b> donkey zebra <b>came\x{301}l</b> "
. "<b>CAMEL</b> horse <b>cAm\0E\0L</b>...");
+# http://www.xray.mpe.mpg.de/mailing-lists/perl-unicode/2010-09/msg00014.html
+# when the substring includes an ignorable element like a space...
+
+$str = "Camel donkey zebra came\x{301}l CAMEL horse cAm\0E\0L...";
+$Collator->gsubst($str, "camel horse", sub { "<b>$_[0]</b>" });
+ok($str, "Camel donkey zebra came\x{301}l <b>CAMEL horse</b> cAm\0E\0L...");
+
+$str = "Camel donkey zebra camex{301}l CAMEL horse cAmEL-horse...";
+$Collator->gsubst($str, "camel horse", sub { "=$_[0]=" });
+ok($str, "Camel donkey zebra camex{301}l =CAMEL horse= =cAmEL-horse=...");
+
+$str = "Camel donkey zebra camex{301}l CAMEL horse cAmEL-horse...";
+$Collator->gsubst($str, "camel-horse", sub { "=$_[0]=" });
+ok($str, "Camel donkey zebra camex{301}l =CAMEL horse= =cAmEL-horse=...");
+
+$str = "Camel donkey zebra camex{301}l CAMEL horse cAmEL-horse...";
+$Collator->gsubst($str, "camelhorse", sub { "=$_[0]=" });
+ok($str, "Camel donkey zebra camex{301}l =CAMEL horse= =cAmEL-horse=...");
+
+$str = "Camel donkey zebra camex{301}l CAMEL horse cAmEL-horse...";
+$Collator->gsubst($str, " ca mel hor se ", sub { "=$_[0]=" });
+ok($str, "Camel donkey zebra camex{301}l =CAMEL horse= =cAmEL-horse=...");
+
+$str = "Camel donkey zebra camex{301}l CAMEL horse cAmEL-horse...";
+$Collator->gsubst($str, "ca\x{300}melho\x{302}rse", sub { "=$_[0]=" });
+ok($str, "Camel donkey zebra camex{301}l =CAMEL horse= =cAmEL-horse=...");
+
$Collator->change(level => 3);
$str = "P\cBe\x{300}\cBrl and PERL.";
diff --git a/cpan/Unicode-Collate/t/loc_cy.t b/cpan/Unicode-Collate/t/loc_cy.t
index bc4d9821f7..13cc3bec3b 100644
--- a/cpan/Unicode-Collate/t/loc_cy.t
+++ b/cpan/Unicode-Collate/t/loc_cy.t
@@ -44,62 +44,62 @@ ok($objCy->gt("u", "th"));
$objCy->change(level => 2);
ok($objCy->eq("ch", "Ch"));
-ok($objCy->eq("CH", "Ch"));
+ok($objCy->eq("Ch", "CH"));
ok($objCy->eq("dd", "Dd"));
-ok($objCy->eq("DD", "Dd"));
+ok($objCy->eq("Dd", "DD"));
ok($objCy->eq("ff", "Ff"));
-ok($objCy->eq("FF", "Ff"));
+ok($objCy->eq("Ff", "FF"));
ok($objCy->eq("ng", "Ng"));
-ok($objCy->eq("NG", "Ng"));
+ok($objCy->eq("Ng", "NG"));
ok($objCy->eq("ll", "Ll"));
-ok($objCy->eq("LL", "Ll"));
+ok($objCy->eq("Ll", "LL"));
ok($objCy->eq("ph", "Ph"));
-ok($objCy->eq("PH", "Ph"));
+ok($objCy->eq("Ph", "PH"));
ok($objCy->eq("rh", "Rh"));
-ok($objCy->eq("RH", "Rh"));
+ok($objCy->eq("Rh", "RH"));
ok($objCy->eq("th", "Th"));
-ok($objCy->eq("TH", "Th"));
+ok($objCy->eq("Th", "TH"));
# 42
$objCy->change(level => 3);
ok($objCy->lt("ch", "Ch"));
-ok($objCy->gt("CH", "Ch"));
+ok($objCy->lt("Ch", "CH"));
ok($objCy->lt("dd", "Dd"));
-ok($objCy->gt("DD", "Dd"));
+ok($objCy->lt("Dd", "DD"));
ok($objCy->lt("ff", "Ff"));
-ok($objCy->gt("FF", "Ff"));
+ok($objCy->lt("Ff", "FF"));
ok($objCy->lt("ng", "Ng"));
-ok($objCy->gt("NG", "Ng"));
+ok($objCy->lt("Ng", "NG"));
ok($objCy->lt("ll", "Ll"));
-ok($objCy->gt("LL", "Ll"));
+ok($objCy->lt("Ll", "LL"));
ok($objCy->lt("ph", "Ph"));
-ok($objCy->gt("PH", "Ph"));
+ok($objCy->lt("Ph", "PH"));
ok($objCy->lt("rh", "Rh"));
-ok($objCy->gt("RH", "Rh"));
+ok($objCy->lt("Rh", "RH"));
ok($objCy->lt("th", "Th"));
-ok($objCy->gt("TH", "Th"));
+ok($objCy->lt("Th", "TH"));
# 58
$objCy->change(upper_before_lower => 1);
ok($objCy->gt("ch", "Ch"));
-ok($objCy->lt("CH", "Ch"));
+ok($objCy->gt("Ch", "CH"));
ok($objCy->gt("dd", "Dd"));
-ok($objCy->lt("DD", "Dd"));
+ok($objCy->gt("Dd", "DD"));
ok($objCy->gt("ff", "Ff"));
-ok($objCy->lt("FF", "Ff"));
+ok($objCy->gt("Ff", "FF"));
ok($objCy->gt("ng", "Ng"));
-ok($objCy->lt("NG", "Ng"));
+ok($objCy->gt("Ng", "NG"));
ok($objCy->gt("ll", "Ll"));
-ok($objCy->lt("LL", "Ll"));
+ok($objCy->gt("Ll", "LL"));
ok($objCy->gt("ph", "Ph"));
-ok($objCy->lt("PH", "Ph"));
+ok($objCy->gt("Ph", "PH"));
ok($objCy->gt("rh", "Rh"));
-ok($objCy->lt("RH", "Rh"));
+ok($objCy->gt("Rh", "RH"));
ok($objCy->gt("th", "Th"));
-ok($objCy->lt("TH", "Th"));
+ok($objCy->gt("Th", "TH"));
# 74
diff --git a/cpan/Unicode-Collate/t/loc_da.t b/cpan/Unicode-Collate/t/loc_da.t
index 09af185abb..aff6da741c 100644
--- a/cpan/Unicode-Collate/t/loc_da.t
+++ b/cpan/Unicode-Collate/t/loc_da.t
@@ -118,6 +118,23 @@ ok($objDa->eq("d\x{335}", "\x{111}"));
ok($objDa->eq("D\x{335}", "\x{110}"));
ok($objDa->eq("u\x{308}", $uuml));
ok($objDa->eq("U\x{308}", $Uuml));
+ok($objDa->eq("u\x{30B}", "\x{171}"));
+ok($objDa->eq("U\x{30B}", "\x{170}"));
+ok($objDa->eq("a\x{308}", $auml));
+ok($objDa->eq("A\x{308}", $Auml));
+ok($objDa->eq("e\x{328}", "\x{119}"));
+ok($objDa->eq("E\x{328}", "\x{118}"));
+ok($objDa->eq("o\x{338}", $ostk));
+ok($objDa->eq("O\x{338}", $Ostk));
+ok($objDa->eq("o\x{308}", $ouml));
+ok($objDa->eq("O\x{308}", $Ouml));
+ok($objDa->eq("o\x{30B}", "\x{151}"));
+ok($objDa->eq("O\x{30B}", "\x{150}"));
+ok($objDa->eq("a\x{30A}", $arng));
+ok($objDa->eq("A\x{30A}", $Arng));
+
+# 84
+
ok($objDa->eq("u\x{308}\x{300}", "\x{1DC}"));
ok($objDa->eq("U\x{308}\x{300}", "\x{1DB}"));
ok($objDa->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -126,33 +143,16 @@ ok($objDa->eq("u\x{308}\x{304}", "\x{1D6}"));
ok($objDa->eq("U\x{308}\x{304}", "\x{1D5}"));
ok($objDa->eq("u\x{308}\x{30C}", "\x{1DA}"));
ok($objDa->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objDa->eq("u\x{30B}", "\x{171}"));
-ok($objDa->eq("U\x{30B}", "\x{170}"));
-
-# 80
-
ok($objDa->eq("\x{1FD}", "$ae\x{301}"));
ok($objDa->eq("\x{1FC}", "$AE\x{301}"));
ok($objDa->eq("\x{1E3}", "$ae\x{304}"));
ok($objDa->eq("\x{1E2}", "$AE\x{304}"));
-ok($objDa->eq("a\x{308}", $auml));
-ok($objDa->eq("A\x{308}", $Auml));
ok($objDa->eq("a\x{308}\x{304}", "\x{1DF}"));
ok($objDa->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objDa->eq("e\x{328}", "\x{119}"));
-ok($objDa->eq("E\x{328}", "\x{118}"));
-ok($objDa->eq("o\x{338}", $ostk));
-ok($objDa->eq("O\x{338}", $Ostk));
ok($objDa->eq("o\x{338}\x{301}", "\x{1FF}"));
ok($objDa->eq("O\x{338}\x{301}", "\x{1FE}"));
-ok($objDa->eq("o\x{308}", $ouml));
-ok($objDa->eq("O\x{308}", $Ouml));
ok($objDa->eq("o\x{308}\x{304}", "\x{22B}"));
ok($objDa->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objDa->eq("o\x{30B}", "\x{151}"));
-ok($objDa->eq("O\x{30B}", "\x{150}"));
-ok($objDa->eq("a\x{30A}", $arng));
-ok($objDa->eq("A\x{30A}", $Arng));
ok($objDa->eq("A\x{30A}", "\x{212B}"));
ok($objDa->eq("a\x{30A}\x{301}", "\x{1FB}"));
ok($objDa->eq("A\x{30A}\x{301}", "\x{1FA}"));
diff --git a/cpan/Unicode-Collate/t/loc_de.t b/cpan/Unicode-Collate/t/loc_de.t
new file mode 100644
index 0000000000..066ea0594e
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_de.t
@@ -0,0 +1,51 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 20;
+
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $uuml = pack 'U', 0xFC;
+my $Uuml = pack 'U', 0xDC;
+
+my $objDe = Unicode::Collate::Locale->
+ new(locale => 'DE', normalization => undef);
+
+ok(1);
+ok($objDe->getlocale, 'default');
+
+$objDe->change(level => 1);
+
+ok($objDe->lt("a\x{308}", "ae"));
+ok($objDe->lt("A\x{308}", "AE"));
+ok($objDe->lt("o\x{308}", "oe"));
+ok($objDe->lt("O\x{308}", "OE"));
+ok($objDe->lt("u\x{308}", "ue"));
+ok($objDe->lt("U\x{308}", "UE"));
+
+# 8
+
+ok($objDe->eq("a\x{308}", "a"));
+ok($objDe->eq("A\x{308}", "A"));
+ok($objDe->eq("o\x{308}", "o"));
+ok($objDe->eq("O\x{308}", "O"));
+ok($objDe->eq("u\x{308}", "u"));
+ok($objDe->eq("U\x{308}", "U"));
+
+# 14
+
+$objDe->change(level => 2);
+
+ok($objDe->gt("a\x{308}", "a"));
+ok($objDe->gt("A\x{308}", "A"));
+ok($objDe->gt("o\x{308}", "o"));
+ok($objDe->gt("O\x{308}", "O"));
+ok($objDe->gt("u\x{308}", "u"));
+ok($objDe->gt("U\x{308}", "U"));
+
+# 20
diff --git a/cpan/Unicode-Collate/t/loc_deph.t b/cpan/Unicode-Collate/t/loc_deph.t
new file mode 100644
index 0000000000..44396cb3fb
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_deph.t
@@ -0,0 +1,87 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 40;
+
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $uuml = pack 'U', 0xFC;
+my $Uuml = pack 'U', 0xDC;
+
+my $objDePhone = Unicode::Collate::Locale->
+ new(locale => 'DE-PHONE', normalization => undef);
+
+ok(1);
+ok($objDePhone->getlocale, 'de__phonebook');
+
+$objDePhone->change(level => 1);
+
+ok($objDePhone->eq("a\x{308}", "ae"));
+ok($objDePhone->eq("A\x{308}", "AE"));
+ok($objDePhone->eq("o\x{308}", "oe"));
+ok($objDePhone->eq("O\x{308}", "OE"));
+ok($objDePhone->eq("u\x{308}", "ue"));
+ok($objDePhone->eq("U\x{308}", "UE"));
+
+# 8
+
+$objDePhone->change(level => 2);
+
+ok($objDePhone->gt("a\x{308}", "ae"));
+ok($objDePhone->gt("A\x{308}", "AE"));
+ok($objDePhone->gt("o\x{308}", "oe"));
+ok($objDePhone->gt("O\x{308}", "OE"));
+ok($objDePhone->gt("u\x{308}", "ue"));
+ok($objDePhone->gt("U\x{308}", "UE"));
+
+ok($objDePhone->eq("a\x{308}", "A\x{308}"));
+ok($objDePhone->eq("o\x{308}", "O\x{308}"));
+ok($objDePhone->eq("u\x{308}", "U\x{308}"));
+
+# 17
+
+$objDePhone->change(level => 3);
+
+ok($objDePhone->lt("a\x{308}", "A\x{308}"));
+ok($objDePhone->lt("o\x{308}", "O\x{308}"));
+ok($objDePhone->lt("u\x{308}", "U\x{308}"));
+
+ok($objDePhone->eq("a\x{308}", $auml));
+ok($objDePhone->eq("A\x{308}", $Auml));
+ok($objDePhone->eq("o\x{308}", $ouml));
+ok($objDePhone->eq("O\x{308}", $Ouml));
+ok($objDePhone->eq("u\x{308}", $uuml));
+ok($objDePhone->eq("U\x{308}", $Uuml));
+
+# 26
+
+ok($objDePhone->eq("a\x{308}\x{304}", "\x{1DF}"));
+ok($objDePhone->eq("A\x{308}\x{304}", "\x{1DE}"));
+ok($objDePhone->eq("o\x{308}\x{304}", "\x{22B}"));
+ok($objDePhone->eq("O\x{308}\x{304}", "\x{22A}"));
+ok($objDePhone->eq("u\x{308}\x{300}", "\x{1DC}"));
+ok($objDePhone->eq("U\x{308}\x{300}", "\x{1DB}"));
+ok($objDePhone->eq("u\x{308}\x{301}", "\x{1D8}"));
+ok($objDePhone->eq("U\x{308}\x{301}", "\x{1D7}"));
+ok($objDePhone->eq("u\x{308}\x{304}", "\x{1D6}"));
+ok($objDePhone->eq("U\x{308}\x{304}", "\x{1D5}"));
+ok($objDePhone->eq("u\x{308}\x{30C}", "\x{1DA}"));
+ok($objDePhone->eq("U\x{308}\x{30C}", "\x{1D9}"));
+
+# 38
+
+my $objDePhoneBook = Unicode::Collate::Locale->
+ new(locale => 'de__phonebook', normalization => undef);
+
+ok($objDePhoneBook->getlocale, 'de__phonebook');
+
+$objDePhoneBook->change(level => 1);
+
+ok($objDePhoneBook->eq("a\x{308}", "ae"));
+
+# 40
diff --git a/cpan/Unicode-Collate/t/loc_fi.t b/cpan/Unicode-Collate/t/loc_fi.t
index afd6707206..c8be1fb7f2 100644
--- a/cpan/Unicode-Collate/t/loc_fi.t
+++ b/cpan/Unicode-Collate/t/loc_fi.t
@@ -95,6 +95,19 @@ ok($objFi->lt($ostk, $Ostk));
ok($objFi->eq("u\x{308}", $uuml));
ok($objFi->eq("U\x{308}", $Uuml));
+ok($objFi->eq("\x{1EF}", "\x{292}\x{30C}"));
+ok($objFi->eq("\x{1EE}", "\x{1B7}\x{30C}"));
+ok($objFi->eq("a\x{30A}", $arng));
+ok($objFi->eq("A\x{30A}", $Arng));
+ok($objFi->eq("a\x{308}", $auml));
+ok($objFi->eq("A\x{308}", $Auml));
+ok($objFi->eq("o\x{308}", $ouml));
+ok($objFi->eq("O\x{308}", $Ouml));
+ok($objFi->eq("o\x{338}", $ostk));
+ok($objFi->eq("O\x{338}", $Ostk));
+
+# 61
+
ok($objFi->eq("u\x{308}\x{300}", "\x{1DC}"));
ok($objFi->eq("U\x{308}\x{300}", "\x{1DB}"));
ok($objFi->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -103,30 +116,17 @@ ok($objFi->eq("u\x{308}\x{304}", "\x{1D6}"));
ok($objFi->eq("U\x{308}\x{304}", "\x{1D5}"));
ok($objFi->eq("u\x{308}\x{30C}", "\x{1DA}"));
ok($objFi->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objFi->eq("\x{1EF}", "\x{292}\x{30C}"));
-ok($objFi->eq("\x{1EE}", "\x{1B7}\x{30C}"));
-
-# 61
-
-ok($objFi->eq("a\x{30A}", $arng));
-ok($objFi->eq("A\x{30A}", $Arng));
ok($objFi->eq("A\x{30A}", "\x{212B}"));
ok($objFi->eq("a\x{30A}\x{301}", "\x{1FB}"));
ok($objFi->eq("A\x{30A}\x{301}", "\x{1FA}"));
-ok($objFi->eq("a\x{308}", $auml));
-ok($objFi->eq("A\x{308}", $Auml));
ok($objFi->eq("a\x{308}\x{304}", "\x{1DF}"));
ok($objFi->eq("A\x{308}\x{304}", "\x{1DE}"));
ok($objFi->eq("\x{1FD}", "$ae\x{301}"));
ok($objFi->eq("\x{1FC}", "$AE\x{301}"));
ok($objFi->eq("\x{1E3}", "$ae\x{304}"));
ok($objFi->eq("\x{1E2}", "$AE\x{304}"));
-ok($objFi->eq("o\x{308}", $ouml));
-ok($objFi->eq("O\x{308}", $Ouml));
ok($objFi->eq("o\x{308}\x{304}", "\x{22B}"));
ok($objFi->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objFi->eq("o\x{338}", $ostk));
-ok($objFi->eq("O\x{338}", $Ostk));
ok($objFi->eq("o\x{338}\x{301}", "\x{1FF}"));
ok($objFi->eq("O\x{338}\x{301}", "\x{1FE}"));
diff --git a/cpan/Unicode-Collate/t/loc_fo.t b/cpan/Unicode-Collate/t/loc_fo.t
index e072d6e58a..d476132471 100644
--- a/cpan/Unicode-Collate/t/loc_fo.t
+++ b/cpan/Unicode-Collate/t/loc_fo.t
@@ -118,6 +118,23 @@ ok($objFo->eq("d\x{335}", "\x{111}"));
ok($objFo->eq("D\x{335}", "\x{110}"));
ok($objFo->eq("u\x{308}", $uuml));
ok($objFo->eq("U\x{308}", $Uuml));
+ok($objFo->eq("u\x{30B}", "\x{171}"));
+ok($objFo->eq("U\x{30B}", "\x{170}"));
+ok($objFo->eq("a\x{308}", $auml));
+ok($objFo->eq("A\x{308}", $Auml));
+ok($objFo->eq("e\x{328}", "\x{119}"));
+ok($objFo->eq("E\x{328}", "\x{118}"));
+ok($objFo->eq("o\x{338}", $ostk));
+ok($objFo->eq("O\x{338}", $Ostk));
+ok($objFo->eq("o\x{308}", $ouml));
+ok($objFo->eq("O\x{308}", $Ouml));
+ok($objFo->eq("o\x{30B}", "\x{151}"));
+ok($objFo->eq("O\x{30B}", "\x{150}"));
+ok($objFo->eq("a\x{30A}", $arng));
+ok($objFo->eq("A\x{30A}", $Arng));
+
+# 84
+
ok($objFo->eq("u\x{308}\x{300}", "\x{1DC}"));
ok($objFo->eq("U\x{308}\x{300}", "\x{1DB}"));
ok($objFo->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -126,33 +143,16 @@ ok($objFo->eq("u\x{308}\x{304}", "\x{1D6}"));
ok($objFo->eq("U\x{308}\x{304}", "\x{1D5}"));
ok($objFo->eq("u\x{308}\x{30C}", "\x{1DA}"));
ok($objFo->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objFo->eq("u\x{30B}", "\x{171}"));
-ok($objFo->eq("U\x{30B}", "\x{170}"));
-
-# 80
-
ok($objFo->eq("\x{1FD}", "$ae\x{301}"));
ok($objFo->eq("\x{1FC}", "$AE\x{301}"));
ok($objFo->eq("\x{1E3}", "$ae\x{304}"));
ok($objFo->eq("\x{1E2}", "$AE\x{304}"));
-ok($objFo->eq("a\x{308}", $auml));
-ok($objFo->eq("A\x{308}", $Auml));
ok($objFo->eq("a\x{308}\x{304}", "\x{1DF}"));
ok($objFo->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objFo->eq("e\x{328}", "\x{119}"));
-ok($objFo->eq("E\x{328}", "\x{118}"));
-ok($objFo->eq("o\x{338}", $ostk));
-ok($objFo->eq("O\x{338}", $Ostk));
ok($objFo->eq("o\x{338}\x{301}", "\x{1FF}"));
ok($objFo->eq("O\x{338}\x{301}", "\x{1FE}"));
-ok($objFo->eq("o\x{308}", $ouml));
-ok($objFo->eq("O\x{308}", $Ouml));
ok($objFo->eq("o\x{308}\x{304}", "\x{22B}"));
ok($objFo->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objFo->eq("o\x{30B}", "\x{151}"));
-ok($objFo->eq("O\x{30B}", "\x{150}"));
-ok($objFo->eq("a\x{30A}", $arng));
-ok($objFo->eq("A\x{30A}", $Arng));
ok($objFo->eq("A\x{30A}", "\x{212B}"));
ok($objFo->eq("a\x{30A}\x{301}", "\x{1FB}"));
ok($objFo->eq("A\x{30A}\x{301}", "\x{1FA}"));
diff --git a/cpan/Unicode-Collate/t/loc_fr.t b/cpan/Unicode-Collate/t/loc_fr.t
index 025d3a897f..3cc1c17264 100644
--- a/cpan/Unicode-Collate/t/loc_fr.t
+++ b/cpan/Unicode-Collate/t/loc_fr.t
@@ -4,7 +4,10 @@ use warnings;
use Unicode::Collate::Locale;
use Test;
-plan tests => 28;
+plan tests => 26;
+
+my $ae = pack 'U', 0xE6;
+my $AE = pack 'U', 0xC6;
my $objFr = Unicode::Collate::Locale->
new(locale => 'FR', normalization => undef);
@@ -14,39 +17,41 @@ ok($objFr->getlocale, 'fr');
$objFr->change(level => 1);
-ok($objFr->eq("Æ", "AE"));
-ok($objFr->eq("æ", "ae"));
-ok($objFr->eq("\x{01FD}", "ae"));
-ok($objFr->eq("\x{01FC}", "AE"));
-ok($objFr->eq("\x{01E3}", "ae"));
-ok($objFr->eq("\x{01E2}", "AE"));
-ok($objFr->eq("\x{1D2D}", "AE"));
+ok($objFr->eq($ae, "ae"));
+ok($objFr->eq($AE, "AE"));
+ok($objFr->eq("\x{1FD}", $ae));
+ok($objFr->eq("\x{1FC}", $AE));
+ok($objFr->eq("\x{1E3}", $ae));
+ok($objFr->eq("\x{1E2}", $AE));
+
+# 8
$objFr->change(level => 2);
-ok($objFr->gt("Æ", "AE"));
-ok($objFr->gt("æ", "ae"));
-ok($objFr->gt("\x{01FD}", "ae"));
-ok($objFr->gt("\x{01FC}", "AE"));
-ok($objFr->gt("\x{01E3}", "ae"));
-ok($objFr->gt("\x{01E2}", "AE"));
-ok($objFr->gt("\x{1D2D}", "AE"));
+ok($objFr->gt($ae, "ae"));
+ok($objFr->gt($AE, "AE"));
+ok($objFr->gt("\x{1FD}", $ae));
+ok($objFr->gt("\x{1FC}", $AE));
+ok($objFr->gt("\x{1E3}", $ae));
+ok($objFr->gt("\x{1E2}", $AE));
-ok($objFr->eq("Æ\x{304}", "\x{01E2}"));
-ok($objFr->eq("æ\x{304}", "\x{01E3}"));
-ok($objFr->eq("Æ\x{301}", "\x{01FC}"));
-ok($objFr->eq("æ\x{301}", "\x{01FD}"));
+ok($objFr->eq($ae, $AE));
+ok($objFr->eq($AE, "\x{1D2D}"));
+ok($objFr->eq("$ae\x{304}", "$AE\x{304}"));
+ok($objFr->eq("$ae\x{301}", "$AE\x{301}"));
-$objFr->change(level => 3);
+# 18
-ok($objFr->lt("æ\x{304}", "\x{01E2}"));
-ok($objFr->eq("Æ\x{304}", "\x{01E2}"));
-ok($objFr->eq("æ\x{304}", "\x{01E3}"));
-ok($objFr->gt("Æ\x{304}", "\x{01E3}"));
+$objFr->change(level => 3);
-ok($objFr->lt("æ\x{301}", "\x{01FC}"));
-ok($objFr->eq("Æ\x{301}", "\x{01FC}"));
-ok($objFr->eq("æ\x{301}", "\x{01FD}"));
-ok($objFr->gt("Æ\x{301}", "\x{01FD}"));
+ok($objFr->lt($ae, $AE));
+ok($objFr->lt($AE, "\x{1D2D}"));
+ok($objFr->lt("$ae\x{304}", "$AE\x{304}"));
+ok($objFr->lt("$ae\x{301}", "$AE\x{301}"));
+ok($objFr->eq("\x{1FD}", "$ae\x{301}"));
+ok($objFr->eq("\x{1FC}", "$AE\x{301}"));
+ok($objFr->eq("\x{1E3}", "$ae\x{304}"));
+ok($objFr->eq("\x{1E2}", "$AE\x{304}"));
+# 26
diff --git a/cpan/Unicode-Collate/t/loc_is.t b/cpan/Unicode-Collate/t/loc_is.t
index 4e02ec8510..6e490a3458 100644
--- a/cpan/Unicode-Collate/t/loc_is.t
+++ b/cpan/Unicode-Collate/t/loc_is.t
@@ -118,27 +118,27 @@ ok($objIs->eq("u\x{301}", pack('U', 0xFA)));
ok($objIs->eq("U\x{301}", pack('U', 0xDA)));
ok($objIs->eq("y\x{301}", pack('U', 0xFD)));
ok($objIs->eq("Y\x{301}", pack('U', 0xDD)));
+ok($objIs->eq("a\x{308}", $auml));
+ok($objIs->eq("A\x{308}", $Auml));
+ok($objIs->eq("o\x{308}", $ouml));
+ok($objIs->eq("O\x{308}", $Ouml));
+ok($objIs->eq("o\x{338}", $ostk));
+ok($objIs->eq("O\x{338}", $Ostk));
+ok($objIs->eq("a\x{30A}", $arng));
+ok($objIs->eq("A\x{30A}", $Arng));
-# 71
+# 79
ok($objIs->eq("\x{1FD}", "$ae\x{301}"));
ok($objIs->eq("\x{1FC}", "$AE\x{301}"));
ok($objIs->eq("\x{1E3}", "$ae\x{304}"));
ok($objIs->eq("\x{1E2}", "$AE\x{304}"));
-ok($objIs->eq("a\x{308}", $auml));
-ok($objIs->eq("A\x{308}", $Auml));
ok($objIs->eq("a\x{308}\x{304}", "\x{1DF}"));
ok($objIs->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objIs->eq("o\x{308}", $ouml));
-ok($objIs->eq("O\x{308}", $Ouml));
ok($objIs->eq("o\x{308}\x{304}", "\x{22B}"));
ok($objIs->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objIs->eq("o\x{338}", $ostk));
-ok($objIs->eq("O\x{338}", $Ostk));
ok($objIs->eq("o\x{338}\x{301}", "\x{1FF}"));
ok($objIs->eq("O\x{338}\x{301}", "\x{1FE}"));
-ok($objIs->eq("a\x{30A}", $arng));
-ok($objIs->eq("A\x{30A}", $Arng));
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}"));
diff --git a/cpan/Unicode-Collate/t/loc_kl.t b/cpan/Unicode-Collate/t/loc_kl.t
index 0d0aa032fd..bc19f8e73a 100644
--- a/cpan/Unicode-Collate/t/loc_kl.t
+++ b/cpan/Unicode-Collate/t/loc_kl.t
@@ -114,6 +114,23 @@ ok($objKl->eq("d\x{335}", "\x{111}"));
ok($objKl->eq("D\x{335}", "\x{110}"));
ok($objKl->eq("u\x{308}", $uuml));
ok($objKl->eq("U\x{308}", $Uuml));
+ok($objKl->eq("u\x{30B}", "\x{171}"));
+ok($objKl->eq("U\x{30B}", "\x{170}"));
+ok($objKl->eq("a\x{308}", $auml));
+ok($objKl->eq("A\x{308}", $Auml));
+ok($objKl->eq("e\x{328}", "\x{119}"));
+ok($objKl->eq("E\x{328}", "\x{118}"));
+ok($objKl->eq("o\x{338}", $ostk));
+ok($objKl->eq("O\x{338}", $Ostk));
+ok($objKl->eq("o\x{308}", $ouml));
+ok($objKl->eq("O\x{308}", $Ouml));
+ok($objKl->eq("o\x{30B}", "\x{151}"));
+ok($objKl->eq("O\x{30B}", "\x{150}"));
+ok($objKl->eq("a\x{30A}", $arng));
+ok($objKl->eq("A\x{30A}", $Arng));
+
+# 80
+
ok($objKl->eq("u\x{308}\x{300}", "\x{1DC}"));
ok($objKl->eq("U\x{308}\x{300}", "\x{1DB}"));
ok($objKl->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -122,33 +139,16 @@ ok($objKl->eq("u\x{308}\x{304}", "\x{1D6}"));
ok($objKl->eq("U\x{308}\x{304}", "\x{1D5}"));
ok($objKl->eq("u\x{308}\x{30C}", "\x{1DA}"));
ok($objKl->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objKl->eq("u\x{30B}", "\x{171}"));
-ok($objKl->eq("U\x{30B}", "\x{170}"));
-
-# 76
-
ok($objKl->eq("\x{1FD}", "$ae\x{301}"));
ok($objKl->eq("\x{1FC}", "$AE\x{301}"));
ok($objKl->eq("\x{1E3}", "$ae\x{304}"));
ok($objKl->eq("\x{1E2}", "$AE\x{304}"));
-ok($objKl->eq("a\x{308}", $auml));
-ok($objKl->eq("A\x{308}", $Auml));
ok($objKl->eq("a\x{308}\x{304}", "\x{1DF}"));
ok($objKl->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objKl->eq("e\x{328}", "\x{119}"));
-ok($objKl->eq("E\x{328}", "\x{118}"));
-ok($objKl->eq("o\x{338}", $ostk));
-ok($objKl->eq("O\x{338}", $Ostk));
ok($objKl->eq("o\x{338}\x{301}", "\x{1FF}"));
ok($objKl->eq("O\x{338}\x{301}", "\x{1FE}"));
-ok($objKl->eq("o\x{308}", $ouml));
-ok($objKl->eq("O\x{308}", $Ouml));
ok($objKl->eq("o\x{308}\x{304}", "\x{22B}"));
ok($objKl->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objKl->eq("o\x{30B}", "\x{151}"));
-ok($objKl->eq("O\x{30B}", "\x{150}"));
-ok($objKl->eq("a\x{30A}", $arng));
-ok($objKl->eq("A\x{30A}", $Arng));
ok($objKl->eq("A\x{30A}", "\x{212B}"));
ok($objKl->eq("a\x{30A}\x{301}", "\x{1FB}"));
ok($objKl->eq("A\x{30A}\x{301}", "\x{1FA}"));
diff --git a/cpan/Unicode-Collate/t/loc_nb.t b/cpan/Unicode-Collate/t/loc_nb.t
index 22191e3d63..d648a685e9 100644
--- a/cpan/Unicode-Collate/t/loc_nb.t
+++ b/cpan/Unicode-Collate/t/loc_nb.t
@@ -110,6 +110,23 @@ ok($objNb->eq("d\x{335}", "\x{111}"));
ok($objNb->eq("D\x{335}", "\x{110}"));
ok($objNb->eq("u\x{308}", $uuml));
ok($objNb->eq("U\x{308}", $Uuml));
+ok($objNb->eq("u\x{30B}", "\x{171}"));
+ok($objNb->eq("U\x{30B}", "\x{170}"));
+ok($objNb->eq("a\x{308}", $auml));
+ok($objNb->eq("A\x{308}", $Auml));
+ok($objNb->eq("e\x{328}", "\x{119}"));
+ok($objNb->eq("E\x{328}", "\x{118}"));
+ok($objNb->eq("o\x{338}", $ostk));
+ok($objNb->eq("O\x{338}", $Ostk));
+ok($objNb->eq("o\x{308}", $ouml));
+ok($objNb->eq("O\x{308}", $Ouml));
+ok($objNb->eq("o\x{30B}", "\x{151}"));
+ok($objNb->eq("O\x{30B}", "\x{150}"));
+ok($objNb->eq("a\x{30A}", $arng));
+ok($objNb->eq("A\x{30A}", $Arng));
+
+# 74
+
ok($objNb->eq("u\x{308}\x{300}", "\x{1DC}"));
ok($objNb->eq("U\x{308}\x{300}", "\x{1DB}"));
ok($objNb->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -118,33 +135,16 @@ ok($objNb->eq("u\x{308}\x{304}", "\x{1D6}"));
ok($objNb->eq("U\x{308}\x{304}", "\x{1D5}"));
ok($objNb->eq("u\x{308}\x{30C}", "\x{1DA}"));
ok($objNb->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objNb->eq("u\x{30B}", "\x{171}"));
-ok($objNb->eq("U\x{30B}", "\x{170}"));
-
-# 70
-
ok($objNb->eq("\x{1FD}", "$ae\x{301}"));
ok($objNb->eq("\x{1FC}", "$AE\x{301}"));
ok($objNb->eq("\x{1E3}", "$ae\x{304}"));
ok($objNb->eq("\x{1E2}", "$AE\x{304}"));
-ok($objNb->eq("a\x{308}", $auml));
-ok($objNb->eq("A\x{308}", $Auml));
ok($objNb->eq("a\x{308}\x{304}", "\x{1DF}"));
ok($objNb->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objNb->eq("e\x{328}", "\x{119}"));
-ok($objNb->eq("E\x{328}", "\x{118}"));
-ok($objNb->eq("o\x{338}", $ostk));
-ok($objNb->eq("O\x{338}", $Ostk));
ok($objNb->eq("o\x{338}\x{301}", "\x{1FF}"));
ok($objNb->eq("O\x{338}\x{301}", "\x{1FE}"));
-ok($objNb->eq("o\x{308}", $ouml));
-ok($objNb->eq("O\x{308}", $Ouml));
ok($objNb->eq("o\x{308}\x{304}", "\x{22B}"));
ok($objNb->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objNb->eq("o\x{30B}", "\x{151}"));
-ok($objNb->eq("O\x{30B}", "\x{150}"));
-ok($objNb->eq("a\x{30A}", $arng));
-ok($objNb->eq("A\x{30A}", $Arng));
ok($objNb->eq("A\x{30A}", "\x{212B}"));
ok($objNb->eq("a\x{30A}\x{301}", "\x{1FB}"));
ok($objNb->eq("A\x{30A}\x{301}", "\x{1FA}"));
diff --git a/cpan/Unicode-Collate/t/loc_nn.t b/cpan/Unicode-Collate/t/loc_nn.t
index 9620209d14..fc6514abb7 100644
--- a/cpan/Unicode-Collate/t/loc_nn.t
+++ b/cpan/Unicode-Collate/t/loc_nn.t
@@ -110,6 +110,23 @@ ok($objNn->eq("d\x{335}", "\x{111}"));
ok($objNn->eq("D\x{335}", "\x{110}"));
ok($objNn->eq("u\x{308}", $uuml));
ok($objNn->eq("U\x{308}", $Uuml));
+ok($objNn->eq("u\x{30B}", "\x{171}"));
+ok($objNn->eq("U\x{30B}", "\x{170}"));
+ok($objNn->eq("a\x{308}", $auml));
+ok($objNn->eq("A\x{308}", $Auml));
+ok($objNn->eq("e\x{328}", "\x{119}"));
+ok($objNn->eq("E\x{328}", "\x{118}"));
+ok($objNn->eq("o\x{338}", $ostk));
+ok($objNn->eq("O\x{338}", $Ostk));
+ok($objNn->eq("o\x{308}", $ouml));
+ok($objNn->eq("O\x{308}", $Ouml));
+ok($objNn->eq("o\x{30B}", "\x{151}"));
+ok($objNn->eq("O\x{30B}", "\x{150}"));
+ok($objNn->eq("a\x{30A}", $arng));
+ok($objNn->eq("A\x{30A}", $Arng));
+
+# 74
+
ok($objNn->eq("u\x{308}\x{300}", "\x{1DC}"));
ok($objNn->eq("U\x{308}\x{300}", "\x{1DB}"));
ok($objNn->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -118,33 +135,16 @@ ok($objNn->eq("u\x{308}\x{304}", "\x{1D6}"));
ok($objNn->eq("U\x{308}\x{304}", "\x{1D5}"));
ok($objNn->eq("u\x{308}\x{30C}", "\x{1DA}"));
ok($objNn->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objNn->eq("u\x{30B}", "\x{171}"));
-ok($objNn->eq("U\x{30B}", "\x{170}"));
-
-# 70
-
ok($objNn->eq("\x{1FD}", "$ae\x{301}"));
ok($objNn->eq("\x{1FC}", "$AE\x{301}"));
ok($objNn->eq("\x{1E3}", "$ae\x{304}"));
ok($objNn->eq("\x{1E2}", "$AE\x{304}"));
-ok($objNn->eq("a\x{308}", $auml));
-ok($objNn->eq("A\x{308}", $Auml));
ok($objNn->eq("a\x{308}\x{304}", "\x{1DF}"));
ok($objNn->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objNn->eq("e\x{328}", "\x{119}"));
-ok($objNn->eq("E\x{328}", "\x{118}"));
-ok($objNn->eq("o\x{338}", $ostk));
-ok($objNn->eq("O\x{338}", $Ostk));
ok($objNn->eq("o\x{338}\x{301}", "\x{1FF}"));
ok($objNn->eq("O\x{338}\x{301}", "\x{1FE}"));
-ok($objNn->eq("o\x{308}", $ouml));
-ok($objNn->eq("O\x{308}", $Ouml));
ok($objNn->eq("o\x{308}\x{304}", "\x{22B}"));
ok($objNn->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objNn->eq("o\x{30B}", "\x{151}"));
-ok($objNn->eq("O\x{30B}", "\x{150}"));
-ok($objNn->eq("a\x{30A}", $arng));
-ok($objNn->eq("A\x{30A}", $Arng));
ok($objNn->eq("A\x{30A}", "\x{212B}"));
ok($objNn->eq("a\x{30A}\x{301}", "\x{1FB}"));
ok($objNn->eq("A\x{30A}\x{301}", "\x{1FA}"));
diff --git a/cpan/Unicode-Collate/t/loc_nso.t b/cpan/Unicode-Collate/t/loc_nso.t
new file mode 100644
index 0000000000..e0fab023bc
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_nso.t
@@ -0,0 +1,71 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 40;
+
+my $objNso = Unicode::Collate::Locale->
+ new(locale => 'NSO', normalization => undef);
+
+ok(1);
+ok($objNso->getlocale, 'nso');
+
+$objNso->change(level => 1);
+
+ok($objNso->lt("e", "e\x{302}"));
+ok($objNso->gt("f", "e\x{302}"));
+ok($objNso->lt("o", "o\x{302}"));
+ok($objNso->gt("p", "o\x{302}"));
+ok($objNso->lt("s", "s\x{30C}"));
+ok($objNso->gt("t", "s\x{30C}"));
+
+# 8
+
+$objNso->change(level => 2);
+
+ok($objNso->eq("e\x{302}", "E\x{302}"));
+ok($objNso->eq("o\x{302}", "O\x{302}"));
+ok($objNso->eq("s\x{30C}", "S\x{30C}"));
+
+$objNso->change(level => 3);
+
+ok($objNso->lt("e\x{302}", "E\x{302}"));
+ok($objNso->lt("o\x{302}", "O\x{302}"));
+ok($objNso->lt("s\x{30C}", "S\x{30C}"));
+
+# 14
+
+ok($objNso->eq("e\x{302}", pack('U', 0xEA)));
+ok($objNso->eq("E\x{302}", pack('U', 0xCA)));
+ok($objNso->eq("o\x{302}", pack('U', 0xF4)));
+ok($objNso->eq("O\x{302}", pack('U', 0xD4)));
+ok($objNso->eq("s\x{30C}", "\x{161}"));
+ok($objNso->eq("S\x{30C}", "\x{160}"));
+
+# 20
+
+ok($objNso->eq("e\x{302}\x{300}", "\x{1EC1}"));
+ok($objNso->eq("E\x{302}\x{300}", "\x{1EC0}"));
+ok($objNso->eq("e\x{302}\x{301}", "\x{1EBF}"));
+ok($objNso->eq("E\x{302}\x{301}", "\x{1EBE}"));
+ok($objNso->eq("e\x{302}\x{303}", "\x{1EC5}"));
+ok($objNso->eq("E\x{302}\x{303}", "\x{1EC4}"));
+ok($objNso->eq("e\x{302}\x{309}", "\x{1EC3}"));
+ok($objNso->eq("E\x{302}\x{309}", "\x{1EC2}"));
+ok($objNso->eq("e\x{302}\x{323}", "\x{1EC7}"));
+ok($objNso->eq("E\x{302}\x{323}", "\x{1EC6}"));
+
+ok($objNso->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objNso->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objNso->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objNso->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objNso->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objNso->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objNso->eq("o\x{302}\x{309}", "\x{1ED5}"));
+ok($objNso->eq("O\x{302}\x{309}", "\x{1ED4}"));
+ok($objNso->eq("o\x{302}\x{323}", "\x{1ED9}"));
+ok($objNso->eq("O\x{302}\x{323}", "\x{1ED8}"));
+
+# 40
diff --git a/cpan/Unicode-Collate/t/loc_om.t b/cpan/Unicode-Collate/t/loc_om.t
new file mode 100644
index 0000000000..ed25934ddc
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_om.t
@@ -0,0 +1,72 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 41;
+
+my $objOm = Unicode::Collate::Locale->
+ new(locale => 'OM', normalization => undef);
+
+ok(1);
+ok($objOm->getlocale, 'om');
+
+$objOm->change(level => 1);
+
+ok($objOm->lt("z", "ch"));
+ok($objOm->lt("ch", "dh"));
+ok($objOm->lt("dh", "kh"));
+ok($objOm->lt("kh", "ny"));
+ok($objOm->lt("ny", "ph"));
+ok($objOm->lt("ph", "sh"));
+
+# 8
+
+$objOm->change(level => 2);
+
+ok($objOm->eq("ch", "Ch"));
+ok($objOm->eq("Ch", "CH"));
+ok($objOm->eq("dh", "Dh"));
+ok($objOm->eq("Dh", "DH"));
+ok($objOm->eq("kh", "Kh"));
+ok($objOm->eq("Kh", "KH"));
+ok($objOm->eq("ny", "Ny"));
+ok($objOm->eq("Ny", "NY"));
+ok($objOm->eq("ph", "Ph"));
+ok($objOm->eq("Ph", "PH"));
+ok($objOm->eq("sh", "Sh"));
+
+# 19
+
+$objOm->change(level => 3);
+
+ok($objOm->lt("ch", "Ch"));
+ok($objOm->lt("Ch", "CH"));
+ok($objOm->lt("dh", "Dh"));
+ok($objOm->lt("Dh", "DH"));
+ok($objOm->lt("kh", "Kh"));
+ok($objOm->lt("Kh", "KH"));
+ok($objOm->lt("ny", "Ny"));
+ok($objOm->lt("Ny", "NY"));
+ok($objOm->lt("ph", "Ph"));
+ok($objOm->lt("Ph", "PH"));
+ok($objOm->lt("sh", "Sh"));
+
+# 30
+
+$objOm->change(upper_before_lower => 1);
+
+ok($objOm->gt("ch", "Ch"));
+ok($objOm->gt("Ch", "CH"));
+ok($objOm->gt("dh", "Dh"));
+ok($objOm->gt("Dh", "DH"));
+ok($objOm->gt("kh", "Kh"));
+ok($objOm->gt("Kh", "KH"));
+ok($objOm->gt("ny", "Ny"));
+ok($objOm->gt("Ny", "NY"));
+ok($objOm->gt("ph", "Ph"));
+ok($objOm->gt("Ph", "PH"));
+ok($objOm->gt("sh", "Sh"));
+
+# 41
diff --git a/cpan/Unicode-Collate/t/loc_ro.t b/cpan/Unicode-Collate/t/loc_ro.t
index 33051975a1..8fa95438fb 100644
--- a/cpan/Unicode-Collate/t/loc_ro.t
+++ b/cpan/Unicode-Collate/t/loc_ro.t
@@ -4,7 +4,7 @@ use warnings;
use Unicode::Collate::Locale;
use Test;
-plan tests => 51;
+plan tests => 71;
my $objRo = Unicode::Collate::Locale->
new(locale => 'RO', normalization => undef);
@@ -52,7 +52,12 @@ ok($objRo->lt("s\x{327}", "S\x{327}"));
ok($objRo->lt("t\x{327}", "T\x{327}"));
ok($objRo->lt("z\x{307}", "Z\x{307}"));
-# 29
+ok($objRo->eq("s\x{327}", "s\x{326}"));
+ok($objRo->eq("S\x{327}", "S\x{326}"));
+ok($objRo->eq("t\x{327}", "t\x{326}"));
+ok($objRo->eq("T\x{327}", "T\x{326}"));
+
+# 33
ok($objRo->eq("a\x{306}", "\x{103}"));
ok($objRo->eq("A\x{306}", "\x{102}"));
@@ -73,11 +78,28 @@ ok($objRo->eq("T\x{326}", "\x{21A}"));
ok($objRo->eq("z\x{307}", "\x{17C}"));
ok($objRo->eq("Z\x{307}", "\x{17B}"));
-# 47
-
-ok($objRo->eq("s\x{327}", "s\x{326}"));
-ok($objRo->eq("S\x{327}", "S\x{326}"));
-ok($objRo->eq("t\x{327}", "t\x{326}"));
-ok($objRo->eq("T\x{327}", "T\x{326}"));
-
# 51
+
+ok($objRo->eq("a\x{306}\x{300}", "\x{1EB1}"));
+ok($objRo->eq("A\x{306}\x{300}", "\x{1EB0}"));
+ok($objRo->eq("a\x{306}\x{301}", "\x{1EAF}"));
+ok($objRo->eq("A\x{306}\x{301}", "\x{1EAE}"));
+ok($objRo->eq("a\x{306}\x{303}", "\x{1EB5}"));
+ok($objRo->eq("A\x{306}\x{303}", "\x{1EB4}"));
+ok($objRo->eq("a\x{306}\x{309}", "\x{1EB3}"));
+ok($objRo->eq("A\x{306}\x{309}", "\x{1EB2}"));
+ok($objRo->eq("a\x{306}\x{323}", "\x{1EB7}"));
+ok($objRo->eq("A\x{306}\x{323}", "\x{1EB6}"));
+
+ok($objRo->eq("a\x{302}\x{300}", "\x{1EA7}"));
+ok($objRo->eq("A\x{302}\x{300}", "\x{1EA6}"));
+ok($objRo->eq("a\x{302}\x{301}", "\x{1EA5}"));
+ok($objRo->eq("A\x{302}\x{301}", "\x{1EA4}"));
+ok($objRo->eq("a\x{302}\x{303}", "\x{1EAB}"));
+ok($objRo->eq("A\x{302}\x{303}", "\x{1EAA}"));
+ok($objRo->eq("a\x{302}\x{309}", "\x{1EA9}"));
+ok($objRo->eq("A\x{302}\x{309}", "\x{1EA8}"));
+ok($objRo->eq("a\x{302}\x{323}", "\x{1EAD}"));
+ok($objRo->eq("A\x{302}\x{323}", "\x{1EAC}"));
+
+# 71
diff --git a/cpan/Unicode-Collate/t/loc_sk.t b/cpan/Unicode-Collate/t/loc_sk.t
index 8a6a0df12b..9ed6f0a29a 100644
--- a/cpan/Unicode-Collate/t/loc_sk.t
+++ b/cpan/Unicode-Collate/t/loc_sk.t
@@ -4,7 +4,7 @@ use warnings;
use Unicode::Collate::Locale;
use Test;
-plan tests => 42;
+plan tests => 52;
my $objSk = Unicode::Collate::Locale->
new(locale => 'SK', normalization => undef);
@@ -69,3 +69,16 @@ ok($objSk->eq("z\x{30C}", "\x{17E}"));
ok($objSk->eq("Z\x{30C}", "\x{17D}"));
# 42
+
+ok($objSk->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objSk->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objSk->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objSk->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objSk->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objSk->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objSk->eq("o\x{302}\x{309}", "\x{1ED5}"));
+ok($objSk->eq("O\x{302}\x{309}", "\x{1ED4}"));
+ok($objSk->eq("o\x{302}\x{323}", "\x{1ED9}"));
+ok($objSk->eq("O\x{302}\x{323}", "\x{1ED8}"));
+
+# 52
diff --git a/cpan/Unicode-Collate/t/loc_sv.t b/cpan/Unicode-Collate/t/loc_sv.t
index 7df5ea6b90..7266f5e6a3 100644
--- a/cpan/Unicode-Collate/t/loc_sv.t
+++ b/cpan/Unicode-Collate/t/loc_sv.t
@@ -4,7 +4,7 @@ use warnings;
use Unicode::Collate::Locale;
use Test;
-plan tests => 107;
+plan tests => 117;
my $eth = pack 'U', 0xF0;
my $ETH = pack 'U', 0xD0;
@@ -122,6 +122,25 @@ ok($objSv->eq("d\x{335}", "\x{111}"));
ok($objSv->eq("D\x{335}", "\x{110}"));
ok($objSv->eq("u\x{308}", $uuml));
ok($objSv->eq("U\x{308}", $Uuml));
+ok($objSv->eq("u\x{30B}", "\x{171}"));
+ok($objSv->eq("U\x{30B}", "\x{170}"));
+ok($objSv->eq("a\x{30A}", $arng));
+ok($objSv->eq("A\x{30A}", $Arng));
+ok($objSv->eq("a\x{308}", $auml));
+ok($objSv->eq("A\x{308}", $Auml));
+ok($objSv->eq("e\x{328}", "\x{119}"));
+ok($objSv->eq("E\x{328}", "\x{118}"));
+ok($objSv->eq("o\x{308}", $ouml));
+ok($objSv->eq("O\x{308}", $Ouml));
+ok($objSv->eq("o\x{338}", $ostk));
+ok($objSv->eq("O\x{338}", $Ostk));
+ok($objSv->eq("o\x{30B}", "\x{151}"));
+ok($objSv->eq("O\x{30B}", "\x{150}"));
+ok($objSv->eq("o\x{302}", $ocrc));
+ok($objSv->eq("O\x{302}", $Ocrc));
+
+# 86
+
ok($objSv->eq("u\x{308}\x{300}", "\x{1DC}"));
ok($objSv->eq("U\x{308}\x{300}", "\x{1DB}"));
ok($objSv->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -130,37 +149,31 @@ ok($objSv->eq("u\x{308}\x{304}", "\x{1D6}"));
ok($objSv->eq("U\x{308}\x{304}", "\x{1D5}"));
ok($objSv->eq("u\x{308}\x{30C}", "\x{1DA}"));
ok($objSv->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objSv->eq("u\x{30B}", "\x{171}"));
-ok($objSv->eq("U\x{30B}", "\x{170}"));
-
-# 80
-
-ok($objSv->eq("a\x{30A}", $arng));
-ok($objSv->eq("A\x{30A}", $Arng));
ok($objSv->eq("A\x{30A}", "\x{212B}"));
ok($objSv->eq("a\x{30A}\x{301}", "\x{1FB}"));
ok($objSv->eq("A\x{30A}\x{301}", "\x{1FA}"));
-ok($objSv->eq("a\x{308}", $auml));
-ok($objSv->eq("A\x{308}", $Auml));
ok($objSv->eq("a\x{308}\x{304}", "\x{1DF}"));
ok($objSv->eq("A\x{308}\x{304}", "\x{1DE}"));
ok($objSv->eq("\x{1FD}", "$ae\x{301}"));
ok($objSv->eq("\x{1FC}", "$AE\x{301}"));
ok($objSv->eq("\x{1E3}", "$ae\x{304}"));
ok($objSv->eq("\x{1E2}", "$AE\x{304}"));
-ok($objSv->eq("e\x{328}", "\x{119}"));
-ok($objSv->eq("E\x{328}", "\x{118}"));
-ok($objSv->eq("o\x{308}", $ouml));
-ok($objSv->eq("O\x{308}", $Ouml));
ok($objSv->eq("o\x{308}\x{304}", "\x{22B}"));
ok($objSv->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objSv->eq("o\x{338}", $ostk));
-ok($objSv->eq("O\x{338}", $Ostk));
ok($objSv->eq("o\x{338}\x{301}", "\x{1FF}"));
ok($objSv->eq("O\x{338}\x{301}", "\x{1FE}"));
-ok($objSv->eq("o\x{30B}", "\x{151}"));
-ok($objSv->eq("O\x{30B}", "\x{150}"));
-ok($objSv->eq("o\x{302}", $ocrc));
-ok($objSv->eq("O\x{302}", $Ocrc));
# 107
+
+ok($objSv->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objSv->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objSv->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objSv->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objSv->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objSv->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objSv->eq("o\x{302}\x{309}", "\x{1ED5}"));
+ok($objSv->eq("O\x{302}\x{309}", "\x{1ED4}"));
+ok($objSv->eq("o\x{302}\x{323}", "\x{1ED9}"));
+ok($objSv->eq("O\x{302}\x{323}", "\x{1ED8}"));
+
+# 117
diff --git a/cpan/Unicode-Collate/t/loc_sw.t b/cpan/Unicode-Collate/t/loc_sw.t
index e019e1f51f..403d209bc8 100644
--- a/cpan/Unicode-Collate/t/loc_sw.t
+++ b/cpan/Unicode-Collate/t/loc_sw.t
@@ -42,62 +42,62 @@ ok($objSw->gt("u", "th"));
$objSw->change(level => 2);
ok($objSw->eq("ch", "Ch"));
-ok($objSw->eq("CH", "Ch"));
+ok($objSw->eq("Ch", "CH"));
ok($objSw->eq("dh", "Dh"));
-ok($objSw->eq("DH", "Dh"));
+ok($objSw->eq("Dh", "DH"));
ok($objSw->eq("gh", "Gh"));
-ok($objSw->eq("GH", "Gh"));
+ok($objSw->eq("Gh", "GH"));
ok($objSw->eq("kh", "Kh"));
-ok($objSw->eq("KH", "Kh"));
+ok($objSw->eq("Kh", "KH"));
ok($objSw->eq("ng'","Ng'"));
-ok($objSw->eq("NG'","Ng'"));
+ok($objSw->eq("Ng'","NG'"));
ok($objSw->eq("ny", "Ny"));
-ok($objSw->eq("NY", "Ny"));
+ok($objSw->eq("Ny", "NY"));
ok($objSw->eq("sh", "Sh"));
-ok($objSw->eq("SH", "Sh"));
+ok($objSw->eq("Sh", "SH"));
ok($objSw->eq("th", "Th"));
-ok($objSw->eq("TH", "Th"));
+ok($objSw->eq("Th", "TH"));
# 40
$objSw->change(level => 3);
ok($objSw->lt("ch", "Ch"));
-ok($objSw->gt("CH", "Ch"));
+ok($objSw->lt("Ch", "CH"));
ok($objSw->lt("dh", "Dh"));
-ok($objSw->gt("DH", "Dh"));
+ok($objSw->lt("Dh", "DH"));
ok($objSw->lt("gh", "Gh"));
-ok($objSw->gt("GH", "Gh"));
+ok($objSw->lt("Gh", "GH"));
ok($objSw->lt("kh", "Kh"));
-ok($objSw->gt("KH", "Kh"));
+ok($objSw->lt("Kh", "KH"));
ok($objSw->lt("ng'","Ng'"));
-ok($objSw->gt("NG'","Ng'"));
+ok($objSw->lt("Ng'","NG'"));
ok($objSw->lt("ny", "Ny"));
-ok($objSw->gt("NY", "Ny"));
+ok($objSw->lt("Ny", "NY"));
ok($objSw->lt("sh", "Sh"));
-ok($objSw->gt("SH", "Sh"));
+ok($objSw->lt("Sh", "SH"));
ok($objSw->lt("th", "Th"));
-ok($objSw->gt("TH", "Th"));
+ok($objSw->lt("Th", "TH"));
# 56
$objSw->change(upper_before_lower => 1);
ok($objSw->gt("ch", "Ch"));
-ok($objSw->lt("CH", "Ch"));
+ok($objSw->gt("Ch", "CH"));
ok($objSw->gt("dh", "Dh"));
-ok($objSw->lt("DH", "Dh"));
+ok($objSw->gt("Dh", "DH"));
ok($objSw->gt("gh", "Gh"));
-ok($objSw->lt("GH", "Gh"));
+ok($objSw->gt("Gh", "GH"));
ok($objSw->gt("kh", "Kh"));
-ok($objSw->lt("KH", "Kh"));
+ok($objSw->gt("Kh", "KH"));
ok($objSw->gt("ng'","Ng'"));
-ok($objSw->lt("NG'","Ng'"));
+ok($objSw->gt("Ng'","NG'"));
ok($objSw->gt("ny", "Ny"));
-ok($objSw->lt("NY", "Ny"));
+ok($objSw->gt("Ny", "NY"));
ok($objSw->gt("sh", "Sh"));
-ok($objSw->lt("SH", "Sh"));
+ok($objSw->gt("Sh", "SH"));
ok($objSw->gt("th", "Th"));
-ok($objSw->lt("TH", "Th"));
+ok($objSw->gt("Th", "TH"));
# 72
diff --git a/cpan/Unicode-Collate/t/loc_tn.t b/cpan/Unicode-Collate/t/loc_tn.t
new file mode 100644
index 0000000000..07e1f808ac
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_tn.t
@@ -0,0 +1,71 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 40;
+
+my $objTn = Unicode::Collate::Locale->
+ new(locale => 'TN', normalization => undef);
+
+ok(1);
+ok($objTn->getlocale, 'tn');
+
+$objTn->change(level => 1);
+
+ok($objTn->lt("e", "e\x{302}"));
+ok($objTn->gt("f", "e\x{302}"));
+ok($objTn->lt("o", "o\x{302}"));
+ok($objTn->gt("p", "o\x{302}"));
+ok($objTn->lt("s", "s\x{30C}"));
+ok($objTn->gt("t", "s\x{30C}"));
+
+# 8
+
+$objTn->change(level => 2);
+
+ok($objTn->eq("e\x{302}", "E\x{302}"));
+ok($objTn->eq("o\x{302}", "O\x{302}"));
+ok($objTn->eq("s\x{30C}", "S\x{30C}"));
+
+$objTn->change(level => 3);
+
+ok($objTn->lt("e\x{302}", "E\x{302}"));
+ok($objTn->lt("o\x{302}", "O\x{302}"));
+ok($objTn->lt("s\x{30C}", "S\x{30C}"));
+
+# 14
+
+ok($objTn->eq("e\x{302}", pack('U', 0xEA)));
+ok($objTn->eq("E\x{302}", pack('U', 0xCA)));
+ok($objTn->eq("o\x{302}", pack('U', 0xF4)));
+ok($objTn->eq("O\x{302}", pack('U', 0xD4)));
+ok($objTn->eq("s\x{30C}", "\x{161}"));
+ok($objTn->eq("S\x{30C}", "\x{160}"));
+
+# 20
+
+ok($objTn->eq("e\x{302}\x{300}", "\x{1EC1}"));
+ok($objTn->eq("E\x{302}\x{300}", "\x{1EC0}"));
+ok($objTn->eq("e\x{302}\x{301}", "\x{1EBF}"));
+ok($objTn->eq("E\x{302}\x{301}", "\x{1EBE}"));
+ok($objTn->eq("e\x{302}\x{303}", "\x{1EC5}"));
+ok($objTn->eq("E\x{302}\x{303}", "\x{1EC4}"));
+ok($objTn->eq("e\x{302}\x{309}", "\x{1EC3}"));
+ok($objTn->eq("E\x{302}\x{309}", "\x{1EC2}"));
+ok($objTn->eq("e\x{302}\x{323}", "\x{1EC7}"));
+ok($objTn->eq("E\x{302}\x{323}", "\x{1EC6}"));
+
+ok($objTn->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objTn->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objTn->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objTn->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objTn->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objTn->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objTn->eq("o\x{302}\x{309}", "\x{1ED5}"));
+ok($objTn->eq("O\x{302}\x{309}", "\x{1ED4}"));
+ok($objTn->eq("o\x{302}\x{323}", "\x{1ED9}"));
+ok($objTn->eq("O\x{302}\x{323}", "\x{1ED8}"));
+
+# 40
diff --git a/cpan/Unicode-Collate/t/loc_vi.t b/cpan/Unicode-Collate/t/loc_vi.t
new file mode 100644
index 0000000000..8af5154710
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_vi.t
@@ -0,0 +1,237 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 194;
+
+my $objVi = Unicode::Collate::Locale->
+ new(locale => 'VI', normalization => undef);
+
+ok(1);
+ok($objVi->getlocale, 'vi');
+
+$objVi->change(level => 1);
+
+ok($objVi->lt("a", "a\x{306}"));
+ok($objVi->lt("a\x{306}", "a\x{302}"));
+ok($objVi->gt("b", "a\x{302}"));
+ok($objVi->lt("d", "d\x{335}"));
+ok($objVi->gt("e", "d\x{335}"));
+ok($objVi->lt("e", "e\x{302}"));
+ok($objVi->gt("f", "e\x{302}"));
+ok($objVi->lt("o", "o\x{302}"));
+ok($objVi->lt("o\x{302}", "o\x{31B}"));
+ok($objVi->gt("p", "o\x{31B}"));
+ok($objVi->lt("u", "u\x{31B}"));
+ok($objVi->gt("v", "u\x{31B}"));
+
+# 14
+
+ok($objVi->eq("\x{300}", "\x{309}"));
+ok($objVi->eq("\x{309}", "\x{303}"));
+ok($objVi->eq("\x{303}", "\x{301}"));
+ok($objVi->eq("\x{301}", "\x{323}"));
+ok($objVi->eq("\x{323}", "\x{306}"));
+ok($objVi->eq("\x{306}", "\x{302}"));
+
+ok($objVi->eq("X\x{300}", "X\x{309}"));
+ok($objVi->eq("X\x{309}", "X\x{303}"));
+ok($objVi->eq("X\x{303}", "X\x{301}"));
+ok($objVi->eq("X\x{301}", "X\x{323}"));
+ok($objVi->eq("X\x{323}", "X\x{306}"));
+ok($objVi->eq("X\x{306}", "X\x{302}"));
+
+# 26
+
+$objVi->change(level => 2);
+
+ok($objVi->lt("\x{300}", "\x{309}"));
+ok($objVi->lt("\x{309}", "\x{303}"));
+ok($objVi->lt("\x{303}", "\x{301}"));
+ok($objVi->lt("\x{301}", "\x{323}"));
+ok($objVi->lt("\x{323}", "\x{306}"));
+ok($objVi->lt("\x{306}", "\x{302}"));
+
+ok($objVi->lt("X\x{300}", "X\x{309}"));
+ok($objVi->lt("X\x{309}", "X\x{303}"));
+ok($objVi->lt("X\x{303}", "X\x{301}"));
+ok($objVi->lt("X\x{301}", "X\x{323}"));
+ok($objVi->lt("X\x{323}", "X\x{306}"));
+ok($objVi->lt("X\x{306}", "X\x{302}"));
+
+# 38
+
+ok($objVi->eq("a\x{306}", "A\x{306}"));
+ok($objVi->eq("a\x{302}", "A\x{302}"));
+ok($objVi->eq("d\x{335}", "D\x{335}"));
+ok($objVi->eq("e\x{302}", "E\x{302}"));
+ok($objVi->eq("o\x{302}", "O\x{302}"));
+ok($objVi->eq("o\x{31B}", "O\x{31B}"));
+ok($objVi->eq("u\x{31B}", "U\x{31B}"));
+
+# 45
+
+$objVi->change(level => 3);
+
+ok($objVi->lt("a\x{306}", "A\x{306}"));
+ok($objVi->lt("a\x{302}", "A\x{302}"));
+ok($objVi->lt("d\x{335}", "D\x{335}"));
+ok($objVi->lt("e\x{302}", "E\x{302}"));
+ok($objVi->lt("o\x{302}", "O\x{302}"));
+ok($objVi->lt("o\x{31B}", "O\x{31B}"));
+ok($objVi->lt("u\x{31B}", "U\x{31B}"));
+
+# 52
+
+ok($objVi->eq("a\x{306}", "\x{103}"));
+ok($objVi->eq("A\x{306}", "\x{102}"));
+ok($objVi->eq("a\x{302}", pack('U', 0xE2)));
+ok($objVi->eq("A\x{302}", pack('U', 0xC2)));
+ok($objVi->eq("d\x{335}", "\x{111}"));
+ok($objVi->eq("D\x{335}", "\x{110}"));
+ok($objVi->eq("e\x{302}", pack('U', 0xEA)));
+ok($objVi->eq("E\x{302}", pack('U', 0xCA)));
+ok($objVi->eq("o\x{302}", pack('U', 0xF4)));
+ok($objVi->eq("O\x{302}", pack('U', 0xD4)));
+ok($objVi->eq("o\x{31B}", "\x{1A1}"));
+ok($objVi->eq("O\x{31B}", "\x{1A0}"));
+ok($objVi->eq("u\x{31B}", "\x{1B0}"));
+ok($objVi->eq("U\x{31B}", "\x{1AF}"));
+
+# 66
+
+ok($objVi->eq("a\x{300}", pack('U', 0xE0)));
+ok($objVi->eq("a\x{309}", "\x{1EA3}"));
+ok($objVi->eq("a\x{303}", pack('U', 0xE3)));
+ok($objVi->eq("a\x{301}", pack('U', 0xE1)));
+ok($objVi->eq("a\x{323}", "\x{1EA1}"));
+ok($objVi->eq("A\x{300}", pack('U', 0xC0)));
+ok($objVi->eq("A\x{309}", "\x{1EA2}"));
+ok($objVi->eq("A\x{303}", pack('U', 0xC3)));
+ok($objVi->eq("A\x{301}", pack('U', 0xC1)));
+ok($objVi->eq("A\x{323}", "\x{1EA0}"));
+ok($objVi->eq("a\x{306}\x{300}", "\x{1EB1}"));
+ok($objVi->eq("a\x{306}\x{309}", "\x{1EB3}"));
+ok($objVi->eq("a\x{306}\x{303}", "\x{1EB5}"));
+ok($objVi->eq("a\x{306}\x{301}", "\x{1EAF}"));
+ok($objVi->eq("a\x{306}\x{323}", "\x{1EB7}"));
+ok($objVi->eq("A\x{306}\x{300}", "\x{1EB0}"));
+ok($objVi->eq("A\x{306}\x{309}", "\x{1EB2}"));
+ok($objVi->eq("A\x{306}\x{303}", "\x{1EB4}"));
+ok($objVi->eq("A\x{306}\x{301}", "\x{1EAE}"));
+ok($objVi->eq("A\x{306}\x{323}", "\x{1EB6}"));
+ok($objVi->eq("a\x{302}\x{300}", "\x{1EA7}"));
+ok($objVi->eq("a\x{302}\x{309}", "\x{1EA9}"));
+ok($objVi->eq("a\x{302}\x{303}", "\x{1EAB}"));
+ok($objVi->eq("a\x{302}\x{301}", "\x{1EA5}"));
+ok($objVi->eq("a\x{302}\x{323}", "\x{1EAD}"));
+ok($objVi->eq("A\x{302}\x{300}", "\x{1EA6}"));
+ok($objVi->eq("A\x{302}\x{309}", "\x{1EA8}"));
+ok($objVi->eq("A\x{302}\x{303}", "\x{1EAA}"));
+ok($objVi->eq("A\x{302}\x{301}", "\x{1EA4}"));
+ok($objVi->eq("A\x{302}\x{323}", "\x{1EAC}"));
+ok($objVi->eq("e\x{300}", pack('U', 0xE8)));
+ok($objVi->eq("e\x{309}", "\x{1EBB}"));
+ok($objVi->eq("e\x{303}", "\x{1EBD}"));
+ok($objVi->eq("e\x{301}", pack('U', 0xE9)));
+ok($objVi->eq("e\x{323}", "\x{1EB9}"));
+ok($objVi->eq("E\x{300}", pack('U', 0xC8)));
+ok($objVi->eq("E\x{309}", "\x{1EBA}"));
+ok($objVi->eq("E\x{303}", "\x{1EBC}"));
+ok($objVi->eq("E\x{301}", pack('U', 0xC9)));
+ok($objVi->eq("E\x{323}", "\x{1EB8}"));
+ok($objVi->eq("e\x{302}\x{300}", "\x{1EC1}"));
+ok($objVi->eq("e\x{302}\x{309}", "\x{1EC3}"));
+ok($objVi->eq("e\x{302}\x{303}", "\x{1EC5}"));
+ok($objVi->eq("e\x{302}\x{301}", "\x{1EBF}"));
+ok($objVi->eq("e\x{302}\x{323}", "\x{1EC7}"));
+ok($objVi->eq("E\x{302}\x{300}", "\x{1EC0}"));
+ok($objVi->eq("E\x{302}\x{309}", "\x{1EC2}"));
+ok($objVi->eq("E\x{302}\x{303}", "\x{1EC4}"));
+ok($objVi->eq("E\x{302}\x{301}", "\x{1EBE}"));
+ok($objVi->eq("E\x{302}\x{323}", "\x{1EC6}"));
+ok($objVi->eq("i\x{300}", pack('U', 0xEC)));
+ok($objVi->eq("i\x{309}", "\x{1EC9}"));
+ok($objVi->eq("i\x{303}", "\x{129}"));
+ok($objVi->eq("i\x{301}", pack('U', 0xED)));
+ok($objVi->eq("i\x{323}", "\x{1ECB}"));
+ok($objVi->eq("I\x{300}", pack('U', 0xCC)));
+ok($objVi->eq("I\x{309}", "\x{1EC8}"));
+ok($objVi->eq("I\x{303}", "\x{128}"));
+ok($objVi->eq("I\x{301}", pack('U', 0xCD)));
+ok($objVi->eq("I\x{323}", "\x{1ECA}"));
+ok($objVi->eq("o\x{300}", pack('U', 0xF2)));
+ok($objVi->eq("o\x{309}", "\x{1ECF}"));
+ok($objVi->eq("o\x{303}", pack('U', 0xF5)));
+ok($objVi->eq("o\x{301}", pack('U', 0xF3)));
+ok($objVi->eq("o\x{323}", "\x{1ECD}"));
+ok($objVi->eq("O\x{300}", pack('U', 0xD2)));
+ok($objVi->eq("O\x{309}", "\x{1ECE}"));
+ok($objVi->eq("O\x{303}", pack('U', 0xD5)));
+ok($objVi->eq("O\x{301}", pack('U', 0xD3)));
+ok($objVi->eq("O\x{323}", "\x{1ECC}"));
+ok($objVi->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objVi->eq("o\x{302}\x{309}", "\x{1ED5}"));
+ok($objVi->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objVi->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objVi->eq("o\x{302}\x{323}", "\x{1ED9}"));
+ok($objVi->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objVi->eq("O\x{302}\x{309}", "\x{1ED4}"));
+ok($objVi->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objVi->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objVi->eq("O\x{302}\x{323}", "\x{1ED8}"));
+ok($objVi->eq("o\x{31B}\x{300}", "\x{1EDD}"));
+ok($objVi->eq("o\x{31B}\x{309}", "\x{1EDF}"));
+ok($objVi->eq("o\x{31B}\x{303}", "\x{1EE1}"));
+ok($objVi->eq("o\x{31B}\x{301}", "\x{1EDB}"));
+ok($objVi->eq("o\x{31B}\x{323}", "\x{1EE3}"));
+ok($objVi->eq("O\x{31B}\x{300}", "\x{1EDC}"));
+ok($objVi->eq("O\x{31B}\x{309}", "\x{1EDE}"));
+ok($objVi->eq("O\x{31B}\x{303}", "\x{1EE0}"));
+ok($objVi->eq("O\x{31B}\x{301}", "\x{1EDA}"));
+ok($objVi->eq("O\x{31B}\x{323}", "\x{1EE2}"));
+ok($objVi->eq("u\x{300}", pack('U', 0xF9)));
+ok($objVi->eq("u\x{309}", "\x{1EE7}"));
+ok($objVi->eq("u\x{303}", "\x{169}"));
+ok($objVi->eq("u\x{301}", pack('U', 0xFA)));
+ok($objVi->eq("u\x{323}", "\x{1EE5}"));
+ok($objVi->eq("U\x{300}", pack('U', 0xD9)));
+ok($objVi->eq("U\x{309}", "\x{1EE6}"));
+ok($objVi->eq("U\x{303}", "\x{168}"));
+ok($objVi->eq("U\x{301}", pack('U', 0xDA)));
+ok($objVi->eq("U\x{323}", "\x{1EE4}"));
+ok($objVi->eq("u\x{31B}\x{300}", "\x{1EEB}"));
+ok($objVi->eq("u\x{31B}\x{309}", "\x{1EED}"));
+ok($objVi->eq("u\x{31B}\x{303}", "\x{1EEF}"));
+ok($objVi->eq("u\x{31B}\x{301}", "\x{1EE9}"));
+ok($objVi->eq("u\x{31B}\x{323}", "\x{1EF1}"));
+ok($objVi->eq("U\x{31B}\x{300}", "\x{1EEA}"));
+ok($objVi->eq("U\x{31B}\x{309}", "\x{1EEC}"));
+ok($objVi->eq("U\x{31B}\x{303}", "\x{1EEE}"));
+ok($objVi->eq("U\x{31B}\x{301}", "\x{1EE8}"));
+ok($objVi->eq("U\x{31B}\x{323}", "\x{1EF0}"));
+ok($objVi->eq("y\x{300}", "\x{1EF3}"));
+ok($objVi->eq("y\x{309}", "\x{1EF7}"));
+ok($objVi->eq("y\x{303}", "\x{1EF9}"));
+ok($objVi->eq("y\x{301}", pack('U', 0xFD)));
+ok($objVi->eq("y\x{323}", "\x{1EF5}"));
+ok($objVi->eq("Y\x{300}", "\x{1EF2}"));
+ok($objVi->eq("Y\x{309}", "\x{1EF6}"));
+ok($objVi->eq("Y\x{303}", "\x{1EF8}"));
+ok($objVi->eq("Y\x{301}", pack('U', 0xDD)));
+ok($objVi->eq("Y\x{323}", "\x{1EF4}"));
+
+# 186
+
+ok($objVi->eq("e\x{306}", "\x{115}"));
+ok($objVi->eq("E\x{306}", "\x{114}"));
+ok($objVi->eq("i\x{306}", "\x{12D}"));
+ok($objVi->eq("I\x{306}", "\x{12C}"));
+ok($objVi->eq("o\x{306}", "\x{14F}"));
+ok($objVi->eq("O\x{306}", "\x{14E}"));
+ok($objVi->eq("u\x{306}", "\x{16D}"));
+ok($objVi->eq("U\x{306}", "\x{16C}"));
+
+# 194