1BEGIN { 2 if ($ENV{'PERL_CORE'}){ 3 chdir 't'; 4 @INC = '../lib'; 5 } 6 require Config; import Config; 7 if ($Config{'extensions'} !~ /\bEncode\b/) { 8 print "1..0 # Skip: Encode was not built\n"; 9 exit 0; 10 } 11 if (ord("A") == 193) { 12 print "1..0 # Skip: EBCDIC\n"; 13 exit 0; 14 } 15 unless (PerlIO::Layer->find('perlio')){ 16 print "1..0 # Skip: PerlIO required\n"; 17 exit 0; 18 } 19 if ($ENV{PERL_CORE_MINITEST}) { 20 print "1..0 # Skip: no dynamic loading on miniperl, no Encode\n"; 21 exit 0; 22 } 23 $| = 1; 24 require './test.pl'; 25} 26 27plan tests => 72; 28 29use encoding "greek"; # iso 8859-7 30 31# U+0391, \xC1, \301, GREEK CAPITAL LETTER ALPHA 32# U+03B1, \xE1, \341, GREEK SMALL LETTER ALPHA 33 34ok("\xC1" =~ /\xC1/, '\xC1 to /\xC1/'); 35ok("\x{391}" =~ /\xC1/, '\x{391} to /\xC1/'); 36ok("\xC1" =~ /\x{C1}/, '\xC1 to /\x{C1}/'); 37ok("\x{391}" =~ /\x{C1}/, '\x{391} to /\x{C1}/'); 38ok("\xC1" =~ /\301/, '\xC1 to /\301/'); 39ok("\x{391}" =~ /\301/, '\x{391} to /\301/'); 40ok("\xC1" =~ /\x{391}/, '\xC1 to /\x{391}/'); 41ok("\x{391}" =~ /\x{391}/, '\x{391} to /\x{391}/'); 42 43ok("\xC1" =~ /\xC1/i, '\xC1 to /\xC1/i'); 44ok("\xE1" =~ /\xC1/i, '\xE1 to /\xC1/i'); 45ok("\xC1" =~ /\xE1/i, '\xC1 to /\xE1/i'); 46ok("\xE1" =~ /\xE1/i, '\xE1 to /\xE1/i'); 47ok("\xC1" =~ /\x{391}/i, '\xC1 to /\x{391}/i'); 48ok("\xE1" =~ /\x{391}/i, '\xE1 to /\x{391}/i'); 49ok("\xC1" =~ /\x{3B1}/i, '\xC1 to /\x{3B1}/i'); 50ok("\xE1" =~ /\x{3B1}/i, '\xE1 to /\x{3B1}/i'); 51 52ok("\xC1" =~ /[\xC1]/, '\xC1 to /[\xC1]/'); 53ok("\x{391}" =~ /[\xC1]/, '\x{391} to /[\xC1]/'); 54ok("\xC1" =~ /[\x{C1}]/, '\xC1 to /[\x{C1}]/'); 55ok("\x{391}" =~ /[\x{C1}]/, '\x{391} to /[\x{C1}]/'); 56ok("\xC1" =~ /[\301]/, '\xC1 to /[\301]/'); 57ok("\x{391}" =~ /[\301]/, '\x{391} to /[\301]/'); 58ok("\xC1" =~ /[\x{391}]/, '\xC1 to /[\x{391}]/'); 59ok("\x{391}" =~ /[\x{391}]/, '\x{391} to /[\x{391}]/'); 60 61ok("\xC1" =~ /[\xC1]/i, '\xC1 to /[\xC1]/i'); 62ok("\xE1" =~ /[\xC1]/i, '\xE1 to /[\xC1]/i'); 63ok("\xC1" =~ /[\xE1]/i, '\xC1 to /[\xE1]/i'); 64ok("\xE1" =~ /[\xE1]/i, '\xE1 to /[\xE1]/i'); 65ok("\xC1" =~ /[\x{391}]/i, '\xC1 to /[\x{391}]/i'); 66ok("\xE1" =~ /[\x{391}]/i, '\xE1 to /[\x{391}]/i'); 67ok("\xC1" =~ /[\x{3B1}]/i, '\xC1 to /[\x{3B1}]/i'); 68ok("\xE1" =~ /[\x{3B1}]/i, '\xE1 to /[\x{3B1}]/i'); 69 70ok("\xC1" =~ '\xC1', '\xC1 to \'\xC1\''); 71ok("\xC1" =~ '\x{C1}', '\xC1 to \'\x{C1}\''); 72ok("\xC1" =~ '\301', '\xC1 to \'\301\''); 73ok("\xC1" =~ '\x{391}', '\xC1 to \'\x{391}\''); 74ok("\xC1" =~ '[\xC1]', '\xC1 to \'[\xC1]\''); 75ok("\xC1" =~ '[\x{C1}]', '\xC1 to \'[\x{C1}]\''); 76ok("\xC1" =~ '[\301]', '\xC1 to \'[\301]\''); 77ok("\xC1" =~ '[\x{391}]', '\xC1 to \'[\x{391}]\''); 78 79ok("\xC1" =~ /�/, '\xC1 to /<ALPHA>/'); 80ok("\xE1" !~ /�/, '\xE1 to /<ALPHA>/'); 81ok("\xC1" =~ /�/i, '\xC1 to /<ALPHA>/i'); 82ok("\xE1" =~ /�/i, '\xE1 to /<ALPHA>/i'); 83ok("\xC1" =~ /[�]/, '\xC1 to /[<ALPHA>]/'); 84ok("\xE1" !~ /[�]/, '\xE1 to /[<ALPHA>]/'); 85ok("\xC1" =~ /[�]/i, '\xC1 to /[<ALPHA>]/i'); 86ok("\xE1" =~ /[�]/i, '\xE1 to /[<ALPHA>]/i'); 87 88ok("\xC1\xC1" =~ /�\xC1/, '\xC1\xC1 to /<ALPHA>\xC1/'); 89ok("\xC1\xC1" =~ /\xC1�/, '\xC1\xC1 to /\xC1<ALPHA>/'); 90ok("\xC1\xC1" =~ /�\xC1/i, '\xC1\xC1 to /<ALPHA>\xC1/i'); 91ok("\xC1\xC1" =~ /\xC1�/i, '\xC1\xC1 to /\xC1<ALPHA>/i'); 92ok("\xC1\xE1" =~ /�\xC1/i, '\xC1\xE1 to /<ALPHA>\xC1/i'); 93ok("\xC1\xE1" =~ /\xC1�/i, '\xC1\xE1 to /\xC1<ALPHA>/i'); 94ok("\xE1\xE1" =~ /�\xC1/i, '\xE1\xE1 to /<ALPHA>\xC1/i'); 95ok("\xE1\xE1" =~ /\xC1�/i, '\xE1\xE1 to /\xC1<ALPHA>/i'); 96 97# U+038A, \xBA, GREEK CAPITAL LETTER IOTA WITH TONOS 98# U+03AF, \xDF, GREEK SMALL LETTER IOTA WITH TONOS 99 100ok("\x{38A}" =~ /\xBA/, '\x{38A} to /\xBA/'); 101ok("\x{38A}" !~ /\xDF/, '\x{38A} to /\xDF/'); 102ok("\x{38A}" =~ /\xBA/i, '\x{38A} to /\xBA/i'); 103ok("\x{38A}" =~ /\xDF/i, '\x{38A} to /\xDF/i'); 104ok("\x{38A}" =~ /[\xBA]/, '\x{38A} to /[\xBA]/'); 105ok("\x{38A}" !~ /[\xDF]/, '\x{38A} to /[\xDF]/'); 106ok("\x{38A}" =~ /[\xBA]/i, '\x{38A} to /[\xBA]/i'); 107ok("\x{38A}" =~ /[\xDF]/i, '\x{38A} to /[\xDF]/i'); 108 109# \xDF is not LATIN SMALL LETTER SHARP S 110 111ok("SS" !~ /\xDF/i, 'SS to /\xDF/i'); 112ok("Ss" !~ /\xDF/i, 'Ss to /\xDF/i'); 113ok("sS" !~ /\xDF/i, 'sS to /\xDF/i'); 114ok("ss" !~ /\xDF/i, 'ss to /\xDF/i'); 115ok("SS" !~ /�/i, 'SS to /<iota-tonos>/i'); 116ok("Ss" !~ /�/i, 'Ss to /<iota-tonos>/i'); 117ok("sS" !~ /�/i, 'sS to /<iota-tonos>/i'); 118ok("ss" !~ /�/i, 'ss to /<iota-tonos>/i'); 119 120