1#!./perl -w 2 3BEGIN { 4 require './test.pl'; 5 skip_all_without_dynamic_extension('Encode'); 6 skip_all("EBCDIC") if $::IS_EBCDIC; 7 skip_all_without_perlio(); 8} 9 10plan tests => 94; 11 12no warnings 'deprecated'; 13use encoding "latin2"; # iso 8859-2 14 15# U+00C1, \xC1, \301, LATIN CAPITAL LETTER A WITH ACUTE 16# U+0102, \xC3, \402, LATIN CAPITAL LETTER A WITH BREVE 17# U+00E1, \xE1, \303, LATIN SMALL LETTER A WITH ACUTE 18# U+0103, \xE3, \403, LATIN SMALL LETTER A WITH BREVE 19 20ok("\xC1" =~ /\xC1/, '\xC1 to /\xC1/'); 21ok("\x{C1}" =~ /\x{C1}/, '\x{C1} to /\x{C1}/'); 22ok("\xC3" =~ /\xC3/, '\xC3 to /\xC3/'); 23ok("\x{102}" =~ /\xC3/, '\x{102} to /\xC3/'); 24ok("\xC3" =~ /\x{C3}/, '\xC3 to /\x{C3}/'); 25ok("\x{102}" =~ /\x{C3}/, '\x{102} to /\x{C3}/'); 26ok("\xC3" =~ /\x{102}/, '\xC3 to /\x{102}/'); 27ok("\x{102}" =~ /\x{102}/, '\x{102} to /\x{102}/'); 28 29ok("\xC1" =~ /\xC1/i, '\xC1 to /\xC1/i'); 30ok("\xE1" =~ /\xC1/i, '\xE1 to /\xC1/i'); 31ok("\xC1" =~ /\xE1/i, '\xC1 to /\xE1/i'); 32ok("\xE1" =~ /\xE1/i, '\xE1 to /\xE1/i'); 33ok("\x{102}" =~ /\xC3/i, '\x{102} to /\xC3/i'); 34ok("\x{103}" =~ /\xC3/i, '\x{103} to /\xC3/i'); 35ok("\x{102}" =~ /\xE3/i, '\x{102} to /\xE3/i'); 36ok("\x{103}" =~ /\xE3/i, '\x{103} to /\xE3/i'); 37 38ok("\xC1" =~ /[\xC1]/, '\xC1 to /[\xC1]/'); 39ok("\x{C1}" =~ /[\x{C1}]/, '\x{C1} to /[\x{C1}]/'); 40ok("\xC3" =~ /[\xC3]/, '\xC3 to /[\xC3]/'); 41ok("\x{102}" =~ /[\xC3]/, '\x{102} to /[\xC3]/'); 42ok("\xC3" =~ /[\x{C3}]/, '\xC3 to /[\x{C3}]/'); 43ok("\x{102}" =~ /[\x{C3}]/, '\x{102} to /[\x{C3}]/'); 44ok("\xC3" =~ /[\x{102}]/, '\xC3 to /[\x{102}]/'); 45ok("\x{102}" =~ /[\x{102}]/, '\x{102} to /[\x{102}]/'); 46 47ok("\xC1" =~ /[\xC1]/i, '\xC1 to /[\xC1]/i'); 48ok("\xE1" =~ /[\xC1]/i, '\xE1 to /[\xC1]/i'); 49ok("\xC1" =~ /[\xE1]/i, '\xC1 to /[\xE1]/i'); 50ok("\xE1" =~ /[\xE1]/i, '\xE1 to /[\xE1]/i'); 51ok("\x{102}" =~ /[\xC3]/i, '\x{102} to /[\xC3]/i'); 52ok("\x{103}" =~ /[\xC3]/i, '\x{103} to /[\xC3]/i'); 53ok("\x{102}" =~ /[\xE3]/i, '\x{102} to /[\xE3]/i'); 54ok("\x{103}" =~ /[\xE3]/i, '\x{103} to /[\xE3]/i'); 55 56ok("\xC1" =~ '\xC1', '\xC1 to \'\xC1\''); 57ok("\xC1" =~ '\x{C1}', '\xC1 to \'\x{C1}\''); 58ok("\xC3" =~ '\303', '\xC3 to \'\303\''); 59ok("\xC3" =~ '\x{102}', '\xC3 to \'\x{102}\''); 60ok("\xC1" =~ '[\xC1]', '\xC1 to \'[\xC1]\''); 61ok("\xC1" =~ '[\x{C1}]', '\xC1 to \'[\x{C1}]\''); 62ok("\xC3" =~ '[\303]', '\xC3 to \'[\303]\''); 63ok("\xC3" =~ '[\x{102}]', '\xC3 to \'[\x{102}]\''); 64 65ok("\xC1" =~ /�/, '\xC1 to /<A-acute>/'); 66ok("\xE1" !~ /�/, '\xE1 to /<A-acute>/'); 67ok("\xC1" =~ /�/i, '\xC1 to /<A-acute>/i'); 68ok("\xE1" =~ /�/i, '\xE1 to /<A-acute>/i'); 69ok("\xC1" =~ /[�]/, '\xC1 to /[<A-acute>]/'); 70ok("\xE1" !~ /[�]/, '\xE1 to /[<A-acute>]/'); 71ok("\xC1" =~ /[�]/i, '\xC1 to /[<A-acute>]/i'); 72ok("\xE1" =~ /[�]/i, '\xE1 to /[<A-acute>]/i'); 73 74ok("\xC1\xC1" =~ /�\xC1/, '\xC1\xC1 to /<A-acute>\xC1/'); 75ok("\xC1\xC1" =~ /\xC1�/, '\xC1\xC1 to /\xC1<A-acute>/'); 76ok("\xC1\xC1" =~ /�\xC1/i, '\xC1\xC1 to /<A-acute>\xC1/i'); 77ok("\xC1\xC1" =~ /\xC1�/i, '\xC1\xC1 to /\xC1<A-acute>/i'); 78ok("\xC1\xE1" =~ /�\xC1/i, '\xC1\xE1 to /<A-acute>\xC1/i'); 79ok("\xC1\xE1" =~ /\xC1�/i, '\xC1\xE1 to /\xC1<A-acute>/i'); 80ok("\xE1\xE1" =~ /�\xC1/i, '\xE1\xE1 to /<A-acute>\xC1/i'); 81ok("\xE1\xE1" =~ /\xC1�/i, '\xE1\xE1 to /\xC1<A-acute>/i'); 82 83# \xDF is LATIN SMALL LETTER SHARP S 84 85ok("\xDF" =~ /\xDF/, '\xDF to /\xDF/'); 86ok("\xDF" =~ /\xDF/i, '\xDF to /\xDF/i'); 87ok("\xDF" =~ /[\xDF]/, '\xDF to /[\xDF]/'); 88ok("\xDF" =~ /[\xDF]/i, '\xDF to /[\xDF]/i'); 89ok("\xDF" =~ /�/, '\xDF to /<sharp-s>/'); 90ok("\xDF" =~ /�/i, '\xDF to /<sharp-s>/i'); 91ok("\xDF" =~ /[�]/, '\xDF to /[<sharp-s>]/'); 92ok("\xDF" =~ /[�]/i, '\xDF to /[<sharp-s>]/i'); 93 94ok("SS" =~ /\xDF/i, 'SS to /\xDF/i'); 95ok("Ss" =~ /\xDF/i, 'Ss to /\xDF/i'); 96ok("sS" =~ /\xDF/i, 'sS to /\xDF/i'); 97ok("ss" =~ /\xDF/i, 'ss to /\xDF/i'); 98ok("SS" =~ /�/i, 'SS to /<sharp-s>/i'); 99ok("Ss" =~ /�/i, 'Ss to /<sharp-s>/i'); 100ok("sS" =~ /�/i, 'sS to /<sharp-s>/i'); 101ok("ss" =~ /�/i, 'ss to /<sharp-s>/i'); 102 103ok("\xC3" =~ /\303/, '\xC1 to /\303/'); 104ok("\303" =~ /\303/, '\303 to /\303/'); 105ok("\xC3" =~ /\303/i, '\xC1 to /\303/i'); 106ok("\xE3" =~ /\303/i, '\xC1 to /\303/i'); 107ok("\xC3" =~ /[\303]/, '\xC1 to /[\303]/'); 108ok("\303" =~ /[\303]/, '\303 to /[\303]/'); 109ok("\xC3" =~ /[\303]/i, '\xC1 to /[\303]/i'); 110ok("\xE3" =~ /[\303]/i, '\xC1 to /[\303]/i'); 111 112ok("\xC3" =~ /\402/, '\xC1 to /\402/'); 113ok("\402" =~ /\402/, '\402 to /\402/'); 114ok("\xC3" =~ /\402/i, '\xC1 to /\402/i'); 115ok("\xE3" =~ /\402/i, '\xC1 to /\402/i'); 116ok("\xC3" =~ /[\402]/, '\xC1 to /[\402]/'); 117ok("\402" =~ /[\402]/, '\402 to /[\402]/'); 118ok("\xC3" =~ /[\402]/i, '\xC1 to /[\402]/i'); 119ok("\xE3" =~ /[\402]/i, '\xC1 to /[\402]/i'); 120 121{ 122 my $re = '(?i:\xC1)'; 123 124 ok("\xC1" =~ $re, '\xC1 to (?i:\xC1)'); 125 ok("\xE1" =~ $re, '\xE1 to (?i:\xC1)'); 126 127 utf8::downgrade($re); 128 129 ok("\xC1" =~ $re, '\xC1 to (?i:\xC1) down'); 130 ok("\xE1" =~ $re, '\xE1 to (?i:\xC1) down'); 131 132 utf8::upgrade($re); 133 134 ok("\xC1" =~ $re, '\xC1 to (?i:\xC1) up'); 135 ok("\xE1" =~ $re, '\xE1 to (?i:\xC1) up'); 136} 137 138