xref: /openbsd/gnu/usr.bin/perl/t/uni/greek.t (revision cecf84d4)
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 => 72;
11
12no warnings 'deprecated';
13use encoding "greek"; # iso 8859-7
14
15# U+0391, \xC1, \301, GREEK CAPITAL LETTER ALPHA
16# U+03B1, \xE1, \341, GREEK SMALL LETTER ALPHA
17
18ok("\xC1"    =~ /\xC1/,     '\xC1 to /\xC1/');
19ok("\x{391}" =~ /\xC1/,     '\x{391} to /\xC1/');
20ok("\xC1"    =~ /\x{C1}/,   '\xC1 to /\x{C1}/');
21ok("\x{391}" =~ /\x{C1}/,   '\x{391} to /\x{C1}/');
22ok("\xC1"    =~ /\301/,     '\xC1 to /\301/');
23ok("\x{391}" =~ /\301/,     '\x{391} to /\301/');
24ok("\xC1"    =~ /\x{391}/,  '\xC1 to /\x{391}/');
25ok("\x{391}" =~ /\x{391}/,  '\x{391} to /\x{391}/');
26
27ok("\xC1"    =~ /\xC1/i,    '\xC1 to /\xC1/i');
28ok("\xE1"    =~ /\xC1/i,    '\xE1 to /\xC1/i');
29ok("\xC1"    =~ /\xE1/i,    '\xC1 to /\xE1/i');
30ok("\xE1"    =~ /\xE1/i,    '\xE1 to /\xE1/i');
31ok("\xC1"    =~ /\x{391}/i, '\xC1 to /\x{391}/i');
32ok("\xE1"    =~ /\x{391}/i, '\xE1 to /\x{391}/i');
33ok("\xC1"    =~ /\x{3B1}/i, '\xC1 to /\x{3B1}/i');
34ok("\xE1"    =~ /\x{3B1}/i, '\xE1 to /\x{3B1}/i');
35
36ok("\xC1"    =~ /[\xC1]/,     '\xC1 to /[\xC1]/');
37ok("\x{391}" =~ /[\xC1]/,     '\x{391} to /[\xC1]/');
38ok("\xC1"    =~ /[\x{C1}]/,   '\xC1 to /[\x{C1}]/');
39ok("\x{391}" =~ /[\x{C1}]/,   '\x{391} to /[\x{C1}]/');
40ok("\xC1"    =~ /[\301]/,     '\xC1 to /[\301]/');
41ok("\x{391}" =~ /[\301]/,     '\x{391} to /[\301]/');
42ok("\xC1"    =~ /[\x{391}]/,  '\xC1 to /[\x{391}]/');
43ok("\x{391}" =~ /[\x{391}]/,  '\x{391} to /[\x{391}]/');
44
45ok("\xC1"    =~ /[\xC1]/i,    '\xC1 to /[\xC1]/i');
46ok("\xE1"    =~ /[\xC1]/i,    '\xE1 to /[\xC1]/i');
47ok("\xC1"    =~ /[\xE1]/i,    '\xC1 to /[\xE1]/i');
48ok("\xE1"    =~ /[\xE1]/i,    '\xE1 to /[\xE1]/i');
49ok("\xC1"    =~ /[\x{391}]/i, '\xC1 to /[\x{391}]/i');
50ok("\xE1"    =~ /[\x{391}]/i, '\xE1 to /[\x{391}]/i');
51ok("\xC1"    =~ /[\x{3B1}]/i, '\xC1 to /[\x{3B1}]/i');
52ok("\xE1"    =~ /[\x{3B1}]/i, '\xE1 to /[\x{3B1}]/i');
53
54ok("\xC1"    =~ '\xC1',       '\xC1 to \'\xC1\'');
55ok("\xC1"    =~ '\x{C1}',     '\xC1 to \'\x{C1}\'');
56ok("\xC1"    =~ '\301',       '\xC1 to \'\301\'');
57ok("\xC1"    =~ '\x{391}',    '\xC1 to \'\x{391}\'');
58ok("\xC1"    =~ '[\xC1]',     '\xC1 to \'[\xC1]\'');
59ok("\xC1"    =~ '[\x{C1}]',   '\xC1 to \'[\x{C1}]\'');
60ok("\xC1"    =~ '[\301]',     '\xC1 to \'[\301]\'');
61ok("\xC1"    =~ '[\x{391}]',  '\xC1 to \'[\x{391}]\'');
62
63ok("\xC1"    =~ /�/,     '\xC1 to /<ALPHA>/');
64ok("\xE1"    !~ /�/,     '\xE1 to /<ALPHA>/');
65ok("\xC1"    =~ /�/i,    '\xC1 to /<ALPHA>/i');
66ok("\xE1"    =~ /�/i,    '\xE1 to /<ALPHA>/i');
67ok("\xC1"    =~ /[�]/,   '\xC1 to /[<ALPHA>]/');
68ok("\xE1"    !~ /[�]/,   '\xE1 to /[<ALPHA>]/');
69ok("\xC1"    =~ /[�]/i,  '\xC1 to /[<ALPHA>]/i');
70ok("\xE1"    =~ /[�]/i,  '\xE1 to /[<ALPHA>]/i');
71
72ok("\xC1\xC1"  =~ /�\xC1/,    '\xC1\xC1 to /<ALPHA>\xC1/');
73ok("\xC1\xC1"  =~ /\xC1�/,    '\xC1\xC1 to /\xC1<ALPHA>/');
74ok("\xC1\xC1"  =~ /�\xC1/i,   '\xC1\xC1 to /<ALPHA>\xC1/i');
75ok("\xC1\xC1"  =~ /\xC1�/i,   '\xC1\xC1 to /\xC1<ALPHA>/i');
76ok("\xC1\xE1"  =~ /�\xC1/i,   '\xC1\xE1 to /<ALPHA>\xC1/i');
77ok("\xC1\xE1"  =~ /\xC1�/i,   '\xC1\xE1 to /\xC1<ALPHA>/i');
78ok("\xE1\xE1"  =~ /�\xC1/i,   '\xE1\xE1 to /<ALPHA>\xC1/i');
79ok("\xE1\xE1"  =~ /\xC1�/i,   '\xE1\xE1 to /\xC1<ALPHA>/i');
80
81# U+038A, \xBA, GREEK CAPITAL LETTER IOTA WITH TONOS
82# U+03AF, \xDF, GREEK SMALL LETTER IOTA WITH TONOS
83
84ok("\x{38A}"  =~ /\xBA/,      '\x{38A} to /\xBA/');
85ok("\x{38A}"  !~ /\xDF/,      '\x{38A} to /\xDF/');
86ok("\x{38A}"  =~ /\xBA/i,     '\x{38A} to /\xBA/i');
87ok("\x{38A}"  =~ /\xDF/i,     '\x{38A} to /\xDF/i');
88ok("\x{38A}"  =~ /[\xBA]/,    '\x{38A} to /[\xBA]/');
89ok("\x{38A}"  !~ /[\xDF]/,    '\x{38A} to /[\xDF]/');
90ok("\x{38A}"  =~ /[\xBA]/i,   '\x{38A} to /[\xBA]/i');
91ok("\x{38A}"  =~ /[\xDF]/i,   '\x{38A} to /[\xDF]/i');
92
93# \xDF is not LATIN SMALL LETTER SHARP S
94
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"   !~ /\xDF/i,   'ss to /\xDF/i');
99ok("SS"   !~ /�/i,      'SS to /<iota-tonos>/i');
100ok("Ss"   !~ /�/i,      'Ss to /<iota-tonos>/i');
101ok("sS"   !~ /�/i,      'sS to /<iota-tonos>/i');
102ok("ss"   !~ /�/i,      'ss to /<iota-tonos>/i');
103
104