xref: /openbsd-src/gnu/usr.bin/perl/dist/Unicode-Normalize/t/partial1.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
95759b3d2Safresh1BEGIN {
105759b3d2Safresh1    unless (5.006001 <= $]) {
115759b3d2Safresh1	print "1..0 # skipped: Perl 5.6.1 or later".
125759b3d2Safresh1		" needed for this test\n";
135759b3d2Safresh1	exit;
145759b3d2Safresh1    }
155759b3d2Safresh1}
165759b3d2Safresh1
175759b3d2Safresh1#########################
185759b3d2Safresh1
195759b3d2Safresh1use strict;
205759b3d2Safresh1use warnings;
215759b3d2Safresh1BEGIN { $| = 1; print "1..26\n"; }
225759b3d2Safresh1my $count = 0;
23*256a93a4Safresh1sub ok { Unicode::Normalize::ok(\$count, @_) }
245759b3d2Safresh1
255759b3d2Safresh1use Unicode::Normalize qw(:all);
265759b3d2Safresh1
275759b3d2Safresh1ok(1);
285759b3d2Safresh1
295759b3d2Safresh1sub _pack_U   { Unicode::Normalize::pack_U(@_) }
305759b3d2Safresh1sub _unpack_U { Unicode::Normalize::unpack_U(@_) }
315759b3d2Safresh1
325759b3d2Safresh1#########################
335759b3d2Safresh1
345759b3d2Safresh1sub arraynorm {
355759b3d2Safresh1    my $form   = shift;
365759b3d2Safresh1    my @string = @_;
375759b3d2Safresh1    my $result = "";
385759b3d2Safresh1    my $unproc = "";
395759b3d2Safresh1    foreach my $str (@string) {
405759b3d2Safresh1        $unproc .= $str;
415759b3d2Safresh1        $result .= $form eq 'NFC'  ? NFC_partial ($unproc) :
425759b3d2Safresh1		   $form eq 'NFD'  ? NFD_partial ($unproc) :
435759b3d2Safresh1		   $form eq 'NFKC' ? NFKC_partial($unproc) :
445759b3d2Safresh1		   $form eq 'NFKD' ? NFKD_partial($unproc) :
455759b3d2Safresh1		   undef;
465759b3d2Safresh1    }
475759b3d2Safresh1    $result .= $unproc;
485759b3d2Safresh1    return $result;
495759b3d2Safresh1}
505759b3d2Safresh1
515759b3d2Safresh1my $strD = "\x{3C9}\x{301}\x{1100}\x{1161}\x{11A8}\x{1100}\x{1161}\x{11AA}";
525759b3d2Safresh1my $strC = "\x{3CE}\x{AC01}\x{AC03}";
535759b3d2Safresh1my @str1 = (substr($strD,0,3), substr($strD,3,4), substr($strD,7));
545759b3d2Safresh1my @str2 = (substr($strD,0,1), substr($strD,1,3), substr($strD,4));
555759b3d2Safresh1ok($strC eq NFC($strD));
565759b3d2Safresh1ok($strD eq join('', @str1));
575759b3d2Safresh1ok($strC eq arraynorm('NFC', @str1));
585759b3d2Safresh1ok($strD eq join('', @str2));
595759b3d2Safresh1ok($strC eq arraynorm('NFC', @str2));
605759b3d2Safresh1
615759b3d2Safresh1my @strX = ("\x{300}\x{AC00}", "\x{11A8}");
625759b3d2Safresh1my $strX =  "\x{300}\x{AC01}";
635759b3d2Safresh1ok($strX eq NFC(join('', @strX)));
645759b3d2Safresh1ok($strX eq arraynorm('NFC', @strX));
655759b3d2Safresh1ok($strX eq NFKC(join('', @strX)));
665759b3d2Safresh1ok($strX eq arraynorm('NFKC', @strX));
675759b3d2Safresh1
685759b3d2Safresh1my @strY = ("\x{304B}\x{0308}", "\x{0323}\x{3099}");
695759b3d2Safresh1my $strY = ("\x{304C}\x{0323}\x{0308}");
705759b3d2Safresh1ok($strY eq NFC(join('', @strY)));
715759b3d2Safresh1ok($strY eq arraynorm('NFC', @strY));
725759b3d2Safresh1ok($strY eq NFKC(join('', @strY)));
735759b3d2Safresh1ok($strY eq arraynorm('NFKC', @strY));
745759b3d2Safresh1
755759b3d2Safresh1my @strZ = ("\x{304B}\x{0308}", "\x{0323}", "\x{3099}");
765759b3d2Safresh1my $strZ = ("\x{304B}\x{3099}\x{0323}\x{0308}");
775759b3d2Safresh1ok($strZ eq NFD(join('', @strZ)));
785759b3d2Safresh1ok($strZ eq arraynorm('NFD', @strZ));
795759b3d2Safresh1ok($strZ eq NFKD(join('', @strZ)));
805759b3d2Safresh1ok($strZ eq arraynorm('NFKD', @strZ));
815759b3d2Safresh1
825759b3d2Safresh1# 18
835759b3d2Safresh1
845759b3d2Safresh1# must modify the source
855759b3d2Safresh1my $sNFD = "\x{FA19}";
865759b3d2Safresh1ok(NFD_partial($sNFD), "");
875759b3d2Safresh1ok($sNFD, "\x{795E}");
885759b3d2Safresh1
895759b3d2Safresh1my $sNFC = "\x{FA1B}";
905759b3d2Safresh1ok(NFC_partial($sNFC), "");
915759b3d2Safresh1ok($sNFC, "\x{798F}");
925759b3d2Safresh1
935759b3d2Safresh1my $sNFKD = "\x{FA1E}";
945759b3d2Safresh1ok(NFKD_partial($sNFKD), "");
955759b3d2Safresh1ok($sNFKD, "\x{7FBD}");
965759b3d2Safresh1
975759b3d2Safresh1my $sNFKC = "\x{FA26}";
985759b3d2Safresh1ok(NFKC_partial($sNFKC), "");
995759b3d2Safresh1ok($sNFKC, "\x{90FD}");
1005759b3d2Safresh1
1015759b3d2Safresh1# 26
1025759b3d2Safresh1
103