home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl560.zip / t / pragma / utf8.t < prev    next >
Text File  |  2000-03-17  |  4KB  |  254 lines

  1. #!./perl 
  2.  
  3. BEGIN {
  4.     chdir 't' if -d 't';
  5.     unshift @INC, '../lib';
  6.     $ENV{PERL5LIB} = '../lib';
  7.     if ( ord("\t") != 9 ) { # skip on ebcdic platforms
  8.         print "1..0 # Skip utf8 tests on ebcdic platform.\n";
  9.         exit;
  10.     }
  11. }
  12.  
  13. print "1..60\n";
  14.  
  15. my $test = 1;
  16.  
  17. sub ok {
  18.     my ($got,$expect) = @_;
  19.     print "# expected [$expect], got [$got]\nnot " if $got ne $expect;
  20.     print "ok $test\n";
  21. }
  22.  
  23. {
  24.     use utf8;
  25.     $_ = ">\x{263A}<"; 
  26.     s/([\x{80}-\x{10ffff}])/"&#".ord($1).";"/eg; 
  27.     ok $_, '>☺<';
  28.     $test++;
  29.  
  30.     $_ = ">\x{263A}<"; 
  31.     my $rx = "\x{80}-\x{10ffff}";
  32.     s/([$rx])/"&#".ord($1).";"/eg; 
  33.     ok $_, '>☺<';
  34.     $test++;
  35.  
  36.     $_ = ">\x{263A}<"; 
  37.     my $rx = "\\x{80}-\\x{10ffff}";
  38.     s/([$rx])/"&#".ord($1).";"/eg; 
  39.     ok $_, '>☺<';
  40.     $test++;
  41.  
  42.     $_ = "alpha,numeric"; 
  43.     m/([[:alpha:]]+)/; 
  44.     ok $1, 'alpha';
  45.     $test++;
  46.  
  47.     $_ = "alphaNUMERICstring";
  48.     m/([[:^lower:]]+)/; 
  49.     ok $1, 'NUMERIC';
  50.     $test++;
  51.  
  52.     $_ = "alphaNUMERICstring";
  53.     m/(\p{Ll}+)/; 
  54.     ok $1, 'alpha';
  55.     $test++;
  56.  
  57.     $_ = "alphaNUMERICstring"; 
  58.     m/(\p{Lu}+)/; 
  59.     ok $1, 'NUMERIC';
  60.     $test++;
  61.  
  62.     $_ = "alpha,numeric"; 
  63.     m/([\p{IsAlpha}]+)/; 
  64.     ok $1, 'alpha';
  65.     $test++;
  66.  
  67.     $_ = "alphaNUMERICstring";
  68.     m/([^\p{IsLower}]+)/; 
  69.     ok $1, 'NUMERIC';
  70.     $test++;
  71.  
  72.     $_ = "alpha123numeric456"; 
  73.     m/([\p{IsDigit}]+)/; 
  74.     ok $1, '123';
  75.     $test++;
  76.  
  77.     $_ = "alpha123numeric456"; 
  78.     m/([^\p{IsDigit}]+)/; 
  79.     ok $1, 'alpha';
  80.     $test++;
  81.  
  82.     $_ = ",123alpha,456numeric"; 
  83.     m/([\p{IsAlnum}]+)/; 
  84.     ok $1, '123alpha';
  85.     $test++;
  86. }
  87. {
  88.     use utf8;
  89.  
  90.     $_ = "\x{263A}>\x{263A}\x{263A}"; 
  91.  
  92.     ok length, 4;
  93.     $test++;
  94.  
  95.     ok length((m/>(.)/)[0]), 1;
  96.     $test++;
  97.  
  98.     ok length($&), 2;
  99.     $test++;
  100.  
  101.     ok length($'), 1;
  102.     $test++;
  103.  
  104.     ok length($`), 1;
  105.     $test++;
  106.  
  107.     ok length($1), 1;
  108.     $test++;
  109.  
  110.     ok length($tmp=$&), 2;
  111.     $test++;
  112.  
  113.     ok length($tmp=$'), 1;
  114.     $test++;
  115.  
  116.     ok length($tmp=$`), 1;
  117.     $test++;
  118.  
  119.     ok length($tmp=$1), 1;
  120.     $test++;
  121.  
  122.     ok $&, pack("C*", ord(">"), 0342, 0230, 0272);
  123.     $test++;
  124.  
  125.     ok $', pack("C*", 0342, 0230, 0272);
  126.     $test++;
  127.  
  128.     ok $`, pack("C*", 0342, 0230, 0272);
  129.     $test++;
  130.  
  131.     ok $1, pack("C*", 0342, 0230, 0272);
  132.     $test++;
  133.  
  134.     {
  135.     use bytes;
  136.     no utf8;
  137.  
  138.     ok length, 10;
  139.     $test++;
  140.  
  141.         ok length((m/>(.)/)[0]), 1;
  142.         $test++;
  143.  
  144.         ok length($&), 2;
  145.         $test++;
  146.  
  147.         ok length($'), 5;
  148.         $test++;
  149.  
  150.         ok length($`), 3;
  151.         $test++;
  152.  
  153.         ok length($1), 1;
  154.         $test++;
  155.  
  156.     ok $&, pack("C*", ord(">"), 0342);
  157.     $test++;
  158.  
  159.     ok $', pack("C*", 0230, 0272, 0342, 0230, 0272);
  160.     $test++;
  161.  
  162.     ok $`, pack("C*", 0342, 0230, 0272);
  163.     $test++;
  164.  
  165.     ok $1, pack("C*", 0342);
  166.     $test++;
  167.  
  168.     }
  169.  
  170.  
  171.     {
  172.     no utf8;
  173.     $_="\342\230\272>\342\230\272\342\230\272";
  174.     }
  175.  
  176.     ok length, 10;
  177.     $test++;
  178.  
  179.     ok length((m/>(.)/)[0]), 1;
  180.     $test++;
  181.  
  182.     ok length($&), 2;
  183.     $test++;
  184.  
  185.     ok length($'), 1;
  186.     $test++;
  187.  
  188.     ok length($`), 1;
  189.     $test++;
  190.  
  191.     ok length($1), 1;
  192.     $test++;
  193.  
  194.     ok length($tmp=$&), 2;
  195.     $test++;
  196.  
  197.     ok length($tmp=$'), 1;
  198.     $test++;
  199.  
  200.     ok length($tmp=$`), 1;
  201.     $test++;
  202.  
  203.     ok length($tmp=$1), 1;
  204.     $test++;
  205.  
  206.     ok $&, pack("C*", ord(">"), 0342, 0230, 0272);
  207.     $test++;
  208.  
  209.     ok $', pack("C*", 0342, 0230, 0272);
  210.     $test++;
  211.  
  212.     ok $`, pack("C*", 0342, 0230, 0272);
  213.     $test++;
  214.  
  215.     ok $1, pack("C*", 0342, 0230, 0272);
  216.     $test++;
  217.  
  218.     {
  219.     use bytes;
  220.     no utf8;
  221.  
  222.     ok length, 10;
  223.     $test++;
  224.  
  225.         ok length((m/>(.)/)[0]), 1;
  226.         $test++;
  227.  
  228.         ok length($&), 2;
  229.         $test++;
  230.  
  231.         ok length($'), 5;
  232.         $test++;
  233.  
  234.         ok length($`), 3;
  235.         $test++;
  236.  
  237.         ok length($1), 1;
  238.         $test++;
  239.  
  240.     ok $&, pack("C*", ord(">"), 0342);
  241.     $test++;
  242.  
  243.     ok $', pack("C*", 0230, 0272, 0342, 0230, 0272);
  244.     $test++;
  245.  
  246.     ok $`, pack("C*", 0342, 0230, 0272);
  247.     $test++;
  248.  
  249.     ok $1, pack("C*", 0342);
  250.     $test++;
  251.  
  252.     }
  253. }
  254.