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