xref: /openbsd-src/gnu/usr.bin/perl/cpan/Unicode-Collate/t/cjk_ko.t (revision f2da64fbbbf1b03f09f390ab01267c93dfd77c4c)
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..52\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;
31
32ok(1);
33
34#########################
35
36use Unicode::Collate::CJK::Korean;
37
38my $collator = Unicode::Collate->new(
39    normalization => undef,
40    overrideCJK => \&Unicode::Collate::CJK::Korean::weightKorean
41);
42
43sub hex_sort {
44    my @source = map pack('U', hex $_), split ' ', shift;
45    my @sorted = $collator->sort(@source);
46    return join " ", map sprintf("%04X", unpack 'U', $_), @sorted;
47}
48
49# 1
50
51$collator->change(level => 1);
52
53ok($collator->eq("\x{AC00}", "\x{4F3D}"));
54ok($collator->eq("\x{4F3D}", "\x{4F73}"));
55ok($collator->eq("\x{4F73}", "\x{5047}"));
56ok($collator->eq("\x{5047}", "\x{50F9}"));
57ok($collator->eq("\x{50F9}", "\x{52A0}"));
58ok($collator->eq("\x{52A0}", "\x{53EF}"));
59ok($collator->lt("\x{53EF}", "\x{AC01}"));
60
61ok($collator->eq("\x{AC1D}", "\x{5580}"));
62ok($collator->eq("\x{5580}", "\x{5BA2}"));
63ok($collator->lt("\x{5BA2}", "\x{AC31}"));
64
65ok($collator->eq("\x{C77C}", "\x{4E00}"));
66ok($collator->eq("\x{4E00}", "\x{4F5A}"));
67ok($collator->eq("\x{4F5A}", "\x{4F7E}"));
68
69ok($collator->lt("\x{993C}", "\x{D790}"));
70ok($collator->eq("\x{D790}", "\x{8A70}"));
71ok($collator->eq("\x{8A70}", "\x{72B5}"));
72ok($collator->eq("\x{72B5}", "\x{7E88}"));
73ok($collator->eq("\x{7E88}", "\x{896D}"));
74ok($collator->eq("\x{896D}", "\x{9821}"));
75ok($collator->eq("\x{9821}", "\x{9EE0}"));
76
77# Ext.B
78ok($collator->lt("\x{20000}", "\x{20001}"));
79ok($collator->lt("\x{20001}", "\x{20002}"));
80ok($collator->lt("\x{20002}", "\x{20003}"));
81ok($collator->lt("\x{20003}", "\x{20004}"));
82ok($collator->lt("\x{20004}", "\x{20005}"));
83
84# 26
85
86$collator->change(level => 2);
87
88ok($collator->lt("\x{AC00}", "\x{4F3D}"));
89ok($collator->lt("\x{4F3D}", "\x{4F73}"));
90ok($collator->lt("\x{4F73}", "\x{5047}"));
91ok($collator->lt("\x{5047}", "\x{50F9}"));
92ok($collator->lt("\x{50F9}", "\x{52A0}"));
93ok($collator->lt("\x{52A0}", "\x{53EF}"));
94ok($collator->lt("\x{53EF}", "\x{AC01}"));
95
96ok($collator->lt("\x{AC1D}", "\x{5580}"));
97ok($collator->lt("\x{5580}", "\x{5BA2}"));
98ok($collator->lt("\x{5BA2}", "\x{AC31}"));
99
100ok($collator->lt("\x{C77C}", "\x{4E00}"));
101ok($collator->lt("\x{4E00}", "\x{4F5A}"));
102ok($collator->lt("\x{4F5A}", "\x{4F7E}"));
103
104ok($collator->lt("\x{993C}", "\x{D790}"));
105ok($collator->lt("\x{D790}", "\x{8A70}"));
106ok($collator->lt("\x{8A70}", "\x{72B5}"));
107ok($collator->lt("\x{72B5}", "\x{7E88}"));
108ok($collator->lt("\x{7E88}", "\x{896D}"));
109ok($collator->lt("\x{896D}", "\x{9821}"));
110ok($collator->lt("\x{9821}", "\x{9EE0}"));
111
112# Ext.B
113ok($collator->lt("\x{20000}", "\x{20001}"));
114ok($collator->lt("\x{20001}", "\x{20002}"));
115ok($collator->lt("\x{20002}", "\x{20003}"));
116ok($collator->lt("\x{20003}", "\x{20004}"));
117ok($collator->lt("\x{20004}", "\x{20005}"));
118
119# 51
120
121ok(hex_sort('4E00 4E8C 4E09 56DB 4E94 516D 4E03 516B 4E5D 5341'),
122            '4E5D 516D 56DB 4E09 5341 4E94 4E8C 4E00 4E03 516B');
123
124# 52
125