1898184e3Ssthen
2898184e3SsthenBEGIN {
3898184e3Ssthen    if ($ENV{PERL_CORE}) {
4898184e3Ssthen	chdir('t') if -d 't';
5898184e3Ssthen	@INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
6898184e3Ssthen    }
7898184e3Ssthen}
8898184e3Ssthen
9898184e3Ssthenuse strict;
10898184e3Ssthenuse warnings;
11898184e3SsthenBEGIN { $| = 1; print "1..40\n"; }
12898184e3Ssthenmy $count = 0;
13898184e3Ssthensub ok ($;$) {
14898184e3Ssthen    my $p = my $r = shift;
15898184e3Ssthen    if (@_) {
16898184e3Ssthen	my $x = shift;
17898184e3Ssthen	$p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
18898184e3Ssthen    }
19898184e3Ssthen    print $p ? "ok" : "not ok", ' ', ++$count, "\n";
20898184e3Ssthen}
21898184e3Ssthen
22898184e3Ssthenuse Unicode::Collate::Locale;
23898184e3Ssthen
24898184e3Ssthenok(1);
25898184e3Ssthen
26*256a93a4Safresh1sub _pack_U   { Unicode::Collate::pack_U(@_) }
27*256a93a4Safresh1sub _unpack_U { Unicode::Collate::unpack_U(@_) }
28*256a93a4Safresh1
29898184e3Ssthen#########################
30898184e3Ssthen
31898184e3Ssthenmy $objNso = Unicode::Collate::Locale->
32898184e3Ssthen    new(locale => 'NSO', normalization => undef);
33898184e3Ssthen
34898184e3Ssthenok($objNso->getlocale, 'nso');
35898184e3Ssthen
36898184e3Ssthen$objNso->change(level => 1);
37898184e3Ssthen
38898184e3Ssthenok($objNso->lt("e", "e\x{302}"));
39898184e3Ssthenok($objNso->gt("f", "e\x{302}"));
40898184e3Ssthenok($objNso->lt("o", "o\x{302}"));
41898184e3Ssthenok($objNso->gt("p", "o\x{302}"));
42898184e3Ssthenok($objNso->lt("s", "s\x{30C}"));
43898184e3Ssthenok($objNso->gt("t", "s\x{30C}"));
44898184e3Ssthen
45898184e3Ssthen# 8
46898184e3Ssthen
47898184e3Ssthen$objNso->change(level => 2);
48898184e3Ssthen
49898184e3Ssthenok($objNso->eq("e\x{302}", "E\x{302}"));
50898184e3Ssthenok($objNso->eq("o\x{302}", "O\x{302}"));
51898184e3Ssthenok($objNso->eq("s\x{30C}", "S\x{30C}"));
52898184e3Ssthen
53898184e3Ssthen$objNso->change(level => 3);
54898184e3Ssthen
55898184e3Ssthenok($objNso->lt("e\x{302}", "E\x{302}"));
56898184e3Ssthenok($objNso->lt("o\x{302}", "O\x{302}"));
57898184e3Ssthenok($objNso->lt("s\x{30C}", "S\x{30C}"));
58898184e3Ssthen
59898184e3Ssthen# 14
60898184e3Ssthen
61*256a93a4Safresh1ok($objNso->eq("e\x{302}", _pack_U(0xEA)));
62*256a93a4Safresh1ok($objNso->eq("E\x{302}", _pack_U(0xCA)));
63*256a93a4Safresh1ok($objNso->eq("o\x{302}", _pack_U(0xF4)));
64*256a93a4Safresh1ok($objNso->eq("O\x{302}", _pack_U(0xD4)));
65898184e3Ssthenok($objNso->eq("s\x{30C}", "\x{161}"));
66898184e3Ssthenok($objNso->eq("S\x{30C}", "\x{160}"));
67898184e3Ssthen
68898184e3Ssthen# 20
69898184e3Ssthen
70898184e3Ssthenok($objNso->eq("e\x{302}\x{300}", "\x{1EC1}"));
71898184e3Ssthenok($objNso->eq("E\x{302}\x{300}", "\x{1EC0}"));
72898184e3Ssthenok($objNso->eq("e\x{302}\x{301}", "\x{1EBF}"));
73898184e3Ssthenok($objNso->eq("E\x{302}\x{301}", "\x{1EBE}"));
74898184e3Ssthenok($objNso->eq("e\x{302}\x{303}", "\x{1EC5}"));
75898184e3Ssthenok($objNso->eq("E\x{302}\x{303}", "\x{1EC4}"));
76898184e3Ssthenok($objNso->eq("e\x{302}\x{309}", "\x{1EC3}"));
77898184e3Ssthenok($objNso->eq("E\x{302}\x{309}", "\x{1EC2}"));
78898184e3Ssthenok($objNso->eq("e\x{302}\x{323}", "\x{1EC7}"));
79898184e3Ssthenok($objNso->eq("E\x{302}\x{323}", "\x{1EC6}"));
80898184e3Ssthen
81898184e3Ssthenok($objNso->eq("o\x{302}\x{300}", "\x{1ED3}"));
82898184e3Ssthenok($objNso->eq("O\x{302}\x{300}", "\x{1ED2}"));
83898184e3Ssthenok($objNso->eq("o\x{302}\x{301}", "\x{1ED1}"));
84898184e3Ssthenok($objNso->eq("O\x{302}\x{301}", "\x{1ED0}"));
85898184e3Ssthenok($objNso->eq("o\x{302}\x{303}", "\x{1ED7}"));
86898184e3Ssthenok($objNso->eq("O\x{302}\x{303}", "\x{1ED6}"));
87898184e3Ssthenok($objNso->eq("o\x{302}\x{309}", "\x{1ED5}"));
88898184e3Ssthenok($objNso->eq("O\x{302}\x{309}", "\x{1ED4}"));
89898184e3Ssthenok($objNso->eq("o\x{302}\x{323}", "\x{1ED9}"));
90898184e3Ssthenok($objNso->eq("O\x{302}\x{323}", "\x{1ED8}"));
91898184e3Ssthen
92898184e3Ssthen# 40
93