cpan/Unicode-Collate/Collate/Locale/gu.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/ha.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/haw.pl Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/hi.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/hr.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/hu.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/hy.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/ja.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/kk.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/kl.pl Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/kn.pl Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/kok.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/ko.pl Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/ln.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/lt.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/lv.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/mt.pl Unicode::Collate
cpan/Unicode-Collate/t/loc_az.t Unicode::Collate
cpan/Unicode-Collate/t/loc_be.t Unicode::Collate
cpan/Unicode-Collate/t/loc_bg.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_bs.t Unicode::Collate
cpan/Unicode-Collate/t/loc_ca.t Unicode::Collate
cpan/Unicode-Collate/t/loc_cs.t Unicode::Collate
cpan/Unicode-Collate/t/loc_cyrl.t Unicode::Collate
cpan/Unicode-Collate/t/loc_gu.t Unicode::Collate
cpan/Unicode-Collate/t/loc_ha.t Unicode::Collate
cpan/Unicode-Collate/t/loc_haw.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_hi.t Unicode::Collate
cpan/Unicode-Collate/t/loc_hr.t Unicode::Collate
cpan/Unicode-Collate/t/loc_hu.t Unicode::Collate
cpan/Unicode-Collate/t/loc_hy.t Unicode::Collate
cpan/Unicode-Collate/t/loc_ja.t Unicode::Collate
cpan/Unicode-Collate/t/loc_kk.t Unicode::Collate
cpan/Unicode-Collate/t/loc_kl.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_kn.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_kok.t Unicode::Collate
cpan/Unicode-Collate/t/loc_ko.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_ln.t Unicode::Collate
cpan/Unicode-Collate/t/loc_lt.t Unicode::Collate
cpan/Unicode-Collate/t/loc_lv.t Unicode::Collate
cpan/Unicode-Collate/t/loc_mk.t Unicode::Collate
'Unicode::Collate' =>
{
'MAINTAINER' => 'sadahiro',
- 'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-0.79.tar.gz',
+ 'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-0.80.tar.gz',
'FILES' => q[cpan/Unicode-Collate],
'EXCLUDED' => [ qr{N$},
qr{^data/},
Revision history for Perl module Unicode::Collate.
+0.80 Sun Oct 9 21:00:21 2011
+ - U::C::Locale newly supports locales: bs, hi, kn, kok, ln.
+ - added loc_bs.t, loc_hi.t, loc_kn.t, loc_kok.t, loc_ln.t in t.
+ - updated some locales to CLDR 2.0 : ha, hr, kk, lt.
+
0.79 Sun Oct 2 20:31:01 2011
- pod: [rt.cpan.org #70241] Fix minor grammar error in manpage
by Harlan Lieberman-Berg.
no warnings 'utf8';
-our $VERSION = '0.79';
+our $VERSION = '0.80';
our $PACKAGE = __PACKAGE__;
### begin XS only ###
use Carp;
use base qw(Unicode::Collate);
-our $VERSION = '0.79';
+our $VERSION = '0.80';
use File::Spec;
my %LocaleFile = map { ($_, $_) } qw(
af ar as az be bg ca cs cy da eo es et fi fil fo fr gu
- ha haw hr hu hy ig is ja kk kl ko lt lv mt nb nn nso om
- pl ro ru se sk sl sq sv tn to tr uk vi wo yo zh
+ ha haw hi hr hu hy ig is ja kk kl kn ko kok ln lt lv
+ mt nb nn nso om pl ro ru se sk sl sq sv tn to tr uk vi wo yo zh
);
- $LocaleFile{'default'} = '';
+ $LocaleFile{'default'} = '';
+# aliases
+ $LocaleFile{'bs'} = 'hr';
+ $LocaleFile{'mk'} = 'ru';
+ $LocaleFile{'sr'} = 'ru';
+# short file names
$LocaleFile{'de__phonebook'} = 'de_phone';
$LocaleFile{'es__traditional'} = 'es_trad';
$LocaleFile{'fi__phonebook'} = 'fi_phone';
- $LocaleFile{'mk'} = 'ru';
- $LocaleFile{'sr'} = 'ru';
- $LocaleFile{'zh__big5han'} = 'zh_big5';
- $LocaleFile{'zh__gb2312han'} = 'zh_gb';
- $LocaleFile{'zh__pinyin'} = 'zh_pin';
- $LocaleFile{'zh__stroke'} = 'zh_strk';
+ $LocaleFile{'zh__big5han'} = 'zh_big5';
+ $LocaleFile{'zh__gb2312han'} = 'zh_gb';
+ $LocaleFile{'zh__pinyin'} = 'zh_pin';
+ $LocaleFile{'zh__stroke'} = 'zh_strk';
sub _locale {
my $locale = shift;
az 2.0 = 1.8.1
be 2.0
bg 2.0
+bs 2.0
ca 2.0 = 1.8.1 (alt="proposed" type="standard")
cs 2.0 = 1.8.1 (type="standard")
cy 2.0 = 1.8.1
-da 2.0 = 1.8.1 (type="standard") [AA's to pass CLDR tests]
+da 2.0 = 1.8.1 (type="standard") [modify aA to pass CLDR tests]
de__phonebook 2.0 (type="phonebook")
eo 2.0 = 1.8.1
es 2.0 (type="standard")
fo 2.0 = 1.8.1 (alt="proposed" type="standard")
fr 2.0 (fr_CA, backwards="on")
gu 2.0 (type="standard")
-ha
-haw
-hr
-hu
-hy
-ig
-is
-ja
-kk
-kl
-ko
-lt
-lv
+ha 2.0
+haw 2.0 = 1.8.1
+hi 2.0
+hr 2.0
+hu 2.0 = 1.8.1 (alt="proposed" type="standard")
+hy 2.0 = 1.8.1
+ig 2.0 = 1.8.1
+is 2.0 = 1.8.1
+ja 2.0 = 1.8.1 (type="standard")
+kk 2.0
+kl 2.0 = 1.8.1
+kn 2.0 (type="standard")
+ko 2.0 = 1.8.1 (type="standard")
+kok 2.0 = 1.8.1
+ln 2.0 (type="standard") = 1.8.1
+lt 2.0
+lv 2.0 (type="standard") = 1.8.1
mk
mt
nb
az Azerbaijani (Azeri)
be Belarusian
bg Bulgarian
+ bs Bosnian
ca Catalan
cs Czech
cy Welsh
gu Gujarati
ha Hausa
haw Hawaiian
+ hi Hindi
hr Croatian
hu Hungarian
hy Armenian
ja Japanese [1]
kk Kazakh
kl Kalaallisut
+ kn Kannada
ko Korean [2]
+ kok Konkani
+ ln Lingala
lt Lithuanian
lv Latvian
mk Macedonian
id (Indonesian),
it (Italian),
ka (Georgian),
-ln (Lingala),
ms (Malay),
nl (Dutch),
pt (Portuguese),
0074 0073 ; [.17CA.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER S>
0054 0073 ; [.17CA.0020.0007.0054] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER S>
0054 0053 ; [.17CA.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER S>
-0027 0079 ; [.183F.0020.0002.01B4] # <APOSTROPHE, LATIN SMALL LETTER Y>
-0027 0059 ; [.183F.0020.0008.01B3] # <APOSTROPHE, LATIN CAPITAL LETTER Y>
+02BC 0079 ; [.183F.0020.0003.02BC] # <MODIFIER LETTER APOSTROPHE, LATIN SMALL LETTER Y>
+02BC 0059 ; [.183F.0020.0009.02BC] # <MODIFIER LETTER APOSTROPHE, LATIN CAPITAL LETTER Y>
+0027 0079 ; [.183F.0020.0004.0027] # <APOSTROPHE, LATIN SMALL LETTER Y>
+0027 0059 ; [.183F.0020.000A.0027] # <APOSTROPHE, LATIN CAPITAL LETTER Y>
ENTRY
};
--- /dev/null
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0902 ; [.1F7B.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
+0901 ; [.1F7B.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
+0903 ; [.1F7B.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
+ENTRY
+};
0106 ; [.15D3.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
0043 0301 ; [.15D3.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
0043 0341 ; [.15D3.0020.0008.0106] # LATIN CAPITAL LETTER C WITH ACUTE
-01C6 ; [.15E5.0020.0002.01C6] # LATIN SMALL LETTER DZ WITH CARON
-0064 017D ; [.15E5.0020.0007.0064][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z WITH CARON>
-01C5 ; [.15E5.0020.0007.01C5][.0000.0000.0008.0000] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
-01C4 ; [.15E5.0020.0008.01C4] # LATIN CAPITAL LETTER DZ WITH CARON
-0064 017E ; [.15E5.0020.0002.01C6] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CARON>
-0044 017E ; [.15E5.0020.0007.01C5][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z WITH CARON>
-0044 017D ; [.15E5.0020.0008.01C4] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z WITH CARON>
-0064 007A 030C ; [.15E5.0020.0002.01C6] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z, COMBINING CARON>
-0064 005A 030C ; [.15E5.0020.0007.0064][.0000.0000.0002.0000] # <LATIN SMALL LETTER D, LATIN CAPITAL LETTER Z, COMBINING CARON>
-0044 007A 030C ; [.15E5.0020.0007.01C5][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, COMBINING CARON>
-0044 005A 030C ; [.15E5.0020.0008.01C4] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, COMBINING CARON>
+0064 017E ; [.15E5.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z WITH CARON>
+01C6 ; [.15E5.0020.0003.01C6] # LATIN SMALL LETTER DZ WITH CARON
+0044 017E ; [.15E5.0020.0007.0044][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z WITH CARON>
+01C5 ; [.15E5.0020.0007.01C5][.0000.0000.0007.0000] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+0044 017D ; [.15E5.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z WITH CARON>
+01C4 ; [.15E5.0020.0009.01C4] # LATIN CAPITAL LETTER DZ WITH CARON
+0064 007A 030C ; [.15E5.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z, COMBINING CARON>
+0044 007A 030C ; [.15E5.0020.0007.0044][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z, COMBINING CARON>
+0044 005A 030C ; [.15E5.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z, COMBINING CARON>
0111 ; [.15E6.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
0064 0335 ; [.15E6.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
0110 ; [.15E6.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
0044 0335 ; [.15E6.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
-01C9 ; [.16C5.0020.0002.01C9] # LATIN SMALL LETTER LJ
-006C 006A ; [.16C5.0020.0002.01C9] # <LATIN SMALL LETTER L, LATIN SMALL LETTER J>
-006C 004A ; [.16C5.0020.0007.006C][.0000.0000.0002.0000] # <LATIN SMALL LETTER L, LATIN CAPITAL LETTER J>
-01C8 ; [.16C5.0020.0007.01C8][.0000.0000.0008.0000] # LATIN CAPITAL LETTER L WITH SMALL LETTER J
-004C 006A ; [.16C5.0020.0007.01C8][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER J>
-01C7 ; [.16C5.0020.0008.01C7] # LATIN CAPITAL LETTER LJ
-004C 004A ; [.16C5.0020.0008.01C7] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER J>
-01CC ; [.1703.0020.0002.01CC] # LATIN SMALL LETTER NJ
-006E 006A ; [.1703.0020.0002.01CC] # <LATIN SMALL LETTER N, LATIN SMALL LETTER J>
-006E 004A ; [.1703.0020.0007.006E][.0000.0000.0002.0000] # <LATIN SMALL LETTER N, LATIN CAPITAL LETTER J>
-01CB ; [.1703.0020.0007.01CB][.0000.0000.0008.0000] # LATIN CAPITAL LETTER N WITH SMALL LETTER J
-004E 006A ; [.1703.0020.0007.01CB][.0000.0000.0008.0000] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER J>
-01CA ; [.1703.0020.0008.01CA] # LATIN CAPITAL LETTER NJ
-004E 004A ; [.1703.0020.0008.01CA] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER J>
+006C 006A ; [.16C5.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER J>
+01C9 ; [.16C5.0020.0003.01C9] # LATIN SMALL LETTER LJ
+004C 006A ; [.16C5.0020.0007.004C][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER J>
+01C8 ; [.16C5.0020.0007.01C8][.0000.0000.0007.0000] # LATIN CAPITAL LETTER L WITH SMALL LETTER J
+004C 004A ; [.16C5.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER J>
+01C7 ; [.16C5.0020.0009.01C7] # LATIN CAPITAL LETTER LJ
+006E 006A ; [.1703.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER J>
+01CC ; [.1703.0020.0003.01CC] # LATIN SMALL LETTER NJ
+004E 006A ; [.1703.0020.0007.004E][.0000.0000.0001.0000] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER J>
+01CB ; [.1703.0020.0007.01CB][.0000.0000.0007.0000] # LATIN CAPITAL LETTER N WITH SMALL LETTER J
+004E 004A ; [.1703.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER J>
+01CA ; [.1703.0020.0009.01CA] # LATIN CAPITAL LETTER NJ
0161 ; [.17A7.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
0073 030C ; [.17A7.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
0160 ; [.17A7.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+{
entry => <<'ENTRY', # for DUCET v6.0.0
-0587 ; [.1BF1.0020.0002.0584][.FFF1.0000.0000.0000] # ARMENIAN SMALL LIGATURE ECH YIWN
-0535 0582 ; [.1BF1.0020.0008.0554][.FFF1.0000.0000.0000] # <ARMENIAN CAPITAL LETTER ECH, ARMENIAN SMALL LETTER YIWN>
+0587 ; [.1BF1.0020.0002.0587][.FFF1.0000.0000.0000] # ARMENIAN SMALL LIGATURE ECH YIWN
+0535 0582 ; [.1BF1.0020.0008.0535][.FFF1.0000.0000.0000] # <ARMENIAN CAPITAL LETTER ECH, ARMENIAN SMALL LETTER YIWN>
ENTRY
};
3094 ; [.3198.0020.0011.3046][.0000.014E.0002.3099] # HIRAGANA LETTER VU
3095 ; [.319C.0020.000F.3095] # HIRAGANA LETTER SMALL KA
3096 ; [.319F.0020.000F.3096] # HIRAGANA LETTER SMALL KE
+309D ; [.1571.0020.0002.309D] # HIRAGANA ITERATION MARK
+309E ; [.1571.0020.0002.309D][.0000.014E.0002.3099] # HIRAGANA VOICED ITERATION MARK
3000 ; [*020A.0020.0002.0020] # IDEOGRAPHIC SPACE
FF01 ; [*027B.0020.0002.0021] # FULLWIDTH EXCLAMATION MARK
FF02 ; [*0304.0020.0002.0022] # FULLWIDTH QUOTATION MARK
+{
-# barred-o doesn't require tailoring
- suppress => [0x0400..0x045F],
+ suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
+ 0x0416, 0x0436, 0x0417, 0x0437, 0x0406, 0x0456, 0x041E, 0x043E,
+ 0x04E8, 0x04E9, 0x041A, 0x043A, 0x0423, 0x0443, 0x0427, 0x0447,
+ 0x042B, 0x044B, 0x042D, 0x044D, 0x0474, 0x0475],
entry => <<'ENTRY', # for DUCET v6.0.0
-04B1 ; [.1A7A.0020.0002.04B1] # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
-04B0 ; [.1A7A.0020.0008.04B0] # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+0451 ; [.198C.0020.0002.0451] # CYRILLIC SMALL LETTER IO
+0435 0308 ; [.198C.0020.0002.0451] # CYRILLIC SMALL LETTER IO
+0401 ; [.198C.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
+0415 0308 ; [.198C.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
+04AF ; [.1A80.0020.0002.04AF] # CYRILLIC SMALL LETTER STRAIGHT U
+04AE ; [.1A80.0020.0008.04AE] # CYRILLIC CAPITAL LETTER STRAIGHT U
0456 ; [.1AF8.0020.0002.0456] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
0406 ; [.1AF8.0020.0008.0406] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
04D1 ; [.1943.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
04D0 ; [.1943.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
04D3 ; [.1943.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
04D2 ; [.1943.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.194F.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.194F.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
0453 ; [.1963.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
0403 ; [.1963.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
04D7 ; [.198B.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
04DC ; [.1997.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
04DF ; [.19A4.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
04DE ; [.19A4.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04E5 ; [.19BC.0020.0002.0438][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER I WITH DIAERESIS
-04E4 ; [.19BC.0020.0008.0418][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
0457 ; [.1AF8.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
0407 ; [.1AF8.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
-0439 ; [.19BC.0020.0002.0438][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT I
-0419 ; [.19BC.0020.0008.0418][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT I
04E7 ; [.1A29.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
04E6 ; [.1A29.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A31.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A31.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
045C ; [.19DA.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
040C ; [.19DA.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
045E ; [.1A6B.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
04F8 ; [.1AF1.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
04ED ; [.1B06.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
04EC ; [.1B06.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B3C.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B3C.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
ENTRY
};
--- /dev/null
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0C82 ; [.2164.0020.0002.0C82][.FFF1.0000.0000.0000] # KANNADA SIGN ANUSVARA
+0C83 ; [.2164.0020.0002.0C83][.FFF2.0000.0000.0000] # KANNADA SIGN VISARGA
+0CF1 ; [.2164.0020.0002.0CF1][.FFF3.0000.0000.0000] # KANNADA SIGN JIHVAMULIYA
+0CF2 ; [.2164.0020.0002.0CF2][.FFF4.0000.0000.0000] # KANNADA SIGN UPADHMANIYA
+ENTRY
+};
--- /dev/null
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0902 ; [.1F7B.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
+0901 ; [.1F7B.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
+0903 ; [.1F7B.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
+0933 ; [.1FBC.0020.0002.0933][.FFF1.0000.0000.0000] # DEVANAGARI LETTER LLA
+0915 094D 0937 ; [.1FBC.0020.0002.0915][.FFF2.0000.0000.0000] # <DEVANAGARI LETTER KA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER SSA>
+0934 ; [.1FBC.0020.0002.0933][.FFF1.0000.0000.0000][.0000.00DD.0002.093C] # DEVANAGARI LETTER LLLA
+ENTRY
+};
--- /dev/null
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+025B ; [.1600.0020.0002.025B] # LATIN SMALL LETTER OPEN E
+0190 ; [.1600.0020.0008.0190] # LATIN CAPITAL LETTER OPEN E
+2107 ; [.1600.0020.000A.2107] # EULER CONSTANT
+1D4B ; [.1600.0020.0014.1D4B] # MODIFIER LETTER SMALL OPEN E
+0254 ; [.1724.0021.0002.0254] # LATIN SMALL LETTER OPEN O
+0186 ; [.1724.0021.0008.0186] # LATIN CAPITAL LETTER OPEN O
+1D53 ; [.1724.0021.0014.1D53] # MODIFIER LETTER SMALL OPEN O
+ENTRY
+};
+{
+# in cldr test/lt.xml why I-dot-acute > I-dot though i-dot-acute < i-dot ?
entry => <<'ENTRY', # for DUCET v6.0.0
-0307 ; [.0000.005A.0002.0307] # COMBINING DOT ABOVE
-010D ; [.15E3.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-0063 030C ; [.15E3.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-010C ; [.15E3.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0043 030C ; [.15E3.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
-0079 ; [.1680.0021.0002.0079] # LATIN SMALL LETTER Y
-0059 ; [.1680.0021.0008.0059] # LATIN CAPITAL LETTER Y
-0161 ; [.17C8.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0073 030C ; [.17C8.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
-0160 ; [.17C8.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-0053 030C ; [.17C8.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
-017E ; [.1860.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-007A 030C ; [.1860.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
-017D ; [.1860.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-005A 030C ; [.1860.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
-0117 ; [.15FF.0020.0002.0065][.0000.005A.0002.0307] # LATIN SMALL LETTER E WITH DOT ABOVE
-0116 ; [.15FF.0020.0008.0045][.0000.005A.0002.0307] # LATIN CAPITAL LETTER E WITH DOT ABOVE
-0130 ; [.1680.0020.0008.0049][.0000.005A.0002.0307] # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0049 0307 ; [.1680.0020.0008.0049][.0000.0052.0002.0307] # <LATIN CAPITAL LETTER I, COMBINING DOT ABOVE>
+0307 0300 ; [.0000.0035.0002.0300] # <COMBINING DOT ABOVE, COMBINING GRAVE ACCENT>
+0307 0301 ; [.0000.0032.0002.0301] # <COMBINING DOT ABOVE, COMBINING ACUTE ACCENT>
+0307 0303 ; [.0000.004E.0002.0303] # <COMBINING DOT ABOVE, COMBINING TILDE>
+0105 ; [.15A3.0021.0002.0105] # LATIN SMALL LETTER A WITH OGONEK
+0061 0328 ; [.15A3.0021.0002.0105] # LATIN SMALL LETTER A WITH OGONEK
+0104 ; [.15A3.0021.0008.0104] # LATIN CAPITAL LETTER A WITH OGONEK
+0041 0328 ; [.15A3.0021.0008.0104] # LATIN CAPITAL LETTER A WITH OGONEK
+010D ; [.15D2.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+0063 030C ; [.15D2.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
+010C ; [.15D2.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0043 030C ; [.15D2.0020.0008.010C] # LATIN CAPITAL LETTER C WITH CARON
+0119 ; [.15FF.0021.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.15FF.0021.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.15FF.0021.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.15FF.0021.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0117 ; [.15FF.0022.0002.0117] # LATIN SMALL LETTER E WITH DOT ABOVE
+0065 0307 ; [.15FF.0022.0002.0117] # LATIN SMALL LETTER E WITH DOT ABOVE
+0116 ; [.15FF.0022.0008.0116] # LATIN CAPITAL LETTER E WITH DOT ABOVE
+0045 0307 ; [.15FF.0022.0008.0116] # LATIN CAPITAL LETTER E WITH DOT ABOVE
+012F ; [.1680.0021.0002.012F] # LATIN SMALL LETTER I WITH OGONEK
+0069 0328 ; [.1680.0021.0002.012F] # LATIN SMALL LETTER I WITH OGONEK
+012E ; [.1680.0021.0008.012E] # LATIN CAPITAL LETTER I WITH OGONEK
+0049 0328 ; [.1680.0021.0008.012E] # LATIN CAPITAL LETTER I WITH OGONEK
+0079 ; [.1680.0022.0002.0079] # LATIN SMALL LETTER Y
+0059 ; [.1680.0022.0008.0059] # LATIN CAPITAL LETTER Y
+0161 ; [.17A7.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.17A7.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.17A7.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.17A7.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0173 ; [.17E9.0021.0002.0173] # LATIN SMALL LETTER U WITH OGONEK
+0075 0328 ; [.17E9.0021.0002.0173] # LATIN SMALL LETTER U WITH OGONEK
+0172 ; [.17E9.0021.0008.0172] # LATIN CAPITAL LETTER U WITH OGONEK
+0055 0328 ; [.17E9.0021.0008.0172] # LATIN CAPITAL LETTER U WITH OGONEK
+016B ; [.17E9.0022.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+0075 0304 ; [.17E9.0022.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.17E9.0022.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+0055 0304 ; [.17E9.0022.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+017E ; [.1845.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+007A 030C ; [.1845.0020.0002.017E] # LATIN SMALL LETTER Z WITH CARON
+017D ; [.1845.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
+005A 030C ; [.1845.0020.0008.017D] # LATIN CAPITAL LETTER Z WITH CARON
ENTRY
};
+{
-# ignored: Y < J
entry => <<'ENTRY', # for DUCET v6.0.0
010D ; [.15E3.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
0063 030C ; [.15E3.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
-Unicode/Collate version 0.79
+Unicode/Collate version 0.80
===============================
NAME
}
use Test;
-BEGIN { plan tests => 190 };
+BEGIN { plan tests => 191 };
use strict;
use warnings;
}
# 190
+
+$objBe->change(upper_before_lower => 1);
+
+ok($objBe->gt("\x{451}", "\x{401}"));
+
+# 191
--- /dev/null
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 118 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objBs = Unicode::Collate::Locale->
+ new(locale => 'BS', normalization => undef);
+
+ok($objBs->getlocale, 'bs');
+
+$objBs->change(level => 1);
+
+ok($objBs->lt("c", "c\x{30C}"));
+ok($objBs->lt("c\x{30C}", "c\x{301}"));
+ok($objBs->gt("d", "c\x{301}"));
+ok($objBs->lt("d", "dz\x{30C}"));
+ok($objBs->lt("dzz", "dz\x{30C}"));
+ok($objBs->lt("dz\x{30C}", "d\x{335}"));
+ok($objBs->gt("e", "d\x{335}"));
+ok($objBs->lt("l", "lj"));
+ok($objBs->lt("lz","lj"));
+ok($objBs->gt("m", "lj"));
+ok($objBs->lt("n", "nj"));
+ok($objBs->lt("nz","nj"));
+ok($objBs->gt("o", "nj"));
+ok($objBs->lt("s", "s\x{30C}"));
+ok($objBs->lt("sz","s\x{30C}"));
+ok($objBs->gt("t", "s\x{30C}"));
+ok($objBs->lt("z", "z\x{30C}"));
+ok($objBs->lt("zz","z\x{30C}"));
+ok($objBs->lt("z\x{30C}", "\x{292}")); # U+0292 EZH
+
+# 21
+
+# not tailored
+ok($objBs->lt("dZ\x{30C}","dz\x{30C}"));
+ok($objBs->lt("lJ", "lj"));
+ok($objBs->lt("nJ", "nj"));
+
+# 24
+
+$objBs->change(level => 2);
+
+ok($objBs->eq("c\x{30C}", "C\x{30C}"));
+ok($objBs->eq("c\x{301}", "C\x{301}"));
+ok($objBs->eq("dz\x{30C}","Dz\x{30C}"));
+ok($objBs->eq("Dz\x{30C}","DZ\x{30C}"));
+ok($objBs->eq("d\x{335}", "D\x{335}"));
+ok($objBs->eq("lj", "Lj"));
+ok($objBs->eq("Lj", "LJ"));
+ok($objBs->eq("nj", "Nj"));
+ok($objBs->eq("Nj", "NJ"));
+ok($objBs->eq("s\x{30C}", "S\x{30C}"));
+ok($objBs->eq("z\x{30C}", "Z\x{30C}"));
+
+# 35
+
+ok($objBs->eq("dz\x{30C}", "\x{1C6}"));
+ok($objBs->eq("Dz\x{30C}", "\x{1C6}"));
+ok($objBs->eq("Dz\x{30C}", "\x{1C5}"));
+ok($objBs->eq("DZ\x{30C}", "\x{1C5}"));
+ok($objBs->eq("DZ\x{30C}", "\x{1C4}"));
+
+ok($objBs->eq("lj", "\x{1C9}"));
+ok($objBs->eq("Lj", "\x{1C9}"));
+ok($objBs->eq("Lj", "\x{1C8}"));
+ok($objBs->eq("LJ", "\x{1C8}"));
+ok($objBs->eq("LJ", "\x{1C7}"));
+
+ok($objBs->eq("nj", "\x{1CC}"));
+ok($objBs->eq("Nj", "\x{1CC}"));
+ok($objBs->eq("Nj", "\x{1CB}"));
+ok($objBs->eq("NJ", "\x{1CB}"));
+ok($objBs->eq("NJ", "\x{1CA}"));
+
+# 50
+
+$objBs->change(level => 3);
+
+ok($objBs->lt("c\x{30C}", "C\x{30C}"));
+ok($objBs->lt("c\x{301}", "C\x{301}"));
+ok($objBs->lt("dz\x{30C}","Dz\x{30C}"));
+ok($objBs->lt("Dz\x{30C}","DZ\x{30C}"));
+ok($objBs->lt("d\x{335}", "D\x{335}"));
+ok($objBs->lt("lj", "Lj"));
+ok($objBs->lt("Lj", "LJ"));
+ok($objBs->lt("nj", "Nj"));
+ok($objBs->lt("Nj", "NJ"));
+ok($objBs->lt("s\x{30C}", "S\x{30C}"));
+ok($objBs->lt("z\x{30C}", "Z\x{30C}"));
+
+# 61
+
+ok($objBs->lt("dz\x{30C}", "\x{1C6}"));
+ok($objBs->gt("Dz\x{30C}", "\x{1C6}"));
+ok($objBs->lt("Dz\x{30C}", "\x{1C5}"));
+ok($objBs->gt("DZ\x{30C}", "\x{1C5}"));
+ok($objBs->lt("DZ\x{30C}", "\x{1C4}"));
+
+ok($objBs->lt("lj", "\x{1C9}"));
+ok($objBs->gt("Lj", "\x{1C9}"));
+ok($objBs->lt("Lj", "\x{1C8}"));
+ok($objBs->gt("LJ", "\x{1C8}"));
+ok($objBs->lt("LJ", "\x{1C7}"));
+
+ok($objBs->lt("nj", "\x{1CC}"));
+ok($objBs->gt("Nj", "\x{1CC}"));
+ok($objBs->lt("Nj", "\x{1CB}"));
+ok($objBs->gt("NJ", "\x{1CB}"));
+ok($objBs->lt("NJ", "\x{1CA}"));
+
+# 76
+
+ok($objBs->eq("c\x{30C}", "\x{10D}"));
+ok($objBs->eq("C\x{30C}", "\x{10C}"));
+ok($objBs->eq("c\x{301}", "\x{107}"));
+ok($objBs->eq("c\x{341}", "\x{107}"));
+ok($objBs->eq("C\x{301}", "\x{106}"));
+ok($objBs->eq("C\x{341}", "\x{106}"));
+ok($objBs->eq("dz\x{30C}", "d\x{17E}"));
+ok($objBs->eq("dZ\x{30C}", "d\x{17D}"));
+ok($objBs->eq("Dz\x{30C}", "D\x{17E}"));
+ok($objBs->eq("DZ\x{30C}", "D\x{17D}"));
+ok($objBs->eq("d\x{335}", "\x{111}"));
+ok($objBs->eq("D\x{335}", "\x{110}"));
+ok($objBs->eq("s\x{30C}", "\x{161}"));
+ok($objBs->eq("S\x{30C}", "\x{160}"));
+ok($objBs->eq("z\x{30C}", "\x{17E}"));
+ok($objBs->eq("Z\x{30C}", "\x{17D}"));
+
+# 92
+
+$objBs->change(upper_before_lower => 1);
+
+ok($objBs->gt("c\x{30C}", "C\x{30C}"));
+ok($objBs->gt("c\x{301}", "C\x{301}"));
+ok($objBs->gt("dz\x{30C}","Dz\x{30C}"));
+ok($objBs->gt("Dz\x{30C}","DZ\x{30C}"));
+ok($objBs->gt("d\x{335}", "D\x{335}"));
+ok($objBs->gt("lj", "Lj"));
+ok($objBs->gt("Lj", "LJ"));
+ok($objBs->gt("nj", "Nj"));
+ok($objBs->gt("Nj", "NJ"));
+ok($objBs->gt("s\x{30C}", "S\x{30C}"));
+ok($objBs->gt("z\x{30C}", "Z\x{30C}"));
+
+# 103
+
+ok($objBs->lt("DZ\x{30C}", "\x{1C4}"));
+ok($objBs->gt("Dz\x{30C}", "\x{1C4}"));
+ok($objBs->lt("Dz\x{30C}", "\x{1C5}"));
+ok($objBs->gt("dz\x{30C}", "\x{1C5}"));
+ok($objBs->lt("dz\x{30C}", "\x{1C6}"));
+
+ok($objBs->lt("LJ", "\x{1C7}"));
+ok($objBs->gt("Lj", "\x{1C7}"));
+ok($objBs->lt("Lj", "\x{1C8}"));
+ok($objBs->gt("lj", "\x{1C8}"));
+ok($objBs->lt("lj", "\x{1C9}"));
+
+ok($objBs->lt("NJ", "\x{1CA}"));
+ok($objBs->gt("Nj", "\x{1CA}"));
+ok($objBs->lt("Nj", "\x{1CB}"));
+ok($objBs->gt("nj", "\x{1CB}"));
+ok($objBs->lt("nj", "\x{1CC}"));
+
+# 118
}
use Test;
-BEGIN { plan tests => 34 };
+BEGIN { plan tests => 51 };
use strict;
use warnings;
ok($objHa->eq("'y", "'Y"));
ok($objHa->eq("\x{1B4}", "\x{1B3}"));
-# 23
+ok($objHa->eq("\x{1B4}", "\x{2BC}y"));
+ok($objHa->eq("\x{2BC}y","'y"));
+ok($objHa->eq("'y", "\x{1B3}"));
+ok($objHa->eq("\x{1B3}", "\x{2BC}Y"));
+ok($objHa->eq("\x{2BC}Y","'Y"));
+ok($objHa->eq("'Y", "\x{1B4}"));
+
+# 29
$objHa->change(level => 3);
ok($objHa->lt("Ts", "TS"));
ok($objHa->lt("'y", "'Y"));
ok($objHa->lt("\x{1B4}", "\x{1B3}"));
-ok($objHa->eq("'y", "\x{1B4}"));
-ok($objHa->eq("'Y", "\x{1B3}"));
-# 34
+ok($objHa->lt("\x{1B4}", "\x{2BC}y"));
+ok($objHa->lt("\x{2BC}y","'y"));
+ok($objHa->lt("'y", "\x{1B3}"));
+ok($objHa->lt("\x{1B3}", "\x{2BC}Y"));
+ok($objHa->lt("\x{2BC}Y","'Y"));
+ok($objHa->gt("'Y", "\x{1B4}"));
+
+# 44
+
+$objHa->change(upper_before_lower => 1);
+
+ok($objHa->gt("\x{1B4}", "\x{1B3}"));
+ok($objHa->lt("\x{1B4}", "\x{2BC}y"));
+ok($objHa->lt("\x{2BC}y","'y"));
+ok($objHa->gt("'y", "\x{1B3}"));
+ok($objHa->lt("\x{1B3}", "\x{2BC}Y"));
+ok($objHa->lt("\x{2BC}Y","'Y"));
+ok($objHa->lt("'Y", "\x{1B4}"));
+
+# 51
--- /dev/null
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 7 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objHi = Unicode::Collate::Locale->
+ new(locale => 'HI', normalization => undef);
+
+ok($objHi->getlocale, 'hi');
+
+$objHi->change(level => 1);
+
+ok($objHi->lt("\x{950}", "\x{902}"));
+ok($objHi->lt("\x{902}", "\x{903}"));
+ok($objHi->lt("\x{903}", "\x{972}"));
+
+ok($objHi->eq("\x{902}", "\x{901}"));
+
+$objHi->change(level => 2);
+
+ok($objHi->lt("\x{902}", "\x{901}"));
+
}
use Test;
-BEGIN { plan tests => 88 };
+BEGIN { plan tests => 118 };
use strict;
use warnings;
# 21
+# not tailored
+ok($objHr->lt("dZ\x{30C}","dz\x{30C}"));
+ok($objHr->lt("lJ", "lj"));
+ok($objHr->lt("nJ", "nj"));
+
+# 24
+
$objHr->change(level => 2);
ok($objHr->eq("c\x{30C}", "C\x{30C}"));
ok($objHr->eq("c\x{301}", "C\x{301}"));
-ok($objHr->eq("dz\x{30C}","dZ\x{30C}"));
-ok($objHr->eq("dZ\x{30C}","Dz\x{30C}"));
+ok($objHr->eq("dz\x{30C}","Dz\x{30C}"));
ok($objHr->eq("Dz\x{30C}","DZ\x{30C}"));
ok($objHr->eq("d\x{335}", "D\x{335}"));
-ok($objHr->eq("lj", "lJ"));
-ok($objHr->eq("lJ", "Lj"));
+ok($objHr->eq("lj", "Lj"));
ok($objHr->eq("Lj", "LJ"));
-ok($objHr->eq("nj", "nJ"));
-ok($objHr->eq("nJ", "Nj"));
+ok($objHr->eq("nj", "Nj"));
ok($objHr->eq("Nj", "NJ"));
ok($objHr->eq("s\x{30C}", "S\x{30C}"));
ok($objHr->eq("z\x{30C}", "Z\x{30C}"));
# 35
+ok($objHr->eq("dz\x{30C}", "\x{1C6}"));
+ok($objHr->eq("Dz\x{30C}", "\x{1C6}"));
+ok($objHr->eq("Dz\x{30C}", "\x{1C5}"));
+ok($objHr->eq("DZ\x{30C}", "\x{1C5}"));
+ok($objHr->eq("DZ\x{30C}", "\x{1C4}"));
+
+ok($objHr->eq("lj", "\x{1C9}"));
+ok($objHr->eq("Lj", "\x{1C9}"));
+ok($objHr->eq("Lj", "\x{1C8}"));
+ok($objHr->eq("LJ", "\x{1C8}"));
+ok($objHr->eq("LJ", "\x{1C7}"));
+
+ok($objHr->eq("nj", "\x{1CC}"));
+ok($objHr->eq("Nj", "\x{1CC}"));
+ok($objHr->eq("Nj", "\x{1CB}"));
+ok($objHr->eq("NJ", "\x{1CB}"));
+ok($objHr->eq("NJ", "\x{1CA}"));
+
+# 50
+
$objHr->change(level => 3);
ok($objHr->lt("c\x{30C}", "C\x{30C}"));
ok($objHr->lt("c\x{301}", "C\x{301}"));
-ok($objHr->lt("dz\x{30C}","dZ\x{30C}"));
-ok($objHr->lt("dZ\x{30C}","Dz\x{30C}"));
+ok($objHr->lt("dz\x{30C}","Dz\x{30C}"));
ok($objHr->lt("Dz\x{30C}","DZ\x{30C}"));
ok($objHr->lt("d\x{335}", "D\x{335}"));
-ok($objHr->lt("lj", "lJ"));
-ok($objHr->lt("lJ", "Lj"));
+ok($objHr->lt("lj", "Lj"));
ok($objHr->lt("Lj", "LJ"));
-ok($objHr->lt("nj", "nJ"));
-ok($objHr->lt("nJ", "Nj"));
+ok($objHr->lt("nj", "Nj"));
ok($objHr->lt("Nj", "NJ"));
ok($objHr->lt("s\x{30C}", "S\x{30C}"));
ok($objHr->lt("z\x{30C}", "Z\x{30C}"));
-# 49
+# 61
+
+ok($objHr->lt("dz\x{30C}", "\x{1C6}"));
+ok($objHr->gt("Dz\x{30C}", "\x{1C6}"));
+ok($objHr->lt("Dz\x{30C}", "\x{1C5}"));
+ok($objHr->gt("DZ\x{30C}", "\x{1C5}"));
+ok($objHr->lt("DZ\x{30C}", "\x{1C4}"));
+
+ok($objHr->lt("lj", "\x{1C9}"));
+ok($objHr->gt("Lj", "\x{1C9}"));
+ok($objHr->lt("Lj", "\x{1C8}"));
+ok($objHr->gt("LJ", "\x{1C8}"));
+ok($objHr->lt("LJ", "\x{1C7}"));
+
+ok($objHr->lt("nj", "\x{1CC}"));
+ok($objHr->gt("Nj", "\x{1CC}"));
+ok($objHr->lt("Nj", "\x{1CB}"));
+ok($objHr->gt("NJ", "\x{1CB}"));
+ok($objHr->lt("NJ", "\x{1CA}"));
+
+# 76
ok($objHr->eq("c\x{30C}", "\x{10D}"));
ok($objHr->eq("C\x{30C}", "\x{10C}"));
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}"));
ok($objHr->eq("dz\x{30C}", "d\x{17E}"));
ok($objHr->eq("dZ\x{30C}", "d\x{17D}"));
ok($objHr->eq("Dz\x{30C}", "D\x{17E}"));
ok($objHr->eq("DZ\x{30C}", "D\x{17D}"));
ok($objHr->eq("d\x{335}", "\x{111}"));
ok($objHr->eq("D\x{335}", "\x{110}"));
-ok($objHr->eq("lj", "\x{1C9}"));
-ok($objHr->eq("Lj", "\x{1C8}"));
-ok($objHr->eq("LJ", "\x{1C7}"));
-ok($objHr->eq("nj", "\x{1CC}"));
-ok($objHr->eq("Nj", "\x{1CB}"));
-ok($objHr->eq("NJ", "\x{1CA}"));
ok($objHr->eq("s\x{30C}", "\x{161}"));
ok($objHr->eq("S\x{30C}", "\x{160}"));
ok($objHr->eq("z\x{30C}", "\x{17E}"));
ok($objHr->eq("Z\x{30C}", "\x{17D}"));
-# 74
+# 92
$objHr->change(upper_before_lower => 1);
ok($objHr->gt("c\x{30C}", "C\x{30C}"));
ok($objHr->gt("c\x{301}", "C\x{301}"));
-ok($objHr->gt("dz\x{30C}","dZ\x{30C}"));
-ok($objHr->gt("dZ\x{30C}","Dz\x{30C}"));
+ok($objHr->gt("dz\x{30C}","Dz\x{30C}"));
ok($objHr->gt("Dz\x{30C}","DZ\x{30C}"));
ok($objHr->gt("d\x{335}", "D\x{335}"));
-ok($objHr->gt("lj", "lJ"));
-ok($objHr->gt("lJ", "Lj"));
+ok($objHr->gt("lj", "Lj"));
ok($objHr->gt("Lj", "LJ"));
-ok($objHr->gt("nj", "nJ"));
-ok($objHr->gt("nJ", "Nj"));
+ok($objHr->gt("nj", "Nj"));
ok($objHr->gt("Nj", "NJ"));
ok($objHr->gt("s\x{30C}", "S\x{30C}"));
ok($objHr->gt("z\x{30C}", "Z\x{30C}"));
-# 88
+# 103
+
+ok($objHr->lt("DZ\x{30C}", "\x{1C4}"));
+ok($objHr->gt("Dz\x{30C}", "\x{1C4}"));
+ok($objHr->lt("Dz\x{30C}", "\x{1C5}"));
+ok($objHr->gt("dz\x{30C}", "\x{1C5}"));
+ok($objHr->lt("dz\x{30C}", "\x{1C6}"));
+
+ok($objHr->lt("LJ", "\x{1C7}"));
+ok($objHr->gt("Lj", "\x{1C7}"));
+ok($objHr->lt("Lj", "\x{1C8}"));
+ok($objHr->gt("lj", "\x{1C8}"));
+ok($objHr->lt("lj", "\x{1C9}"));
+
+ok($objHr->lt("NJ", "\x{1CA}"));
+ok($objHr->gt("Nj", "\x{1CA}"));
+ok($objHr->lt("Nj", "\x{1CB}"));
+ok($objHr->gt("nj", "\x{1CB}"));
+ok($objHr->lt("nj", "\x{1CC}"));
+
+# 118
}
use Test;
-BEGIN { plan tests => 490 };
+BEGIN { plan tests => 497 };
use strict;
use warnings;
ok($objJa->eq("\x{3094}", "\x{30F4}"));
ok($objJa->eq("\x{3095}", "\x{30F5}"));
ok($objJa->eq("\x{3096}", "\x{30F6}"));
+ok($objJa->eq("\x{309D}", "\x{30FD}"));
+ok($objJa->eq("\x{309E}", "\x{30FE}"));
-# 118
+# 120
$objJa->change(variable => 'Non-ignorable');
ok($objJa->eq("\x{FFED}", "\x{25A0}"));
ok($objJa->eq("\x{FFEE}", "\x{25CB}"));
-# 292
+# 294
$objJa->change(level => 4);
ok($objJa->lt("\x{3094}", "\x{30F4}"));
ok($objJa->lt("\x{3095}", "\x{30F5}"));
ok($objJa->lt("\x{3096}", "\x{30F6}"));
+ok($objJa->lt("\x{309D}", "\x{30FD}"));
+ok($objJa->lt("\x{309E}", "\x{30FE}"));
-# 378
+# 382
ok($objJa->eq("\x{304C}", "\x{304B}\x{3099}"));
ok($objJa->eq("\x{304E}", "\x{304D}\x{3099}"));
ok($objJa->eq("\x{307C}", "\x{307B}\x{3099}"));
ok($objJa->eq("\x{307D}", "\x{307B}\x{309A}"));
ok($objJa->eq("\x{3094}", "\x{3046}\x{3099}"));
+ok($objJa->eq("\x{309E}", "\x{309D}\x{3099}"));
-# 404
+# 409
$objJa->change(katakana_before_hiragana => 1);
ok($objJa->lt("\x{3094}", "\x{30F4}"));
ok($objJa->lt("\x{3095}", "\x{30F5}"));
ok($objJa->lt("\x{3096}", "\x{30F6}"));
+ok($objJa->lt("\x{309D}", "\x{30FD}"));
+ok($objJa->lt("\x{309E}", "\x{30FE}"));
-# 490
+# 497
}
use Test;
-BEGIN { plan tests => 149 };
+BEGIN { plan tests => 217 };
use strict;
use warnings;
$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{451}", "\x{435}"));
+ok($objKk->gt("\x{401}", "\x{415}"));
ok($objKk->gt("\x{4AF}", "\x{4B1}"));
-ok($objKk->lt("\x{44B}", "\x{456}"));
-ok($objKk->gt("\x{44C}", "\x{456}"));
+ok($objKk->gt("\x{4AE}", "\x{4B0}"));
+ok($objKk->lt("\x{456}", "\x{44C}"));
+ok($objKk->lt("\x{406}", "\x{42C}"));
-# 8
+ok($objKk->lt("\x{451}", "\x{454}"));
+ok($objKk->lt("\x{401}", "\x{404}"));
+ok($objKk->lt("\x{4AF}", "\x{A64B}"));
+ok($objKk->lt("\x{4AE}", "\x{A64A}"));
+ok($objKk->gt("\x{456}", "\x{4F9}"));
+ok($objKk->gt("\x{406}", "\x{4F8}"));
+
+ok($objKk->gt("\x{4E5}", "\x{438}")); # not suppressed
+ok($objKk->gt("\x{4E4}", "\x{418}")); # not suppressed
+ok($objKk->gt("\x{439}", "\x{438}")); # not suppressed
+ok($objKk->gt("\x{419}", "\x{418}")); # not suppressed
+
+# 18
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{4DB}", "\x{4D9}"));
+ok($objKk->eq("\x{4DA}", "\x{4D8}"));
ok($objKk->eq("\x{453}", "\x{433}"));
ok($objKk->eq("\x{403}", "\x{413}"));
+ok($objKk->eq("\x{450}", "\x{435}")); # not contraction
+ok($objKk->eq("\x{400}", "\x{415}")); # not contraction
ok($objKk->eq("\x{4D7}", "\x{435}"));
ok($objKk->eq("\x{4D6}", "\x{415}"));
+ok($objKk->eq("\x{4C2}", "\x{436}")); # not contraction
+ok($objKk->eq("\x{4C1}", "\x{416}")); # not contraction
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{45D}", "\x{438}")); # not contraction
+ok($objKk->eq("\x{40D}", "\x{418}")); # not contraction
+ok($objKk->eq("\x{4E3}", "\x{438}")); # not contraction
+ok($objKk->eq("\x{4E2}", "\x{418}")); # not contraction
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{4EB}", "\x{4E9}"));
+ok($objKk->eq("\x{4EA}", "\x{4E8}"));
ok($objKk->eq("\x{45C}", "\x{43A}"));
ok($objKk->eq("\x{40C}", "\x{41A}"));
+ok($objKk->eq("\x{4EF}", "\x{443}")); # not contraction
+ok($objKk->eq("\x{4EE}", "\x{423}")); # not contraction
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{4F8}", "\x{42B}"));
ok($objKk->eq("\x{4ED}", "\x{44D}"));
ok($objKk->eq("\x{4EC}", "\x{42D}"));
+ok($objKk->eq("\x{477}", "\x{475}"));
+ok($objKk->eq("\x{476}", "\x{474}"));
-# 42
+# 64
$objKk->change(level => 2);
+ok($objKk->eq("\x{451}", "\x{401}"));
+ok($objKk->eq("\x{4AF}", "\x{4AE}"));
+ok($objKk->eq("\x{456}", "\x{406}"));
+
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{4DB}", "\x{4D9}"));
+ok($objKk->gt("\x{4DA}", "\x{4D8}"));
ok($objKk->gt("\x{453}", "\x{433}"));
ok($objKk->gt("\x{403}", "\x{413}"));
+ok($objKk->gt("\x{450}", "\x{435}")); # not contraction
+ok($objKk->gt("\x{400}", "\x{415}")); # not contraction
ok($objKk->gt("\x{4D7}", "\x{435}"));
ok($objKk->gt("\x{4D6}", "\x{415}"));
+ok($objKk->gt("\x{4C2}", "\x{436}")); # not contraction
+ok($objKk->gt("\x{4C1}", "\x{416}")); # not contraction
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{45D}", "\x{438}")); # not contraction
+ok($objKk->gt("\x{40D}", "\x{418}")); # not contraction
+ok($objKk->gt("\x{4E3}", "\x{438}")); # not contraction
+ok($objKk->gt("\x{4E2}", "\x{418}")); # not contraction
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{4EB}", "\x{4E9}"));
+ok($objKk->gt("\x{4EA}", "\x{4E8}"));
ok($objKk->gt("\x{45C}", "\x{43A}"));
ok($objKk->gt("\x{40C}", "\x{41A}"));
+ok($objKk->gt("\x{4EF}", "\x{443}")); # not contraction
+ok($objKk->gt("\x{4EE}", "\x{423}")); # not contraction
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{4F8}", "\x{42B}"));
ok($objKk->gt("\x{4ED}", "\x{44D}"));
ok($objKk->gt("\x{4EC}", "\x{42D}"));
+ok($objKk->gt("\x{477}", "\x{475}"));
+ok($objKk->gt("\x{476}", "\x{474}"));
-# 76
+# 113
$objKk->change(level => 3);
-ok($objKk->lt("\x{4E9}", "\x{4E8}"));
-ok($objKk->lt("\x{4B1}", "\x{4B0}"));
+ok($objKk->lt("\x{451}", "\x{401}"));
+ok($objKk->lt("\x{4AF}", "\x{4AE}"));
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
+ok($objKk->eq("\x{451}", "\x{435}\x{308}"));
+ok($objKk->eq("\x{401}", "\x{415}\x{308}"));
+ok($objKk->eq("\x{4E5}", "\x{438}\x{308}")); # not suppressed
+ok($objKk->eq("\x{4E4}", "\x{418}\x{308}")); # not suppressed
+ok($objKk->eq("\x{439}", "\x{438}\x{306}")); # not suppressed
+ok($objKk->eq("\x{419}", "\x{418}\x{306}")); # not suppressed
+
+# 122
+
+for my $i ("", "\0") {
+ ok($objKk->eq("\x{4D1}", "\x{430}$i\x{306}"));
+ ok($objKk->eq("\x{4D0}", "\x{410}$i\x{306}"));
+ ok($objKk->eq("\x{4D3}", "\x{430}$i\x{308}"));
+ ok($objKk->eq("\x{4D2}", "\x{410}$i\x{308}"));
+ ok($objKk->eq("\x{4DB}", "\x{4D9}$i\x{308}"));
+ ok($objKk->eq("\x{4DA}", "\x{4D8}$i\x{308}"));
+ ok($objKk->eq("\x{453}", "\x{433}$i\x{301}"));
+ ok($objKk->eq("\x{403}", "\x{413}$i\x{301}"));
+ ok($objKk->eq("\x{450}", "\x{435}$i\x{300}")); # not contraction
+ ok($objKk->eq("\x{400}", "\x{415}$i\x{300}")); # not contraction
+ ok($objKk->eq("\x{4D7}", "\x{435}$i\x{306}"));
+ ok($objKk->eq("\x{4D6}", "\x{415}$i\x{306}"));
+ ok($objKk->eq("\x{4C2}", "\x{436}$i\x{306}")); # not contraction
+ ok($objKk->eq("\x{4C1}", "\x{416}$i\x{306}")); # not contraction
+ ok($objKk->eq("\x{4DD}", "\x{436}$i\x{308}"));
+ ok($objKk->eq("\x{4DC}", "\x{416}$i\x{308}"));
+ ok($objKk->eq("\x{4DF}", "\x{437}$i\x{308}"));
+ ok($objKk->eq("\x{4DE}", "\x{417}$i\x{308}"));
+ ok($objKk->eq("\x{45D}", "\x{438}$i\x{300}")); # not contraction
+ ok($objKk->eq("\x{40D}", "\x{418}$i\x{300}")); # not contraction
+ ok($objKk->eq("\x{4E3}", "\x{438}$i\x{304}")); # not contraction
+ ok($objKk->eq("\x{4E2}", "\x{418}$i\x{304}")); # not contraction
+ ok($objKk->eq("\x{457}", "\x{456}$i\x{308}"));
+ ok($objKk->eq("\x{407}", "\x{406}$i\x{308}"));
+ ok($objKk->eq("\x{4E7}", "\x{43E}$i\x{308}"));
+ ok($objKk->eq("\x{4E6}", "\x{41E}$i\x{308}"));
+ ok($objKk->eq("\x{4EB}", "\x{4E9}$i\x{308}"));
+ ok($objKk->eq("\x{4EA}", "\x{4E8}$i\x{308}"));
+ ok($objKk->eq("\x{45C}", "\x{43A}$i\x{301}"));
+ ok($objKk->eq("\x{40C}", "\x{41A}$i\x{301}"));
+ ok($objKk->eq("\x{4EF}", "\x{443}$i\x{304}")); # not contraction
+ ok($objKk->eq("\x{4EE}", "\x{423}$i\x{304}")); # not contraction
+ ok($objKk->eq("\x{45E}", "\x{443}$i\x{306}"));
+ ok($objKk->eq("\x{40E}", "\x{423}$i\x{306}"));
+ ok($objKk->eq("\x{4F1}", "\x{443}$i\x{308}"));
+ ok($objKk->eq("\x{4F0}", "\x{423}$i\x{308}"));
+ ok($objKk->eq("\x{4F3}", "\x{443}$i\x{30B}"));
+ ok($objKk->eq("\x{4F2}", "\x{423}$i\x{30B}"));
+ ok($objKk->eq("\x{4F5}", "\x{447}$i\x{308}"));
+ ok($objKk->eq("\x{4F4}", "\x{427}$i\x{308}"));
+ ok($objKk->eq("\x{4F9}", "\x{44B}$i\x{308}"));
+ ok($objKk->eq("\x{4F8}", "\x{42B}$i\x{308}"));
+ ok($objKk->eq("\x{4ED}", "\x{44D}$i\x{308}"));
+ ok($objKk->eq("\x{4EC}", "\x{42D}$i\x{308}"));
+ ok($objKk->eq("\x{477}", "\x{475}$i\x{30F}"));
+ ok($objKk->eq("\x{476}", "\x{474}$i\x{30F}"));
+}
+
+# 214
+
+$objKk->change(upper_before_lower => 1);
+
+ok($objKk->gt("\x{451}", "\x{401}"));
+ok($objKk->gt("\x{4AF}", "\x{4AE}"));
+ok($objKk->gt("\x{456}", "\x{406}"));
+
+# 217
--- /dev/null
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 7 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objKn = Unicode::Collate::Locale->
+ new(locale => 'KN', normalization => undef);
+
+ok($objKn->getlocale, 'kn');
+
+$objKn->change(level => 1);
+
+ok($objKn->lt("\x{0C94}", "\x{0C82}"));
+ok($objKn->lt("\x{0C82}", "\x{0C83}"));
+ok($objKn->lt("\x{0C83}", "\x{0CF1}"));
+ok($objKn->lt("\x{0CF1}", "\x{0CF2}"));
+ok($objKn->lt("\x{0CF2}", "\x{0C95}"));
+
--- /dev/null
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 13 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objKok = Unicode::Collate::Locale->
+ new(locale => 'KOK', normalization => undef);
+
+ok($objKok->getlocale, 'kok');
+
+$objKok->change(level => 1);
+
+ok($objKok->lt("\x{950}", "\x{902}"));
+ok($objKok->lt("\x{902}", "\x{903}"));
+ok($objKok->lt("\x{903}", "\x{972}"));
+
+ok($objKok->eq("\x{902}", "\x{901}"));
+
+ok($objKok->lt("\x{939}", "\x{933}"));
+ok($objKok->lt("\x{933}", "\x{915}\x{94D}\x{937}"));
+ok($objKok->lt("\x{915}\x{94D}\x{937}", "\x{93D}"));
+
+ok($objKok->eq("\x{933}", "\x{934}"));
+
+# 10
+
+$objKok->change(level => 2);
+
+ok($objKok->lt("\x{902}", "\x{901}"));
+ok($objKok->lt("\x{933}", "\x{934}"));
+
+$objKok->change(level => 3);
+
+ok($objKok->eq("\x{933}\x{93C}", "\x{934}"));
+
+# 13
--- /dev/null
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 23 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objLn = Unicode::Collate::Locale->
+ new(locale => 'LN', normalization => undef);
+
+ok($objLn->getlocale, 'ln');
+
+$objLn->change(level => 1);
+
+ok($objLn->gt("\x{25B}", "E"));
+ok($objLn->lt("\x{25B}", "F"));
+
+ok($objLn->eq("\x{254}", "O"));
+
+# 5
+
+$objLn->change(level => 2);
+
+ok($objLn->gt("\x{254}", "O"));
+
+ok($objLn->eq("\x{25B}", "\x{190}"));
+ok($objLn->eq("\x{254}", "\x{186}"));
+
+ok($objLn->eq("\x{25B}", "\x{2107}"));
+ok($objLn->eq("\x{25B}", "\x{1D4B}"));
+ok($objLn->eq("\x{254}", "\x{1D53}"));
+
+# 11
+
+$objLn->change(level => 3);
+
+ok($objLn->lt("\x{25B}", "\x{190}"));
+ok($objLn->lt("\x{25B}", "\x{2107}"));
+ok($objLn->lt("\x{254}", "\x{186}"));
+
+$objLn->change(upper_before_lower => 1);
+
+ok($objLn->gt("\x{25B}", "\x{190}"));
+ok($objLn->gt("\x{25B}", "\x{2107}"));
+ok($objLn->gt("\x{254}", "\x{186}"));
+
+for my $up_lo (0, 1) {
+ $objLn->change(upper_before_lower => $up_lo);
+ ok($objLn->lt("\x{190}", "\x{2107}"));
+ ok($objLn->lt("\x{25B}", "\x{1D4B}"));
+ ok($objLn->lt("\x{254}", "\x{1D53}"));
+}
+
+# 23
}
use Test;
-BEGIN { plan tests => 55 };
+BEGIN { plan tests => 69 };
use strict;
use warnings;
# 8
-ok($objLt->eq( "\x{328}", "\x{307}"));
+ok($objLt->eq("a", "a\x{328}"));
+ok($objLt->eq("e", "e\x{328}"));
ok($objLt->eq("e\x{328}", "e\x{307}"));
-ok($objLt->eq("i\x{328}", "i\x{307}"));
-ok($objLt->eq('i', 'y'));
+ok($objLt->eq("i", "i\x{328}"));
+ok($objLt->eq("y", "i\x{328}"));
+ok($objLt->eq("u", "u\x{328}"));
+ok($objLt->eq("u\x{328}", "u\x{304}"));
+
+# 15
$objLt->change(level => 2);
-ok($objLt->lt( "\x{328}", "\x{307}"));
+ok($objLt->lt("a", "a\x{328}"));
+ok($objLt->lt("e", "e\x{328}"));
ok($objLt->lt("e\x{328}", "e\x{307}"));
-ok($objLt->lt("i\x{328}", "i\x{307}"));
-ok($objLt->lt('i', 'y'));
+ok($objLt->lt("i", "i\x{328}"));
+ok($objLt->gt("y", "i\x{328}"));
+ok($objLt->lt("u", "u\x{328}"));
+ok($objLt->lt("u\x{328}", "u\x{304}"));
-# 16
+# 22
ok($objLt->eq("c\x{30C}", "C\x{30C}"));
ok($objLt->eq("s\x{30C}", "S\x{30C}"));
ok($objLt->eq("z\x{30C}", "Z\x{30C}"));
-ok($objLt->eq('y', 'Y'));
-ok($objLt->eq("e\x{307}", "E\x{307}"));
+
ok($objLt->eq("i\x{307}", "I\x{307}"));
+ok($objLt->eq("y", "Y"));
+
ok($objLt->eq("a\x{328}", "A\x{328}"));
ok($objLt->eq("e\x{328}", "E\x{328}"));
+ok($objLt->eq("e\x{307}", "E\x{307}"));
ok($objLt->eq("i\x{328}", "I\x{328}"));
ok($objLt->eq("u\x{328}", "U\x{328}"));
+ok($objLt->eq("u\x{304}", "U\x{304}"));
+
+# 33
-# 26
+# according to CLDR tests
+ok($objLt->gt("I\x{307}\x{300}", "I\x{300}"));
+ok($objLt->gt("I\x{307}\x{301}", "I\x{301}"));
+ok($objLt->gt("I\x{307}\x{303}", "I\x{303}"));
+
+# 36
$objLt->change(level => 3);
ok($objLt->lt("c\x{30C}", "C\x{30C}"));
ok($objLt->lt("s\x{30C}", "S\x{30C}"));
ok($objLt->lt("z\x{30C}", "Z\x{30C}"));
-ok($objLt->lt('y', 'Y'));
-ok($objLt->lt("e\x{307}", "E\x{307}"));
+
ok($objLt->lt("i\x{307}", "I\x{307}"));
+ok($objLt->lt("y", "Y"));
+
ok($objLt->lt("a\x{328}", "A\x{328}"));
ok($objLt->lt("e\x{328}", "E\x{328}"));
+ok($objLt->lt("e\x{307}", "E\x{307}"));
ok($objLt->lt("i\x{328}", "I\x{328}"));
ok($objLt->lt("u\x{328}", "U\x{328}"));
+ok($objLt->lt("u\x{304}", "U\x{304}"));
-# 36
+# 47
ok($objLt->eq("c\x{30C}", "\x{10D}"));
ok($objLt->eq("C\x{30C}", "\x{10C}"));
ok($objLt->eq("S\x{30C}", "\x{160}"));
ok($objLt->eq("z\x{30C}", "\x{17E}"));
ok($objLt->eq("Z\x{30C}", "\x{17D}"));
-ok($objLt->eq("e\x{307}", "\x{117}"));
-ok($objLt->eq("E\x{307}", "\x{116}"));
-ok($objLt->eq("I\x{307}", "\x{130}"));
-# 45
+ok($objLt->eq("I\x{307}", "\x{130}"));
ok($objLt->eq("a\x{328}", "\x{105}"));
ok($objLt->eq("A\x{328}", "\x{104}"));
ok($objLt->eq("e\x{328}", "\x{119}"));
ok($objLt->eq("E\x{328}", "\x{118}"));
+ok($objLt->eq("e\x{307}", "\x{117}"));
+ok($objLt->eq("E\x{307}", "\x{116}"));
ok($objLt->eq("i\x{328}", "\x{12F}"));
ok($objLt->eq("I\x{328}", "\x{12E}"));
ok($objLt->eq("u\x{328}", "\x{173}"));
ok($objLt->eq("u\x{304}", "\x{16B}"));
ok($objLt->eq("U\x{304}", "\x{16A}"));
-# 55
+# 66
+
+ok($objLt->eq("i\x{307}\x{300}", "i\x{300}"));
+ok($objLt->eq("i\x{307}\x{301}", "i\x{301}"));
+ok($objLt->eq("i\x{307}\x{303}", "i\x{303}"));
+
+# 69
=item *
-L<Unicode::Collate> has been upgraded from version 0.78 to version 0.79.
+L<Unicode::Collate> has been upgraded from version 0.78 to version 0.80.
+
+Locales updated to CLDR 2.0: ar, be, bg, ha, hr, kk, lt.
+Newly supported locales: as, fi__phonebook, gu, hi, kn, kok and ln.
=back