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 11BEGIN { 12 use Unicode::Normalize qw(:all); 13 14 unless (exists &Unicode::Normalize::bootstrap or 5.008 <= $]) { 15 print "1..0 # skipped: XSUB, or Perl 5.8.0 or later". 16 " needed for this test\n"; 17 print $@; 18 exit; 19 } 20} 21 22use strict; 23use warnings; 24BEGIN { $| = 1; print "1..17\n"; } 25my $count = 0; 26sub ok { Unicode::Normalize::ok(\$count, @_) } 27 28ok(1); 29 30package tiescalar; 31sub TIESCALAR { 32 my ($class, $instance) = @_; 33 return bless \$instance => $class; 34} 35sub FETCH { return ${$_[0]}++ } 36sub STORE { return ${$_[0]} = $_[1] } 37sub DESTROY { undef ${$_[0]} } 38 39######################### 40 41package main; 42 43tie my $tie1, 'tiescalar', "123"; 44ok(NFD($tie1), 123); 45ok(NFC($tie1), 124); 46ok(NFKD($tie1), 125); 47ok(NFKC($tie1), 126); 48ok(FCD($tie1), 127); 49ok(FCC($tie1), 128); 50 51tie my $tie2, 'tiescalar', "256"; 52ok(normalize('NFD', $tie2), 256); 53ok(normalize('NFC', $tie2), 257); 54ok(normalize('NFKD', $tie2), 258); 55ok(normalize('NFKC', $tie2), 259); 56ok(normalize('FCD', $tie2), 260); 57ok(normalize('FCC', $tie2), 261); 58 59tie my $tie3, 'tiescalar', "315"; 60ok(decompose($tie3), 315); 61ok(reorder($tie3), 316); 62ok(compose($tie3), 317); 63ok(composeContiguous($tie3), 318); 64 65