Commit | Line | Data |
9e08bc66 |
1 | BEGIN { |
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 | |
27 | plan tests => 72; |
28 | |
29 | use 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 | |
34 | ok("\xC1" =~ /\xC1/, '\xC1 to /\xC1/'); |
35 | ok("\x{391}" =~ /\xC1/, '\x{391} to /\xC1/'); |
36 | ok("\xC1" =~ /\x{C1}/, '\xC1 to /\x{C1}/'); |
37 | ok("\x{391}" =~ /\x{C1}/, '\x{391} to /\x{C1}/'); |
38 | ok("\xC1" =~ /\301/, '\xC1 to /\301/'); |
39 | ok("\x{391}" =~ /\301/, '\x{391} to /\301/'); |
40 | ok("\xC1" =~ /\x{391}/, '\xC1 to /\x{391}/'); |
41 | ok("\x{391}" =~ /\x{391}/, '\x{391} to /\x{391}/'); |
42 | |
43 | ok("\xC1" =~ /\xC1/i, '\xC1 to /\xC1/i'); |
44 | ok("\xE1" =~ /\xC1/i, '\xE1 to /\xC1/i'); |
45 | ok("\xC1" =~ /\xE1/i, '\xC1 to /\xE1/i'); |
46 | ok("\xE1" =~ /\xE1/i, '\xE1 to /\xE1/i'); |
47 | ok("\xC1" =~ /\x{391}/i, '\xC1 to /\x{391}/i'); |
48 | ok("\xE1" =~ /\x{391}/i, '\xE1 to /\x{391}/i'); |
49 | ok("\xC1" =~ /\x{3B1}/i, '\xC1 to /\x{3B1}/i'); |
50 | ok("\xE1" =~ /\x{3B1}/i, '\xE1 to /\x{3B1}/i'); |
51 | |
52 | ok("\xC1" =~ /[\xC1]/, '\xC1 to /[\xC1]/'); |
53 | ok("\x{391}" =~ /[\xC1]/, '\x{391} to /[\xC1]/'); |
54 | ok("\xC1" =~ /[\x{C1}]/, '\xC1 to /[\x{C1}]/'); |
55 | ok("\x{391}" =~ /[\x{C1}]/, '\x{391} to /[\x{C1}]/'); |
56 | ok("\xC1" =~ /[\301]/, '\xC1 to /[\301]/'); |
57 | ok("\x{391}" =~ /[\301]/, '\x{391} to /[\301]/'); |
58 | ok("\xC1" =~ /[\x{391}]/, '\xC1 to /[\x{391}]/'); |
59 | ok("\x{391}" =~ /[\x{391}]/, '\x{391} to /[\x{391}]/'); |
60 | |
61 | ok("\xC1" =~ /[\xC1]/i, '\xC1 to /[\xC1]/i'); |
62 | ok("\xE1" =~ /[\xC1]/i, '\xE1 to /[\xC1]/i'); |
63 | ok("\xC1" =~ /[\xE1]/i, '\xC1 to /[\xE1]/i'); |
64 | ok("\xE1" =~ /[\xE1]/i, '\xE1 to /[\xE1]/i'); |
65 | ok("\xC1" =~ /[\x{391}]/i, '\xC1 to /[\x{391}]/i'); |
66 | ok("\xE1" =~ /[\x{391}]/i, '\xE1 to /[\x{391}]/i'); |
67 | ok("\xC1" =~ /[\x{3B1}]/i, '\xC1 to /[\x{3B1}]/i'); |
68 | ok("\xE1" =~ /[\x{3B1}]/i, '\xE1 to /[\x{3B1}]/i'); |
69 | |
70 | ok("\xC1" =~ '\xC1', '\xC1 to \'\xC1\''); |
71 | ok("\xC1" =~ '\x{C1}', '\xC1 to \'\x{C1}\''); |
72 | ok("\xC1" =~ '\301', '\xC1 to \'\301\''); |
73 | ok("\xC1" =~ '\x{391}', '\xC1 to \'\x{391}\''); |
74 | ok("\xC1" =~ '[\xC1]', '\xC1 to \'[\xC1]\''); |
75 | ok("\xC1" =~ '[\x{C1}]', '\xC1 to \'[\x{C1}]\''); |
76 | ok("\xC1" =~ '[\301]', '\xC1 to \'[\301]\''); |
77 | ok("\xC1" =~ '[\x{391}]', '\xC1 to \'[\x{391}]\''); |
78 | |
79 | ok("\xC1" =~ /Á/, '\xC1 to /<ALPHA>/'); |
80 | ok("\xE1" !~ /Á/, '\xE1 to /<ALPHA>/'); |
81 | ok("\xC1" =~ /Á/i, '\xC1 to /<ALPHA>/i'); |
82 | ok("\xE1" =~ /Á/i, '\xE1 to /<ALPHA>/i'); |
83 | ok("\xC1" =~ /[Á]/, '\xC1 to /[<ALPHA>]/'); |
84 | ok("\xE1" !~ /[Á]/, '\xE1 to /[<ALPHA>]/'); |
85 | ok("\xC1" =~ /[Á]/i, '\xC1 to /[<ALPHA>]/i'); |
86 | ok("\xE1" =~ /[Á]/i, '\xE1 to /[<ALPHA>]/i'); |
87 | |
88 | ok("\xC1\xC1" =~ /Á\xC1/, '\xC1\xC1 to /<ALPHA>\xC1/'); |
89 | ok("\xC1\xC1" =~ /\xC1Á/, '\xC1\xC1 to /\xC1<ALPHA>/'); |
90 | ok("\xC1\xC1" =~ /Á\xC1/i, '\xC1\xC1 to /<ALPHA>\xC1/i'); |
91 | ok("\xC1\xC1" =~ /\xC1Á/i, '\xC1\xC1 to /\xC1<ALPHA>/i'); |
92 | ok("\xC1\xE1" =~ /Á\xC1/i, '\xC1\xE1 to /<ALPHA>\xC1/i'); |
93 | ok("\xC1\xE1" =~ /\xC1Á/i, '\xC1\xE1 to /\xC1<ALPHA>/i'); |
94 | ok("\xE1\xE1" =~ /Á\xC1/i, '\xE1\xE1 to /<ALPHA>\xC1/i'); |
95 | ok("\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 | |
100 | ok("\x{38A}" =~ /\xBA/, '\x{38A} to /\xBA/'); |
101 | ok("\x{38A}" !~ /\xDF/, '\x{38A} to /\xDF/'); |
102 | ok("\x{38A}" =~ /\xBA/i, '\x{38A} to /\xBA/i'); |
103 | ok("\x{38A}" =~ /\xDF/i, '\x{38A} to /\xDF/i'); |
104 | ok("\x{38A}" =~ /[\xBA]/, '\x{38A} to /[\xBA]/'); |
105 | ok("\x{38A}" !~ /[\xDF]/, '\x{38A} to /[\xDF]/'); |
106 | ok("\x{38A}" =~ /[\xBA]/i, '\x{38A} to /[\xBA]/i'); |
107 | ok("\x{38A}" =~ /[\xDF]/i, '\x{38A} to /[\xDF]/i'); |
108 | |
109 | # \xDF is not LATIN SMALL LETTER SHARP S |
110 | |
111 | ok("SS" !~ /\xDF/i, 'SS to /\xDF/i'); |
112 | ok("Ss" !~ /\xDF/i, 'Ss to /\xDF/i'); |
113 | ok("sS" !~ /\xDF/i, 'sS to /\xDF/i'); |
114 | ok("ss" !~ /\xDF/i, 'ss to /\xDF/i'); |
115 | ok("SS" !~ /ß/i, 'SS to /<iota-tonos>/i'); |
116 | ok("Ss" !~ /ß/i, 'Ss to /<iota-tonos>/i'); |
117 | ok("sS" !~ /ß/i, 'sS to /<iota-tonos>/i'); |
118 | ok("ss" !~ /ß/i, 'ss to /<iota-tonos>/i'); |
119 | |