xref: /openbsd-src/gnu/usr.bin/perl/dist/Unicode-Normalize/t/fcdc.t (revision 256a93a44f36679bee503f12e49566c2183f6181)
15759b3d2Safresh1
25759b3d2Safresh1BEGIN {
35759b3d2Safresh1    if ($ENV{PERL_CORE}) {
45759b3d2Safresh1        chdir('t') if -d 't';
55759b3d2Safresh1        @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
65759b3d2Safresh1    }
75759b3d2Safresh1}
85759b3d2Safresh1
95759b3d2Safresh1#########################
105759b3d2Safresh1
115759b3d2Safresh1use strict;
125759b3d2Safresh1use warnings;
135759b3d2Safresh1BEGIN { $| = 1; print "1..70\n"; }
145759b3d2Safresh1my $count = 0;
15*256a93a4Safresh1sub ok { Unicode::Normalize::ok(\$count, @_) }
165759b3d2Safresh1
175759b3d2Safresh1use Unicode::Normalize qw(:all);
185759b3d2Safresh1
195759b3d2Safresh1ok(1);
205759b3d2Safresh1
21*256a93a4Safresh1sub _pack_U { Unicode::Normalize::dot_t_pack_U(@_) }
225759b3d2Safresh1sub hexU { _pack_U map hex, split ' ', shift }
235759b3d2Safresh1sub answer { defined $_[0] ? $_[0] ? "YES" : "NO" : "MAYBE" }
245759b3d2Safresh1
255759b3d2Safresh1#########################
265759b3d2Safresh1
275759b3d2Safresh1ok(FCD(''), "");
285759b3d2Safresh1ok(FCC(''), "");
295759b3d2Safresh1ok(FCD('A'), "A");
305759b3d2Safresh1ok(FCC('A'), "A");
315759b3d2Safresh1
325759b3d2Safresh1ok(normalize('FCD', ""), "");
335759b3d2Safresh1ok(normalize('FCC', ""), "");
345759b3d2Safresh1ok(normalize('FCC', "A"), "A");
355759b3d2Safresh1ok(normalize('FCD', "A"), "A");
365759b3d2Safresh1
375759b3d2Safresh1# 9
385759b3d2Safresh1
395759b3d2Safresh1# if checkFCD is YES, the return value from FCD should be same as the original
405759b3d2Safresh1ok(FCD(hexU("00C5")),		hexU("00C5"));		# A with ring above
415759b3d2Safresh1ok(FCD(hexU("0041 030A")),	hexU("0041 030A"));	# A+ring
425759b3d2Safresh1ok(FCD(hexU("0041 0327 030A")), hexU("0041 0327 030A")); # A+cedilla+ring
435759b3d2Safresh1ok(FCD(hexU("AC01 1100 1161")), hexU("AC01 1100 1161")); # hangul
445759b3d2Safresh1ok(FCD(hexU("212B F900")),	hexU("212B F900"));	# compat
455759b3d2Safresh1
465759b3d2Safresh1ok(normalize('FCD', hexU("00C5")),		hexU("00C5"));
475759b3d2Safresh1ok(normalize('FCD', hexU("0041 030A")),		hexU("0041 030A"));
485759b3d2Safresh1ok(normalize('FCD', hexU("0041 0327 030A")),	hexU("0041 0327 030A"));
495759b3d2Safresh1ok(normalize('FCD', hexU("AC01 1100 1161")),	hexU("AC01 1100 1161"));
505759b3d2Safresh1ok(normalize('FCD', hexU("212B F900")),		hexU("212B F900"));
515759b3d2Safresh1
525759b3d2Safresh1# 19
535759b3d2Safresh1
545759b3d2Safresh1# if checkFCD is MAYBE or NO, FCD returns NFD (this behavior isn't documented)
555759b3d2Safresh1ok(FCD(hexU("00C5 0327")),	hexU("0041 0327 030A"));
565759b3d2Safresh1ok(FCD(hexU("0041 030A 0327")),	hexU("0041 0327 030A"));
575759b3d2Safresh1ok(FCD(hexU("00C5 0327")),	NFD(hexU("00C5 0327")));
585759b3d2Safresh1ok(FCD(hexU("0041 030A 0327")),	NFD(hexU("0041 030A 0327")));
595759b3d2Safresh1
605759b3d2Safresh1ok(normalize('FCD', hexU("00C5 0327")),		hexU("0041 0327 030A"));
615759b3d2Safresh1ok(normalize('FCD', hexU("0041 030A 0327")),	hexU("0041 0327 030A"));
625759b3d2Safresh1ok(normalize('FCD', hexU("00C5 0327")),		NFD(hexU("00C5 0327")));
635759b3d2Safresh1ok(normalize('FCD', hexU("0041 030A 0327")),	NFD(hexU("0041 030A 0327")));
645759b3d2Safresh1
655759b3d2Safresh1# 27
665759b3d2Safresh1
675759b3d2Safresh1ok(answer(checkFCD('')), 'YES');
685759b3d2Safresh1ok(answer(checkFCD('A')), 'YES');
695759b3d2Safresh1ok(answer(checkFCD("\x{030A}")), 'YES');  # 030A;COMBINING RING ABOVE
705759b3d2Safresh1ok(answer(checkFCD("\x{0327}")), 'YES');  # 0327;COMBINING CEDILLA
715759b3d2Safresh1ok(answer(checkFCD(_pack_U(0x00C5))), 'YES'); # A with ring above
725759b3d2Safresh1ok(answer(checkFCD(hexU("0041 030A"))), 'YES'); # A+ring
735759b3d2Safresh1ok(answer(checkFCD(hexU("0041 0327 030A"))), 'YES'); # A+cedilla+ring
745759b3d2Safresh1ok(answer(checkFCD(hexU("0041 030A 0327"))), 'NO');  # A+ring+cedilla
755759b3d2Safresh1ok(answer(checkFCD(hexU("00C5 0327"))), 'NO');    # A-ring+cedilla
765759b3d2Safresh1ok(answer(checkNFC(hexU("00C5 0327"))), 'MAYBE'); # NFC: A-ring+cedilla
775759b3d2Safresh1ok(answer(check("FCD", hexU("00C5 0327"))), 'NO');
785759b3d2Safresh1ok(answer(check("NFC", hexU("00C5 0327"))), 'MAYBE');
795759b3d2Safresh1ok(answer(checkFCD("\x{AC01}\x{1100}\x{1161}")), 'YES'); # hangul
805759b3d2Safresh1ok(answer(checkFCD("\x{212B}\x{F900}")), 'YES'); # compat
815759b3d2Safresh1
825759b3d2Safresh1ok(answer(checkFCD(hexU("1EA7 05AE 0315 0062"))), "NO");
835759b3d2Safresh1ok(answer(checkFCC(hexU("1EA7 05AE 0315 0062"))), "NO");
845759b3d2Safresh1ok(answer(check('FCD', hexU("1EA7 05AE 0315 0062"))), "NO");
855759b3d2Safresh1ok(answer(check('FCC', hexU("1EA7 05AE 0315 0062"))), "NO");
865759b3d2Safresh1
875759b3d2Safresh1# 45
885759b3d2Safresh1
895759b3d2Safresh1ok(FCC(hexU("00C5 0327")), hexU("0041 0327 030A"));
905759b3d2Safresh1ok(FCC(hexU("0045 0304 0300")), "\x{1E14}");
915759b3d2Safresh1ok(FCC("\x{1100}\x{1161}\x{1100}\x{1173}\x{11AF}"), "\x{AC00}\x{AE00}");
925759b3d2Safresh1ok(normalize('FCC', hexU("00C5 0327")), hexU("0041 0327 030A"));
935759b3d2Safresh1ok(normalize('FCC', hexU("0045 0304 0300")), "\x{1E14}");
945759b3d2Safresh1ok(normalize('FCC', hexU("1100 1161 1100 1173 11AF")), "\x{AC00}\x{AE00}");
955759b3d2Safresh1
965759b3d2Safresh1ok(FCC("\x{0B47}\x{0300}\x{0B3E}"), "\x{0B47}\x{0300}\x{0B3E}");
975759b3d2Safresh1ok(FCC("\x{1100}\x{0300}\x{1161}"), "\x{1100}\x{0300}\x{1161}");
985759b3d2Safresh1ok(FCC("\x{0B47}\x{0B3E}\x{0300}"), "\x{0B4B}\x{0300}");
995759b3d2Safresh1ok(FCC("\x{1100}\x{1161}\x{0300}"), "\x{AC00}\x{0300}");
1005759b3d2Safresh1ok(FCC("\x{0B47}\x{300}\x{0B3E}\x{327}"), "\x{0B47}\x{300}\x{0B3E}\x{327}");
1015759b3d2Safresh1ok(FCC("\x{1100}\x{300}\x{1161}\x{327}"), "\x{1100}\x{300}\x{1161}\x{327}");
1025759b3d2Safresh1
1035759b3d2Safresh1# 57
1045759b3d2Safresh1
1055759b3d2Safresh1ok(answer(checkFCC('')), 'YES');
1065759b3d2Safresh1ok(answer(checkFCC('A')), 'YES');
1075759b3d2Safresh1ok(answer(checkFCC("\x{030A}")), 'MAYBE');  # 030A;COMBINING RING ABOVE
1085759b3d2Safresh1ok(answer(checkFCC("\x{0327}")), 'MAYBE'); # 0327;COMBINING CEDILLA
1095759b3d2Safresh1ok(answer(checkFCC(hexU("00C5"))), 'YES'); # A with ring above
1105759b3d2Safresh1ok(answer(checkFCC(hexU("0041 030A"))), 'MAYBE'); # A+ring
1115759b3d2Safresh1ok(answer(checkFCC(hexU("0041 0327 030A"))), 'MAYBE'); # A+cedilla+ring
1125759b3d2Safresh1ok(answer(checkFCC(hexU("0041 030A 0327"))), 'NO');    # A+ring+cedilla
1135759b3d2Safresh1ok(answer(checkFCC(hexU("00C5 0327"))), 'NO'); # A-ring+cedilla
1145759b3d2Safresh1ok(answer(checkFCC("\x{AC01}\x{1100}\x{1161}")), 'MAYBE'); # hangul
1155759b3d2Safresh1ok(answer(checkFCC("\x{212B}\x{F900}")), 'NO'); # compat
1165759b3d2Safresh1ok(answer(checkFCC("\x{212B}\x{0327}")), 'NO'); # compat
1175759b3d2Safresh1ok(answer(checkFCC("\x{0327}\x{212B}")), 'NO'); # compat
1185759b3d2Safresh1
1195759b3d2Safresh1# 70
1205759b3d2Safresh1
121