1 2BEGIN { 3 if ($ENV{PERL_CORE}) { 4 chdir('t') if -d 't'; 5 @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib); 6 } 7} 8 9######################### 10 11use strict; 12use warnings; 13BEGIN { $| = 1; print "1..37\n"; } 14my $count = 0; 15sub ok { Unicode::Normalize::ok(\$count, @_) } 16 17use Unicode::Normalize qw(:all); 18 19ok(1); 20 21sub answer { defined $_[0] ? $_[0] ? "YES" : "NO" : "MAYBE" } 22 23######################### 24 25ok(NFD ("\x{304C}\x{FF76}"), "\x{304B}\x{3099}\x{FF76}"); 26ok(NFC ("\x{304C}\x{FF76}"), "\x{304C}\x{FF76}"); 27ok(NFKD("\x{304C}\x{FF76}"), "\x{304B}\x{3099}\x{30AB}"); 28ok(NFKC("\x{304C}\x{FF76}"), "\x{304C}\x{30AB}"); 29 30ok(answer(checkNFD ("\x{304C}")), "NO"); 31ok(answer(checkNFC ("\x{304C}")), "YES"); 32ok(answer(checkNFKD("\x{304C}")), "NO"); 33ok(answer(checkNFKC("\x{304C}")), "YES"); 34ok(answer(checkNFD ("\x{FF76}")), "YES"); 35ok(answer(checkNFC ("\x{FF76}")), "YES"); 36ok(answer(checkNFKD("\x{FF76}")), "NO"); 37ok(answer(checkNFKC("\x{FF76}")), "NO"); 38 39ok(normalize('D', "\x{304C}\x{FF76}"), "\x{304B}\x{3099}\x{FF76}"); 40ok(normalize('C', "\x{304C}\x{FF76}"), "\x{304C}\x{FF76}"); 41ok(normalize('KD',"\x{304C}\x{FF76}"), "\x{304B}\x{3099}\x{30AB}"); 42ok(normalize('KC',"\x{304C}\x{FF76}"), "\x{304C}\x{30AB}"); 43 44ok(answer(check('D', "\x{304C}")), "NO"); 45ok(answer(check('C', "\x{304C}")), "YES"); 46ok(answer(check('KD',"\x{304C}")), "NO"); 47ok(answer(check('KC',"\x{304C}")), "YES"); 48ok(answer(check('D' ,"\x{FF76}")), "YES"); 49ok(answer(check('C' ,"\x{FF76}")), "YES"); 50ok(answer(check('KD',"\x{FF76}")), "NO"); 51ok(answer(check('KC',"\x{FF76}")), "NO"); 52 53ok(normalize('NFD', "\x{304C}\x{FF76}"), "\x{304B}\x{3099}\x{FF76}"); 54ok(normalize('NFC', "\x{304C}\x{FF76}"), "\x{304C}\x{FF76}"); 55ok(normalize('NFKD',"\x{304C}\x{FF76}"), "\x{304B}\x{3099}\x{30AB}"); 56ok(normalize('NFKC',"\x{304C}\x{FF76}"), "\x{304C}\x{30AB}"); 57 58ok(answer(check('NFD', "\x{304C}")), "NO"); 59ok(answer(check('NFC', "\x{304C}")), "YES"); 60ok(answer(check('NFKD',"\x{304C}")), "NO"); 61ok(answer(check('NFKC',"\x{304C}")), "YES"); 62ok(answer(check('NFD' ,"\x{FF76}")), "YES"); 63ok(answer(check('NFC' ,"\x{FF76}")), "YES"); 64ok(answer(check('NFKD',"\x{FF76}")), "NO"); 65ok(answer(check('NFKC',"\x{FF76}")), "NO"); 66 67