This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
io/utf8.t: Generalize test for ebcdic, better skip msg
[perl5.git] / t / uni / greek.t
1 #!./perl -w
2
3 BEGIN {
4     chdir 't' if -d 't';
5     require './test.pl';
6     skip_all_without_dynamic_extension('Encode');
7     skip_all("no encoding pragma in EBCDIC") if $::IS_EBCDIC;
8     skip_all_without_perlio();
9 }
10
11 plan tests => 72;
12
13 no warnings 'deprecated';
14 use encoding "greek"; # iso 8859-7
15
16 # U+0391, \xC1, \301, GREEK CAPITAL LETTER ALPHA
17 # U+03B1, \xE1, \341, GREEK SMALL LETTER ALPHA
18
19 ok("\xC1"    =~ /\xC1/,     '\xC1 to /\xC1/');
20 ok("\x{391}" =~ /\xC1/,     '\x{391} to /\xC1/');
21 ok("\xC1"    =~ /\x{C1}/,   '\xC1 to /\x{C1}/');
22 ok("\x{391}" =~ /\x{C1}/,   '\x{391} to /\x{C1}/');
23 ok("\xC1"    =~ /\301/,     '\xC1 to /\301/');
24 ok("\x{391}" =~ /\301/,     '\x{391} to /\301/');
25 ok("\xC1"    =~ /\x{391}/,  '\xC1 to /\x{391}/');
26 ok("\x{391}" =~ /\x{391}/,  '\x{391} to /\x{391}/');
27
28 ok("\xC1"    =~ /\xC1/i,    '\xC1 to /\xC1/i');
29 ok("\xE1"    =~ /\xC1/i,    '\xE1 to /\xC1/i');
30 ok("\xC1"    =~ /\xE1/i,    '\xC1 to /\xE1/i');
31 ok("\xE1"    =~ /\xE1/i,    '\xE1 to /\xE1/i');
32 ok("\xC1"    =~ /\x{391}/i, '\xC1 to /\x{391}/i');
33 ok("\xE1"    =~ /\x{391}/i, '\xE1 to /\x{391}/i');
34 ok("\xC1"    =~ /\x{3B1}/i, '\xC1 to /\x{3B1}/i');
35 ok("\xE1"    =~ /\x{3B1}/i, '\xE1 to /\x{3B1}/i');
36
37 ok("\xC1"    =~ /[\xC1]/,     '\xC1 to /[\xC1]/');
38 ok("\x{391}" =~ /[\xC1]/,     '\x{391} to /[\xC1]/');
39 ok("\xC1"    =~ /[\x{C1}]/,   '\xC1 to /[\x{C1}]/');
40 ok("\x{391}" =~ /[\x{C1}]/,   '\x{391} to /[\x{C1}]/');
41 ok("\xC1"    =~ /[\301]/,     '\xC1 to /[\301]/');
42 ok("\x{391}" =~ /[\301]/,     '\x{391} to /[\301]/');
43 ok("\xC1"    =~ /[\x{391}]/,  '\xC1 to /[\x{391}]/');
44 ok("\x{391}" =~ /[\x{391}]/,  '\x{391} to /[\x{391}]/');
45
46 ok("\xC1"    =~ /[\xC1]/i,    '\xC1 to /[\xC1]/i');
47 ok("\xE1"    =~ /[\xC1]/i,    '\xE1 to /[\xC1]/i');
48 ok("\xC1"    =~ /[\xE1]/i,    '\xC1 to /[\xE1]/i');
49 ok("\xE1"    =~ /[\xE1]/i,    '\xE1 to /[\xE1]/i');
50 ok("\xC1"    =~ /[\x{391}]/i, '\xC1 to /[\x{391}]/i');
51 ok("\xE1"    =~ /[\x{391}]/i, '\xE1 to /[\x{391}]/i');
52 ok("\xC1"    =~ /[\x{3B1}]/i, '\xC1 to /[\x{3B1}]/i');
53 ok("\xE1"    =~ /[\x{3B1}]/i, '\xE1 to /[\x{3B1}]/i');
54
55 ok("\xC1"    =~ '\xC1',       '\xC1 to \'\xC1\'');
56 ok("\xC1"    =~ '\x{C1}',     '\xC1 to \'\x{C1}\'');
57 ok("\xC1"    =~ '\301',       '\xC1 to \'\301\'');
58 ok("\xC1"    =~ '\x{391}',    '\xC1 to \'\x{391}\'');
59 ok("\xC1"    =~ '[\xC1]',     '\xC1 to \'[\xC1]\'');
60 ok("\xC1"    =~ '[\x{C1}]',   '\xC1 to \'[\x{C1}]\'');
61 ok("\xC1"    =~ '[\301]',     '\xC1 to \'[\301]\'');
62 ok("\xC1"    =~ '[\x{391}]',  '\xC1 to \'[\x{391}]\'');
63
64 ok("\xC1"    =~ /Á/,     '\xC1 to /<ALPHA>/');
65 ok("\xE1"    !~ /Á/,     '\xE1 to /<ALPHA>/');
66 ok("\xC1"    =~ /Á/i,    '\xC1 to /<ALPHA>/i');
67 ok("\xE1"    =~ /Á/i,    '\xE1 to /<ALPHA>/i');
68 ok("\xC1"    =~ /[Á]/,   '\xC1 to /[<ALPHA>]/');
69 ok("\xE1"    !~ /[Á]/,   '\xE1 to /[<ALPHA>]/');
70 ok("\xC1"    =~ /[Á]/i,  '\xC1 to /[<ALPHA>]/i');
71 ok("\xE1"    =~ /[Á]/i,  '\xE1 to /[<ALPHA>]/i');
72
73 ok("\xC1\xC1"  =~ /Á\xC1/,    '\xC1\xC1 to /<ALPHA>\xC1/');
74 ok("\xC1\xC1"  =~ /\xC1Á/,    '\xC1\xC1 to /\xC1<ALPHA>/');
75 ok("\xC1\xC1"  =~ /Á\xC1/i,   '\xC1\xC1 to /<ALPHA>\xC1/i');
76 ok("\xC1\xC1"  =~ /\xC1Á/i,   '\xC1\xC1 to /\xC1<ALPHA>/i');
77 ok("\xC1\xE1"  =~ /Á\xC1/i,   '\xC1\xE1 to /<ALPHA>\xC1/i');
78 ok("\xC1\xE1"  =~ /\xC1Á/i,   '\xC1\xE1 to /\xC1<ALPHA>/i');
79 ok("\xE1\xE1"  =~ /Á\xC1/i,   '\xE1\xE1 to /<ALPHA>\xC1/i');
80 ok("\xE1\xE1"  =~ /\xC1Á/i,   '\xE1\xE1 to /\xC1<ALPHA>/i');
81
82 # U+038A, \xBA, GREEK CAPITAL LETTER IOTA WITH TONOS
83 # U+03AF, \xDF, GREEK SMALL LETTER IOTA WITH TONOS
84
85 ok("\x{38A}"  =~ /\xBA/,      '\x{38A} to /\xBA/');
86 ok("\x{38A}"  !~ /\xDF/,      '\x{38A} to /\xDF/');
87 ok("\x{38A}"  =~ /\xBA/i,     '\x{38A} to /\xBA/i');
88 ok("\x{38A}"  =~ /\xDF/i,     '\x{38A} to /\xDF/i');
89 ok("\x{38A}"  =~ /[\xBA]/,    '\x{38A} to /[\xBA]/');
90 ok("\x{38A}"  !~ /[\xDF]/,    '\x{38A} to /[\xDF]/');
91 ok("\x{38A}"  =~ /[\xBA]/i,   '\x{38A} to /[\xBA]/i');
92 ok("\x{38A}"  =~ /[\xDF]/i,   '\x{38A} to /[\xDF]/i');
93
94 # \xDF is not LATIN SMALL LETTER SHARP S
95
96 ok("SS"   !~ /\xDF/i,   'SS to /\xDF/i');
97 ok("Ss"   !~ /\xDF/i,   'Ss to /\xDF/i');
98 ok("sS"   !~ /\xDF/i,   'sS to /\xDF/i');
99 ok("ss"   !~ /\xDF/i,   'ss to /\xDF/i');
100 ok("SS"   !~ /ß/i,      'SS to /<iota-tonos>/i');
101 ok("Ss"   !~ /ß/i,      'Ss to /<iota-tonos>/i');
102 ok("sS"   !~ /ß/i,      'sS to /<iota-tonos>/i');
103 ok("ss"   !~ /ß/i,      'ss to /<iota-tonos>/i');
104