1 2BEGIN { 3 unless ('A' eq pack('U', 0x41)) { 4 print "1..0 # Unicode::Collate cannot pack a Unicode code point\n"; 5 exit 0; 6 } 7 unless (0x41 == unpack('U', 'A')) { 8 print "1..0 # Unicode::Collate cannot get a Unicode code point\n"; 9 exit 0; 10 } 11 if ($ENV{PERL_CORE}) { 12 chdir('t') if -d 't'; 13 @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); 14 } 15} 16 17use strict; 18use warnings; 19BEGIN { $| = 1; print "1..424\n"; } 20my $count = 0; 21sub ok ($;$) { 22 my $p = my $r = shift; 23 if (@_) { 24 my $x = shift; 25 $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x; 26 } 27 print $p ? "ok" : "not ok", ' ', ++$count, "\n"; 28} 29 30use Unicode::Collate::Locale; 31 32ok(1); 33 34######################### 35 36my $objVi = Unicode::Collate::Locale-> 37 new(locale => 'VI', normalization => undef); 38 39ok($objVi->getlocale, 'vi'); 40 41$objVi->change(level => 1); 42 43ok($objVi->lt("a", "a\x{306}")); 44ok($objVi->lt("a\x{306}", "a\x{302}")); 45ok($objVi->gt("b", "a\x{302}")); 46ok($objVi->lt("d", "d\x{335}")); 47ok($objVi->gt("e", "d\x{335}")); 48ok($objVi->lt("e", "e\x{302}")); 49ok($objVi->gt("f", "e\x{302}")); 50ok($objVi->lt("o", "o\x{302}")); 51ok($objVi->lt("o\x{302}", "o\x{31B}")); 52ok($objVi->gt("p", "o\x{31B}")); 53ok($objVi->lt("u", "u\x{31B}")); 54ok($objVi->gt("v", "u\x{31B}")); 55 56# 14 57 58ok($objVi->eq("\x{300}", "\x{309}")); 59ok($objVi->eq("\x{309}", "\x{303}")); 60ok($objVi->eq("\x{303}", "\x{301}")); 61ok($objVi->eq("\x{301}", "\x{323}")); 62ok($objVi->eq("\x{323}", "\x{306}")); 63ok($objVi->eq("\x{306}", "\x{302}")); 64 65ok($objVi->eq("X\x{300}", "X\x{309}")); 66ok($objVi->eq("X\x{309}", "X\x{303}")); 67ok($objVi->eq("X\x{303}", "X\x{301}")); 68ok($objVi->eq("X\x{301}", "X\x{323}")); 69ok($objVi->eq("X\x{323}", "X\x{306}")); 70ok($objVi->eq("X\x{306}", "X\x{302}")); 71 72# 26 73 74$objVi->change(level => 2); 75 76ok($objVi->lt("\x{300}", "\x{309}")); 77ok($objVi->lt("\x{309}", "\x{303}")); 78ok($objVi->lt("\x{303}", "\x{301}")); 79ok($objVi->lt("\x{301}", "\x{323}")); 80ok($objVi->lt("\x{323}", "\x{306}")); 81ok($objVi->lt("\x{306}", "\x{302}")); 82 83ok($objVi->lt("X\x{300}", "X\x{309}")); 84ok($objVi->lt("X\x{309}", "X\x{303}")); 85ok($objVi->lt("X\x{303}", "X\x{301}")); 86ok($objVi->lt("X\x{301}", "X\x{323}")); 87ok($objVi->lt("X\x{323}", "X\x{306}")); 88ok($objVi->lt("X\x{306}", "X\x{302}")); 89 90# 38 91 92ok($objVi->eq("a\x{306}", "A\x{306}")); 93ok($objVi->eq("a\x{302}", "A\x{302}")); 94ok($objVi->eq("d\x{335}", "D\x{335}")); 95ok($objVi->eq("e\x{302}", "E\x{302}")); 96ok($objVi->eq("o\x{302}", "O\x{302}")); 97ok($objVi->eq("o\x{31B}", "O\x{31B}")); 98ok($objVi->eq("u\x{31B}", "U\x{31B}")); 99 100# 45 101 102$objVi->change(level => 3); 103 104ok($objVi->lt("a\x{306}", "A\x{306}")); 105ok($objVi->lt("a\x{302}", "A\x{302}")); 106ok($objVi->lt("d\x{335}", "D\x{335}")); 107ok($objVi->lt("e\x{302}", "E\x{302}")); 108ok($objVi->lt("o\x{302}", "O\x{302}")); 109ok($objVi->lt("o\x{31B}", "O\x{31B}")); 110ok($objVi->lt("u\x{31B}", "U\x{31B}")); 111 112# 52 113 114ok($objVi->eq("a\x{306}", "\x{103}")); 115ok($objVi->eq("A\x{306}", "\x{102}")); 116ok($objVi->eq("a\x{302}", pack('U', 0xE2))); 117ok($objVi->eq("A\x{302}", pack('U', 0xC2))); 118ok($objVi->eq("d\x{335}", "\x{111}")); 119ok($objVi->eq("D\x{335}", "\x{110}")); 120ok($objVi->eq("e\x{302}", pack('U', 0xEA))); 121ok($objVi->eq("E\x{302}", pack('U', 0xCA))); 122ok($objVi->eq("o\x{302}", pack('U', 0xF4))); 123ok($objVi->eq("O\x{302}", pack('U', 0xD4))); 124ok($objVi->eq("o\x{31B}", "\x{1A1}")); 125ok($objVi->eq("O\x{31B}", "\x{1A0}")); 126ok($objVi->eq("u\x{31B}", "\x{1B0}")); 127ok($objVi->eq("U\x{31B}", "\x{1AF}")); 128 129# 66 130 131ok($objVi->eq("e\x{306}", "\x{115}")); 132ok($objVi->eq("E\x{306}", "\x{114}")); 133ok($objVi->eq("i\x{306}", "\x{12D}")); 134ok($objVi->eq("I\x{306}", "\x{12C}")); 135ok($objVi->eq("o\x{306}", "\x{14F}")); 136ok($objVi->eq("O\x{306}", "\x{14E}")); 137ok($objVi->eq("u\x{306}", "\x{16D}")); 138ok($objVi->eq("U\x{306}", "\x{16C}")); 139 140# 74 141 142ok($objVi->eq("a\x{300}", pack('U', 0xE0))); 143ok($objVi->eq("a\x{340}", pack('U', 0xE0))); 144ok($objVi->eq("a\x{309}", "\x{1EA3}")); 145ok($objVi->eq("a\x{303}", pack('U', 0xE3))); 146ok($objVi->eq("a\x{301}", pack('U', 0xE1))); 147ok($objVi->eq("a\x{341}", pack('U', 0xE1))); 148ok($objVi->eq("a\x{323}", "\x{1EA1}")); 149ok($objVi->eq("A\x{300}", pack('U', 0xC0))); 150ok($objVi->eq("A\x{340}", pack('U', 0xC0))); 151ok($objVi->eq("A\x{309}", "\x{1EA2}")); 152ok($objVi->eq("A\x{303}", pack('U', 0xC3))); 153ok($objVi->eq("A\x{301}", pack('U', 0xC1))); 154ok($objVi->eq("A\x{341}", pack('U', 0xC1))); 155ok($objVi->eq("A\x{323}", "\x{1EA0}")); 156ok($objVi->eq("a\x{306}\x{300}", "\x{1EB1}")); 157ok($objVi->eq("a\x{306}\x{340}", "\x{1EB1}")); 158ok($objVi->eq("a\x{306}\x{309}", "\x{1EB3}")); 159ok($objVi->eq("a\x{306}\x{303}", "\x{1EB5}")); 160ok($objVi->eq("a\x{306}\x{301}", "\x{1EAF}")); 161ok($objVi->eq("a\x{306}\x{341}", "\x{1EAF}")); 162ok($objVi->eq("a\x{306}\x{323}", "\x{1EB7}")); 163ok($objVi->eq("A\x{306}\x{300}", "\x{1EB0}")); 164ok($objVi->eq("A\x{306}\x{340}", "\x{1EB0}")); 165ok($objVi->eq("A\x{306}\x{309}", "\x{1EB2}")); 166ok($objVi->eq("A\x{306}\x{303}", "\x{1EB4}")); 167ok($objVi->eq("A\x{306}\x{301}", "\x{1EAE}")); 168ok($objVi->eq("A\x{306}\x{341}", "\x{1EAE}")); 169ok($objVi->eq("A\x{306}\x{323}", "\x{1EB6}")); 170ok($objVi->eq("a\x{302}\x{300}", "\x{1EA7}")); 171ok($objVi->eq("a\x{302}\x{340}", "\x{1EA7}")); 172ok($objVi->eq("a\x{302}\x{309}", "\x{1EA9}")); 173ok($objVi->eq("a\x{302}\x{303}", "\x{1EAB}")); 174ok($objVi->eq("a\x{302}\x{301}", "\x{1EA5}")); 175ok($objVi->eq("a\x{302}\x{341}", "\x{1EA5}")); 176ok($objVi->eq("a\x{302}\x{323}", "\x{1EAD}")); 177ok($objVi->eq("A\x{302}\x{300}", "\x{1EA6}")); 178ok($objVi->eq("A\x{302}\x{340}", "\x{1EA6}")); 179ok($objVi->eq("A\x{302}\x{309}", "\x{1EA8}")); 180ok($objVi->eq("A\x{302}\x{303}", "\x{1EAA}")); 181ok($objVi->eq("A\x{302}\x{301}", "\x{1EA4}")); 182ok($objVi->eq("A\x{302}\x{341}", "\x{1EA4}")); 183ok($objVi->eq("A\x{302}\x{323}", "\x{1EAC}")); 184ok($objVi->eq("e\x{300}", pack('U', 0xE8))); 185ok($objVi->eq("e\x{340}", pack('U', 0xE8))); 186ok($objVi->eq("e\x{309}", "\x{1EBB}")); 187ok($objVi->eq("e\x{303}", "\x{1EBD}")); 188ok($objVi->eq("e\x{301}", pack('U', 0xE9))); 189ok($objVi->eq("e\x{341}", pack('U', 0xE9))); 190ok($objVi->eq("e\x{323}", "\x{1EB9}")); 191ok($objVi->eq("E\x{300}", pack('U', 0xC8))); 192ok($objVi->eq("E\x{340}", pack('U', 0xC8))); 193ok($objVi->eq("E\x{309}", "\x{1EBA}")); 194ok($objVi->eq("E\x{303}", "\x{1EBC}")); 195ok($objVi->eq("E\x{301}", pack('U', 0xC9))); 196ok($objVi->eq("E\x{341}", pack('U', 0xC9))); 197ok($objVi->eq("E\x{323}", "\x{1EB8}")); 198ok($objVi->eq("e\x{302}\x{300}", "\x{1EC1}")); 199ok($objVi->eq("e\x{302}\x{340}", "\x{1EC1}")); 200ok($objVi->eq("e\x{302}\x{309}", "\x{1EC3}")); 201ok($objVi->eq("e\x{302}\x{303}", "\x{1EC5}")); 202ok($objVi->eq("e\x{302}\x{301}", "\x{1EBF}")); 203ok($objVi->eq("e\x{302}\x{341}", "\x{1EBF}")); 204ok($objVi->eq("e\x{302}\x{323}", "\x{1EC7}")); 205ok($objVi->eq("E\x{302}\x{300}", "\x{1EC0}")); 206ok($objVi->eq("E\x{302}\x{340}", "\x{1EC0}")); 207ok($objVi->eq("E\x{302}\x{309}", "\x{1EC2}")); 208ok($objVi->eq("E\x{302}\x{303}", "\x{1EC4}")); 209ok($objVi->eq("E\x{302}\x{301}", "\x{1EBE}")); 210ok($objVi->eq("E\x{302}\x{341}", "\x{1EBE}")); 211ok($objVi->eq("E\x{302}\x{323}", "\x{1EC6}")); 212ok($objVi->eq("i\x{300}", pack('U', 0xEC))); 213ok($objVi->eq("i\x{340}", pack('U', 0xEC))); 214ok($objVi->eq("i\x{309}", "\x{1EC9}")); 215ok($objVi->eq("i\x{303}", "\x{129}")); 216ok($objVi->eq("i\x{301}", pack('U', 0xED))); 217ok($objVi->eq("i\x{341}", pack('U', 0xED))); 218ok($objVi->eq("i\x{323}", "\x{1ECB}")); 219ok($objVi->eq("I\x{300}", pack('U', 0xCC))); 220ok($objVi->eq("I\x{340}", pack('U', 0xCC))); 221ok($objVi->eq("I\x{309}", "\x{1EC8}")); 222ok($objVi->eq("I\x{303}", "\x{128}")); 223ok($objVi->eq("I\x{301}", pack('U', 0xCD))); 224ok($objVi->eq("I\x{341}", pack('U', 0xCD))); 225ok($objVi->eq("I\x{323}", "\x{1ECA}")); 226ok($objVi->eq("o\x{300}", pack('U', 0xF2))); 227ok($objVi->eq("o\x{340}", pack('U', 0xF2))); 228ok($objVi->eq("o\x{309}", "\x{1ECF}")); 229ok($objVi->eq("o\x{303}", pack('U', 0xF5))); 230ok($objVi->eq("o\x{301}", pack('U', 0xF3))); 231ok($objVi->eq("o\x{341}", pack('U', 0xF3))); 232ok($objVi->eq("o\x{323}", "\x{1ECD}")); 233ok($objVi->eq("O\x{300}", pack('U', 0xD2))); 234ok($objVi->eq("O\x{340}", pack('U', 0xD2))); 235ok($objVi->eq("O\x{309}", "\x{1ECE}")); 236ok($objVi->eq("O\x{303}", pack('U', 0xD5))); 237ok($objVi->eq("O\x{301}", pack('U', 0xD3))); 238ok($objVi->eq("O\x{341}", pack('U', 0xD3))); 239ok($objVi->eq("O\x{323}", "\x{1ECC}")); 240ok($objVi->eq("o\x{302}\x{300}", "\x{1ED3}")); 241ok($objVi->eq("o\x{302}\x{340}", "\x{1ED3}")); 242ok($objVi->eq("o\x{302}\x{309}", "\x{1ED5}")); 243ok($objVi->eq("o\x{302}\x{303}", "\x{1ED7}")); 244ok($objVi->eq("o\x{302}\x{301}", "\x{1ED1}")); 245ok($objVi->eq("o\x{302}\x{341}", "\x{1ED1}")); 246ok($objVi->eq("o\x{302}\x{323}", "\x{1ED9}")); 247ok($objVi->eq("O\x{302}\x{300}", "\x{1ED2}")); 248ok($objVi->eq("O\x{302}\x{340}", "\x{1ED2}")); 249ok($objVi->eq("O\x{302}\x{309}", "\x{1ED4}")); 250ok($objVi->eq("O\x{302}\x{303}", "\x{1ED6}")); 251ok($objVi->eq("O\x{302}\x{301}", "\x{1ED0}")); 252ok($objVi->eq("O\x{302}\x{341}", "\x{1ED0}")); 253ok($objVi->eq("O\x{302}\x{323}", "\x{1ED8}")); 254ok($objVi->eq("o\x{31B}\x{300}", "\x{1EDD}")); 255ok($objVi->eq("o\x{31B}\x{340}", "\x{1EDD}")); 256ok($objVi->eq("o\x{31B}\x{309}", "\x{1EDF}")); 257ok($objVi->eq("o\x{31B}\x{303}", "\x{1EE1}")); 258ok($objVi->eq("o\x{31B}\x{301}", "\x{1EDB}")); 259ok($objVi->eq("o\x{31B}\x{341}", "\x{1EDB}")); 260ok($objVi->eq("o\x{31B}\x{323}", "\x{1EE3}")); 261ok($objVi->eq("O\x{31B}\x{300}", "\x{1EDC}")); 262ok($objVi->eq("O\x{31B}\x{340}", "\x{1EDC}")); 263ok($objVi->eq("O\x{31B}\x{309}", "\x{1EDE}")); 264ok($objVi->eq("O\x{31B}\x{303}", "\x{1EE0}")); 265ok($objVi->eq("O\x{31B}\x{301}", "\x{1EDA}")); 266ok($objVi->eq("O\x{31B}\x{341}", "\x{1EDA}")); 267ok($objVi->eq("O\x{31B}\x{323}", "\x{1EE2}")); 268ok($objVi->eq("u\x{300}", pack('U', 0xF9))); 269ok($objVi->eq("u\x{340}", pack('U', 0xF9))); 270ok($objVi->eq("u\x{309}", "\x{1EE7}")); 271ok($objVi->eq("u\x{303}", "\x{169}")); 272ok($objVi->eq("u\x{301}", pack('U', 0xFA))); 273ok($objVi->eq("u\x{341}", pack('U', 0xFA))); 274ok($objVi->eq("u\x{323}", "\x{1EE5}")); 275ok($objVi->eq("U\x{300}", pack('U', 0xD9))); 276ok($objVi->eq("U\x{340}", pack('U', 0xD9))); 277ok($objVi->eq("U\x{309}", "\x{1EE6}")); 278ok($objVi->eq("U\x{303}", "\x{168}")); 279ok($objVi->eq("U\x{301}", pack('U', 0xDA))); 280ok($objVi->eq("U\x{341}", pack('U', 0xDA))); 281ok($objVi->eq("U\x{323}", "\x{1EE4}")); 282ok($objVi->eq("u\x{31B}\x{300}", "\x{1EEB}")); 283ok($objVi->eq("u\x{31B}\x{340}", "\x{1EEB}")); 284ok($objVi->eq("u\x{31B}\x{309}", "\x{1EED}")); 285ok($objVi->eq("u\x{31B}\x{303}", "\x{1EEF}")); 286ok($objVi->eq("u\x{31B}\x{301}", "\x{1EE9}")); 287ok($objVi->eq("u\x{31B}\x{341}", "\x{1EE9}")); 288ok($objVi->eq("u\x{31B}\x{323}", "\x{1EF1}")); 289ok($objVi->eq("U\x{31B}\x{300}", "\x{1EEA}")); 290ok($objVi->eq("U\x{31B}\x{340}", "\x{1EEA}")); 291ok($objVi->eq("U\x{31B}\x{309}", "\x{1EEC}")); 292ok($objVi->eq("U\x{31B}\x{303}", "\x{1EEE}")); 293ok($objVi->eq("U\x{31B}\x{301}", "\x{1EE8}")); 294ok($objVi->eq("U\x{31B}\x{341}", "\x{1EE8}")); 295ok($objVi->eq("U\x{31B}\x{323}", "\x{1EF0}")); 296ok($objVi->eq("y\x{300}", "\x{1EF3}")); 297ok($objVi->eq("y\x{340}", "\x{1EF3}")); 298ok($objVi->eq("y\x{309}", "\x{1EF7}")); 299ok($objVi->eq("y\x{303}", "\x{1EF9}")); 300ok($objVi->eq("y\x{301}", pack('U', 0xFD))); 301ok($objVi->eq("y\x{341}", pack('U', 0xFD))); 302ok($objVi->eq("y\x{323}", "\x{1EF5}")); 303ok($objVi->eq("Y\x{300}", "\x{1EF2}")); 304ok($objVi->eq("Y\x{340}", "\x{1EF2}")); 305ok($objVi->eq("Y\x{309}", "\x{1EF6}")); 306ok($objVi->eq("Y\x{303}", "\x{1EF8}")); 307ok($objVi->eq("Y\x{301}", pack('U', 0xDD))); 308ok($objVi->eq("Y\x{341}", pack('U', 0xDD))); 309ok($objVi->eq("Y\x{323}", "\x{1EF4}")); 310 311# 242 312 313ok($objVi->eq("a\x{306}\x{323}", "\x{1EA1}\x{306}")); 314ok($objVi->eq("A\x{306}\x{323}", "\x{1EA0}\x{306}")); 315ok($objVi->eq("a\x{302}\x{323}", "\x{1EA1}\x{302}")); 316ok($objVi->eq("A\x{302}\x{323}", "\x{1EA0}\x{302}")); 317ok($objVi->eq("e\x{302}\x{323}", "\x{1EB9}\x{302}")); 318ok($objVi->eq("E\x{302}\x{323}", "\x{1EB8}\x{302}")); 319ok($objVi->eq("o\x{302}\x{323}", "\x{1ECD}\x{302}")); 320ok($objVi->eq("O\x{302}\x{323}", "\x{1ECC}\x{302}")); 321ok($objVi->eq("o\x{31B}\x{300}", pack('U*', 0xF2, 0x31B))); 322ok($objVi->eq("o\x{31B}\x{340}", pack('U*', 0xF2, 0x31B))); 323ok($objVi->eq("o\x{31B}\x{309}", "\x{1ECF}\x{31B}")); 324ok($objVi->eq("o\x{31B}\x{303}", pack('U*', 0xF5, 0x31B))); 325ok($objVi->eq("o\x{31B}\x{301}", pack('U*', 0xF3, 0x31B))); 326ok($objVi->eq("o\x{31B}\x{341}", pack('U*', 0xF3, 0x31B))); 327ok($objVi->eq("o\x{31B}\x{323}", "\x{1ECD}\x{31B}")); 328ok($objVi->eq("O\x{31B}\x{300}", pack('U*', 0xD2, 0x31B))); 329ok($objVi->eq("O\x{31B}\x{340}", pack('U*', 0xD2, 0x31B))); 330ok($objVi->eq("O\x{31B}\x{309}", "\x{1ECE}\x{31B}")); 331ok($objVi->eq("O\x{31B}\x{303}", pack('U*', 0xD5, 0x31B))); 332ok($objVi->eq("O\x{31B}\x{301}", pack('U*', 0xD3, 0x31B))); 333ok($objVi->eq("O\x{31B}\x{341}", pack('U*', 0xD3, 0x31B))); 334ok($objVi->eq("O\x{31B}\x{323}", "\x{1ECC}\x{31B}")); 335ok($objVi->eq("u\x{31B}\x{300}", pack('U*', 0xF9, 0x31B))); 336ok($objVi->eq("u\x{31B}\x{340}", pack('U*', 0xF9, 0x31B))); 337ok($objVi->eq("u\x{31B}\x{309}", "\x{1EE7}\x{31B}")); 338ok($objVi->eq("u\x{31B}\x{303}", "\x{169}\x{31B}")); 339ok($objVi->eq("u\x{31B}\x{301}", pack('U*', 0xFA, 0x31B))); 340ok($objVi->eq("u\x{31B}\x{341}", pack('U*', 0xFA, 0x31B))); 341ok($objVi->eq("u\x{31B}\x{323}", "\x{1EE5}\x{31B}")); 342ok($objVi->eq("U\x{31B}\x{300}", pack('U*', 0xD9, 0x31B))); 343ok($objVi->eq("U\x{31B}\x{340}", pack('U*', 0xD9, 0x31B))); 344ok($objVi->eq("U\x{31B}\x{309}", "\x{1EE6}\x{31B}")); 345ok($objVi->eq("U\x{31B}\x{303}", "\x{168}\x{31B}")); 346ok($objVi->eq("U\x{31B}\x{301}", pack('U*', 0xDA, 0x31B))); 347ok($objVi->eq("U\x{31B}\x{341}", pack('U*', 0xDA, 0x31B))); 348ok($objVi->eq("U\x{31B}\x{323}", "\x{1EE4}\x{31B}")); 349 350# 278 351 352ok($objVi->eq("a\x{306}\x{323}", "a\x{323}\x{306}")); 353ok($objVi->eq("A\x{306}\x{323}", "A\x{323}\x{306}")); 354ok($objVi->eq("a\x{302}\x{323}", "a\x{323}\x{302}")); 355ok($objVi->eq("A\x{302}\x{323}", "A\x{323}\x{302}")); 356ok($objVi->eq("e\x{302}\x{323}", "e\x{323}\x{302}")); 357ok($objVi->eq("E\x{302}\x{323}", "E\x{323}\x{302}")); 358ok($objVi->eq("o\x{302}\x{323}", "o\x{323}\x{302}")); 359ok($objVi->eq("O\x{302}\x{323}", "O\x{323}\x{302}")); 360ok($objVi->eq("o\x{31B}\x{300}", "o\x{300}\x{31B}")); 361ok($objVi->eq("o\x{31B}\x{340}", "o\x{340}\x{31B}")); 362ok($objVi->eq("o\x{31B}\x{309}", "o\x{309}\x{31B}")); 363ok($objVi->eq("o\x{31B}\x{303}", "o\x{303}\x{31B}")); 364ok($objVi->eq("o\x{31B}\x{301}", "o\x{301}\x{31B}")); 365ok($objVi->eq("o\x{31B}\x{341}", "o\x{341}\x{31B}")); 366ok($objVi->eq("o\x{31B}\x{323}", "o\x{323}\x{31B}")); 367ok($objVi->eq("O\x{31B}\x{300}", "O\x{300}\x{31B}")); 368ok($objVi->eq("O\x{31B}\x{340}", "O\x{340}\x{31B}")); 369ok($objVi->eq("O\x{31B}\x{309}", "O\x{309}\x{31B}")); 370ok($objVi->eq("O\x{31B}\x{303}", "O\x{303}\x{31B}")); 371ok($objVi->eq("O\x{31B}\x{301}", "O\x{301}\x{31B}")); 372ok($objVi->eq("O\x{31B}\x{341}", "O\x{341}\x{31B}")); 373ok($objVi->eq("O\x{31B}\x{323}", "O\x{323}\x{31B}")); 374ok($objVi->eq("u\x{31B}\x{300}", "u\x{300}\x{31B}")); 375ok($objVi->eq("u\x{31B}\x{340}", "u\x{340}\x{31B}")); 376ok($objVi->eq("u\x{31B}\x{309}", "u\x{309}\x{31B}")); 377ok($objVi->eq("u\x{31B}\x{303}", "u\x{303}\x{31B}")); 378ok($objVi->eq("u\x{31B}\x{301}", "u\x{301}\x{31B}")); 379ok($objVi->eq("u\x{31B}\x{341}", "u\x{341}\x{31B}")); 380ok($objVi->eq("u\x{31B}\x{323}", "u\x{323}\x{31B}")); 381ok($objVi->eq("U\x{31B}\x{300}", "U\x{300}\x{31B}")); 382ok($objVi->eq("U\x{31B}\x{340}", "U\x{340}\x{31B}")); 383ok($objVi->eq("U\x{31B}\x{309}", "U\x{309}\x{31B}")); 384ok($objVi->eq("U\x{31B}\x{303}", "U\x{303}\x{31B}")); 385ok($objVi->eq("U\x{31B}\x{301}", "U\x{301}\x{31B}")); 386ok($objVi->eq("U\x{31B}\x{341}", "U\x{341}\x{31B}")); 387ok($objVi->eq("U\x{31B}\x{323}", "U\x{323}\x{31B}")); 388 389# 314 390 391ok($objVi->eq("a\x{306}\x{300}", "\x{103}\x{300}")); 392ok($objVi->eq("a\x{306}\x{340}", "\x{103}\x{340}")); 393ok($objVi->eq("a\x{306}\x{309}", "\x{103}\x{309}")); 394ok($objVi->eq("a\x{306}\x{303}", "\x{103}\x{303}")); 395ok($objVi->eq("a\x{306}\x{301}", "\x{103}\x{301}")); 396ok($objVi->eq("a\x{306}\x{341}", "\x{103}\x{341}")); 397ok($objVi->eq("a\x{306}\x{323}", "\x{103}\x{323}")); 398ok($objVi->eq("A\x{306}\x{300}", "\x{102}\x{300}")); 399ok($objVi->eq("A\x{306}\x{340}", "\x{102}\x{340}")); 400ok($objVi->eq("A\x{306}\x{309}", "\x{102}\x{309}")); 401ok($objVi->eq("A\x{306}\x{303}", "\x{102}\x{303}")); 402ok($objVi->eq("A\x{306}\x{301}", "\x{102}\x{301}")); 403ok($objVi->eq("A\x{306}\x{341}", "\x{102}\x{341}")); 404ok($objVi->eq("A\x{306}\x{323}", "\x{102}\x{323}")); 405ok($objVi->eq("a\x{302}\x{300}", pack('U*', 0xE2, 0x300))); 406ok($objVi->eq("a\x{302}\x{340}", pack('U*', 0xE2, 0x340))); 407ok($objVi->eq("a\x{302}\x{309}", pack('U*', 0xE2, 0x309))); 408ok($objVi->eq("a\x{302}\x{303}", pack('U*', 0xE2, 0x303))); 409ok($objVi->eq("a\x{302}\x{301}", pack('U*', 0xE2, 0x301))); 410ok($objVi->eq("a\x{302}\x{341}", pack('U*', 0xE2, 0x341))); 411ok($objVi->eq("a\x{302}\x{323}", pack('U*', 0xE2, 0x323))); 412ok($objVi->eq("A\x{302}\x{300}", pack('U*', 0xC2, 0x300))); 413ok($objVi->eq("A\x{302}\x{340}", pack('U*', 0xC2, 0x340))); 414ok($objVi->eq("A\x{302}\x{309}", pack('U*', 0xC2, 0x309))); 415ok($objVi->eq("A\x{302}\x{303}", pack('U*', 0xC2, 0x303))); 416ok($objVi->eq("A\x{302}\x{301}", pack('U*', 0xC2, 0x301))); 417ok($objVi->eq("A\x{302}\x{341}", pack('U*', 0xC2, 0x341))); 418ok($objVi->eq("A\x{302}\x{323}", pack('U*', 0xC2, 0x323))); 419ok($objVi->eq("e\x{302}\x{300}", pack('U*', 0xEA, 0x300))); 420ok($objVi->eq("e\x{302}\x{340}", pack('U*', 0xEA, 0x340))); 421ok($objVi->eq("e\x{302}\x{309}", pack('U*', 0xEA, 0x309))); 422ok($objVi->eq("e\x{302}\x{303}", pack('U*', 0xEA, 0x303))); 423ok($objVi->eq("e\x{302}\x{301}", pack('U*', 0xEA, 0x301))); 424ok($objVi->eq("e\x{302}\x{341}", pack('U*', 0xEA, 0x341))); 425ok($objVi->eq("e\x{302}\x{323}", pack('U*', 0xEA, 0x323))); 426ok($objVi->eq("E\x{302}\x{300}", pack('U*', 0xCA, 0x300))); 427ok($objVi->eq("E\x{302}\x{340}", pack('U*', 0xCA, 0x340))); 428ok($objVi->eq("E\x{302}\x{309}", pack('U*', 0xCA, 0x309))); 429ok($objVi->eq("E\x{302}\x{303}", pack('U*', 0xCA, 0x303))); 430ok($objVi->eq("E\x{302}\x{301}", pack('U*', 0xCA, 0x301))); 431ok($objVi->eq("E\x{302}\x{341}", pack('U*', 0xCA, 0x341))); 432ok($objVi->eq("E\x{302}\x{323}", pack('U*', 0xCA, 0x323))); 433ok($objVi->eq("o\x{302}\x{300}", pack('U*', 0xF4, 0x300))); 434ok($objVi->eq("o\x{302}\x{340}", pack('U*', 0xF4, 0x340))); 435ok($objVi->eq("o\x{302}\x{309}", pack('U*', 0xF4, 0x309))); 436ok($objVi->eq("o\x{302}\x{303}", pack('U*', 0xF4, 0x303))); 437ok($objVi->eq("o\x{302}\x{301}", pack('U*', 0xF4, 0x301))); 438ok($objVi->eq("o\x{302}\x{341}", pack('U*', 0xF4, 0x341))); 439ok($objVi->eq("o\x{302}\x{323}", pack('U*', 0xF4, 0x323))); 440ok($objVi->eq("O\x{302}\x{300}", pack('U*', 0xD4, 0x300))); 441ok($objVi->eq("O\x{302}\x{340}", pack('U*', 0xD4, 0x340))); 442ok($objVi->eq("O\x{302}\x{309}", pack('U*', 0xD4, 0x309))); 443ok($objVi->eq("O\x{302}\x{303}", pack('U*', 0xD4, 0x303))); 444ok($objVi->eq("O\x{302}\x{301}", pack('U*', 0xD4, 0x301))); 445ok($objVi->eq("O\x{302}\x{341}", pack('U*', 0xD4, 0x341))); 446ok($objVi->eq("O\x{302}\x{323}", pack('U*', 0xD4, 0x323))); 447ok($objVi->eq("o\x{31B}\x{300}", "\x{1A1}\x{300}")); 448ok($objVi->eq("o\x{31B}\x{340}", "\x{1A1}\x{340}")); 449ok($objVi->eq("o\x{31B}\x{309}", "\x{1A1}\x{309}")); 450ok($objVi->eq("o\x{31B}\x{303}", "\x{1A1}\x{303}")); 451ok($objVi->eq("o\x{31B}\x{301}", "\x{1A1}\x{301}")); 452ok($objVi->eq("o\x{31B}\x{341}", "\x{1A1}\x{341}")); 453ok($objVi->eq("o\x{31B}\x{323}", "\x{1A1}\x{323}")); 454ok($objVi->eq("O\x{31B}\x{300}", "\x{1A0}\x{300}")); 455ok($objVi->eq("O\x{31B}\x{340}", "\x{1A0}\x{340}")); 456ok($objVi->eq("O\x{31B}\x{309}", "\x{1A0}\x{309}")); 457ok($objVi->eq("O\x{31B}\x{303}", "\x{1A0}\x{303}")); 458ok($objVi->eq("O\x{31B}\x{301}", "\x{1A0}\x{301}")); 459ok($objVi->eq("O\x{31B}\x{341}", "\x{1A0}\x{341}")); 460ok($objVi->eq("O\x{31B}\x{323}", "\x{1A0}\x{323}")); 461ok($objVi->eq("u\x{31B}\x{300}", "\x{1B0}\x{300}")); 462ok($objVi->eq("u\x{31B}\x{340}", "\x{1B0}\x{340}")); 463ok($objVi->eq("u\x{31B}\x{309}", "\x{1B0}\x{309}")); 464ok($objVi->eq("u\x{31B}\x{303}", "\x{1B0}\x{303}")); 465ok($objVi->eq("u\x{31B}\x{301}", "\x{1B0}\x{301}")); 466ok($objVi->eq("u\x{31B}\x{341}", "\x{1B0}\x{341}")); 467ok($objVi->eq("u\x{31B}\x{323}", "\x{1B0}\x{323}")); 468ok($objVi->eq("U\x{31B}\x{300}", "\x{1AF}\x{300}")); 469ok($objVi->eq("U\x{31B}\x{340}", "\x{1AF}\x{340}")); 470ok($objVi->eq("U\x{31B}\x{309}", "\x{1AF}\x{309}")); 471ok($objVi->eq("U\x{31B}\x{303}", "\x{1AF}\x{303}")); 472ok($objVi->eq("U\x{31B}\x{301}", "\x{1AF}\x{301}")); 473ok($objVi->eq("U\x{31B}\x{341}", "\x{1AF}\x{341}")); 474ok($objVi->eq("U\x{31B}\x{323}", "\x{1AF}\x{323}")); 475 476# 398 477 478$objVi->change(normalization => undef); 479 480ok($objVi->index("a\x{306}\x{323}", "a\x{323}\x{306}"), 0); 481ok($objVi->index("o\x{31B}\x{300}", "o\x{300}\x{31B}"), 0); 482ok($objVi->index("o\x{31B}\x{300}", "o\x{340}\x{31B}"), 0); 483ok($objVi->index("o\x{31B}\x{301}", "o\x{301}\x{31B}"), 0); 484ok($objVi->index("o\x{31B}\x{301}", "o\x{341}\x{31B}"), 0); 485ok($objVi->index("a\x{306}\x{323}", pack('U*', 0x1EA1, 0x306)), 0); 486ok($objVi->index("o\x{31B}\x{300}", pack('U*', 0x00F2, 0x31B)), 0); 487 488ok($objVi->index("A\x{306}\x{323}", "a\x{323}\x{306}"), -1); 489ok($objVi->index("O\x{31B}\x{300}", "o\x{300}\x{31B}"), -1); 490ok($objVi->index("A\x{306}\x{323}", pack('U*', 0x1EA1, 0x306)), -1); 491ok($objVi->index("O\x{31B}\x{300}", pack('U*', 0x00F2, 0x31B)), -1); 492 493# 409 494 495$objVi->change(level => 2); 496 497ok($objVi->index("A\x{306}\x{323}", "a\x{323}\x{306}"), 0); 498ok($objVi->index("O\x{31B}\x{300}", "o\x{300}\x{31B}"), 0); 499ok($objVi->index("O\x{31B}\x{300}", "o\x{340}\x{31B}"), 0); 500ok($objVi->index("O\x{31B}\x{301}", "o\x{301}\x{31B}"), 0); 501ok($objVi->index("O\x{31B}\x{301}", "o\x{341}\x{31B}"), 0); 502ok($objVi->index("A\x{306}\x{323}", pack('U*', 0x1EA1, 0x306)), 0); 503ok($objVi->index("O\x{31B}\x{300}", pack('U*', 0x00F2, 0x31B)), 0); 504 505ok($objVi->index("A\x{306}", "a\x{323}\x{306}"), -1); 506ok($objVi->index("O\x{31B}", "o\x{300}\x{31B}"), -1); 507ok($objVi->index("A\x{306}", pack('U*', 0x1EA1, 0x306)), -1); 508ok($objVi->index("O\x{31B}", pack('U*', 0x00F2, 0x31B)), -1); 509 510# 420 511 512$objVi->change(level => 1); 513 514ok($objVi->index("A\x{306}", "a\x{323}\x{306}"), 0); 515ok($objVi->index("O\x{31B}", "o\x{300}\x{31B}"), 0); 516ok($objVi->index("A\x{306}", pack('U*', 0x1EA1, 0x306)), 0); 517ok($objVi->index("O\x{31B}", pack('U*', 0x00F2, 0x31B)), 0); 518 519# 424 520