This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Updated Unicode-Collate to CPAN version 0.76
[perl5.git] / cpan / Unicode-Collate / t / loc_nn.t
1
2 BEGIN {
3     unless ("A" eq pack('U', 0x41)) {
4         print "1..0 # Unicode::Collate " .
5             "cannot stringify a Unicode code point\n";
6         exit 0;
7     }
8     if ($ENV{PERL_CORE}) {
9         chdir('t') if -d 't';
10         @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
11     }
12 }
13
14 use Test;
15 BEGIN { plan tests => 95 };
16
17 use strict;
18 use warnings;
19 use Unicode::Collate::Locale;
20
21 ok(1);
22
23 #########################
24
25 my $eth  = pack 'U', 0xF0;
26 my $ETH  = pack 'U', 0xD0;
27 my $thrn = pack 'U', 0xFE;
28 my $THRN = pack 'U', 0xDE;
29 my $uuml = pack 'U', 0xFC;
30 my $Uuml = pack 'U', 0xDC;
31 my $ae   = pack 'U', 0xE6;
32 my $AE   = pack 'U', 0xC6;
33 my $auml = pack 'U', 0xE4;
34 my $Auml = pack 'U', 0xC4;
35 my $ostk = pack 'U', 0xF8;
36 my $Ostk = pack 'U', 0xD8;
37 my $ouml = pack 'U', 0xF6;
38 my $Ouml = pack 'U', 0xD6;
39 my $arng = pack 'U', 0xE5;
40 my $Arng = pack 'U', 0xC5;
41
42 my $objNn = Unicode::Collate::Locale->
43     new(locale => 'NN', normalization => undef);
44
45 ok($objNn->getlocale, 'nn');
46
47 $objNn->change(level => 1);
48
49 ok($objNn->lt('z', $ae));
50 ok($objNn->lt($ae, $ostk));
51 ok($objNn->lt($ostk, $arng));
52 ok($objNn->lt($arng, "\x{1C0}"));
53
54 # 6
55
56 ok($objNn->eq('d', "\x{111}"));
57 ok($objNn->eq("\x{111}", $eth));
58 ok($objNn->eq('y', $uuml));
59 ok($objNn->eq($uuml, "\x{171}"));
60 ok($objNn->eq($ae, $auml));
61 ok($objNn->eq($auml, "\x{119}"));
62 ok($objNn->eq($ostk, $ouml));
63 ok($objNn->eq($ouml, "\x{151}"));
64 ok($objNn->eq("\x{151}", "\x{153}"));
65
66 # 15
67
68 $objNn->change(level => 2);
69
70 ok($objNn->lt('d', "\x{111}"));
71 ok($objNn->lt("\x{111}", $eth));
72 ok($objNn->lt('y', $uuml));
73 ok($objNn->lt($uuml, "\x{171}"));
74 ok($objNn->lt($ae, $auml));
75 ok($objNn->lt($auml, "\x{119}"));
76 ok($objNn->lt($ostk, $ouml));
77 ok($objNn->lt($ouml, "\x{151}"));
78 ok($objNn->lt("\x{151}", "\x{153}"));
79
80 # 24
81
82 ok($objNn->eq("\x{111}", "\x{110}"));
83 ok($objNn->eq($eth,  $ETH));
84 ok($objNn->eq('th',  $thrn));
85 ok($objNn->eq($thrn, 'TH'));
86 ok($objNn->eq('TH',  $THRN));
87 ok($objNn->eq($uuml, $Uuml));
88 ok($objNn->eq("\x{171}", "\x{170}"));
89 ok($objNn->eq($ae,   $AE));
90 ok($objNn->eq($AE, "\x{1D2D}"));
91 ok($objNn->eq($auml, $Auml));
92 ok($objNn->eq("\x{119}", "\x{118}"));
93 ok($objNn->eq($ostk, $Ostk));
94 ok($objNn->eq($ouml, $Ouml));
95 ok($objNn->eq("\x{151}", "\x{150}"));
96 ok($objNn->eq("\x{153}", "\x{152}"));
97 ok($objNn->eq($arng, $Arng));
98
99 # 40
100
101 $objNn->change(level => 3);
102
103 ok($objNn->lt("\x{111}", "\x{110}"));
104 ok($objNn->lt($eth,  $ETH));
105 ok($objNn->lt('th',  $thrn));
106 ok($objNn->lt($thrn, 'TH'));
107 ok($objNn->lt('TH',  $THRN));
108 ok($objNn->lt($uuml, $Uuml));
109 ok($objNn->lt("\x{171}", "\x{170}"));
110 ok($objNn->lt($ae,   $AE));
111 ok($objNn->lt($AE, "\x{1D2D}"));
112 ok($objNn->lt($auml, $Auml));
113 ok($objNn->lt("\x{119}", "\x{118}"));
114 ok($objNn->lt($ostk, $Ostk));
115 ok($objNn->lt($ouml, $Ouml));
116 ok($objNn->lt("\x{151}", "\x{150}"));
117 ok($objNn->lt("\x{153}", "\x{152}"));
118 ok($objNn->lt($arng, $Arng));
119
120 # 56
121
122 ok($objNn->eq("d\x{335}", "\x{111}"));
123 ok($objNn->eq("D\x{335}", "\x{110}"));
124 ok($objNn->eq("u\x{308}", $uuml));
125 ok($objNn->eq("U\x{308}", $Uuml));
126 ok($objNn->eq("u\x{30B}", "\x{171}"));
127 ok($objNn->eq("U\x{30B}", "\x{170}"));
128 ok($objNn->eq("a\x{308}", $auml));
129 ok($objNn->eq("A\x{308}", $Auml));
130 ok($objNn->eq("e\x{328}", "\x{119}"));
131 ok($objNn->eq("E\x{328}", "\x{118}"));
132 ok($objNn->eq("o\x{338}", $ostk));
133 ok($objNn->eq("O\x{338}", $Ostk));
134 ok($objNn->eq("o\x{308}", $ouml));
135 ok($objNn->eq("O\x{308}", $Ouml));
136 ok($objNn->eq("o\x{30B}", "\x{151}"));
137 ok($objNn->eq("O\x{30B}", "\x{150}"));
138 ok($objNn->eq("a\x{30A}", $arng));
139 ok($objNn->eq("A\x{30A}", $Arng));
140
141 # 74
142
143 ok($objNn->eq("u\x{308}\x{300}", "\x{1DC}"));
144 ok($objNn->eq("U\x{308}\x{300}", "\x{1DB}"));
145 ok($objNn->eq("u\x{308}\x{301}", "\x{1D8}"));
146 ok($objNn->eq("U\x{308}\x{301}", "\x{1D7}"));
147 ok($objNn->eq("u\x{308}\x{304}", "\x{1D6}"));
148 ok($objNn->eq("U\x{308}\x{304}", "\x{1D5}"));
149 ok($objNn->eq("u\x{308}\x{30C}", "\x{1DA}"));
150 ok($objNn->eq("U\x{308}\x{30C}", "\x{1D9}"));
151 ok($objNn->eq("\x{1FD}", "$ae\x{301}"));
152 ok($objNn->eq("\x{1FC}", "$AE\x{301}"));
153 ok($objNn->eq("\x{1E3}", "$ae\x{304}"));
154 ok($objNn->eq("\x{1E2}", "$AE\x{304}"));
155 ok($objNn->eq("a\x{308}\x{304}", "\x{1DF}"));
156 ok($objNn->eq("A\x{308}\x{304}", "\x{1DE}"));
157 ok($objNn->eq("o\x{338}\x{301}", "\x{1FF}"));
158 ok($objNn->eq("O\x{338}\x{301}", "\x{1FE}"));
159 ok($objNn->eq("o\x{308}\x{304}", "\x{22B}"));
160 ok($objNn->eq("O\x{308}\x{304}", "\x{22A}"));
161 ok($objNn->eq("A\x{30A}", "\x{212B}"));
162 ok($objNn->eq("a\x{30A}\x{301}", "\x{1FB}"));
163 ok($objNn->eq("A\x{30A}\x{301}", "\x{1FA}"));
164
165 # 95