-
Notifications
You must be signed in to change notification settings - Fork 135
/
ignorecase.t
52 lines (32 loc) · 1.43 KB
/
ignorecase.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
use v6;
use Test;
plan 14;
=begin description
Testing the C<:ignorecase> regex modifier - more tests are always welcome
There are still a few things missing, like lower case <-> title case <-> upper
case tests
Note that the meaning of C<:i> does B<not> descend into subrules.
=end description
# tests for inline modifiers
# L<S05/Modifiers/and Unicode-level modifiers can be>
ok("abcDEFghi" ~~ m/abc (:i def) ghi/, 'Match');
ok(!( "abcDEFGHI" ~~ m/abc (:i def) ghi/ ), 'Mismatch');
#L<S05/Modifiers/"The :i">
my regex mixedcase { Hello };
# without :i
ok "Hello" ~~ m/<&mixedcase>/, "match mixed case (subrule)";
ok 'Hello' ~~ m/Hello/, "match mixed case (direct)";
ok "hello" !~~ m/<&mixedcase>/, "do not match lowercase (subrule)";
ok "hello" !~~ m/Hello/, "do not match lowercase (direct)";
ok "hello" !~~ m:i/<&mixedcase>/, "no match with :i if matched by subrule";
ok "hello" ~~ m:i/Hello/, "match with :i (direct)";
ok "hello" !~~ m:ignorecase/<&mixedcase>/, "no match with :ignorecase + subrule";
ok "hello" !~~ m:ignorecase/Hello/, "match with :ignorecase (direct)";
ok('Δ' ~~ m:i/δ/, ':i with greek chars');
# The German ß (ß) maps to uppercase SS:
#?rakudo 2 todo 'ignorecase and SS/ß'
ok('ß' ~~ m:i/SS/, "ß matches SS with :ignorecase");
ok('SS' ~~ m:i/ß/, "SS matches ß with :ignorecase");
#RT #76750
ok('a' ~~ m/:i 'A'/, ':i descends into quotes');
# vim: syn=perl6 sw=4 ts=4 expandtab