-
Notifications
You must be signed in to change notification settings - Fork 135
/
ii.t
57 lines (46 loc) · 1.75 KB
/
ii.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
53
54
55
56
57
use v6;
use Test;
plan 17;
#?pugs emit skip_rest("unimpl");
#?kp6 emit skip_rest("unimpl");
#L<S05/Modifiers/"The :ii">
# target, substution, result
my @tests = (
['Hello', 'foo', 'Foo'],
['hEllo', 'foo', 'fOo'],
['A', 'foo', 'FOO'],
['AA', 'foo', 'FOO'],
['a b', 'FOO', 'fOo'],
['a b', 'FOOB', 'fOob'],
['Ab ', 'ABCDE', 'AbCDE'],
# someone with more spec-fu please check the next two tests:
['aB ', 'abcde', 'aBcde'],
['aB ', 'ABCDE', 'aBCDE'],
);
for @tests -> $t {
my $test_str = $t[0];
$test_str ~~ s:ii/ .* /$t[1]/;
is $test_str, $t[2], ":ii modifier: {$t[0]} ~~ s:ii/.*/{$t[1]}/ => {$t[2]}";
}
#L<S05/Modifiers/"If the pattern is matched with :sigspace">
# target, substution, result, name
my @smart_tests = (
['HELLO', 'foo', 'FOO', 'uc()'],
['HE LO', 'foo', 'FOO', 'uc()'],
['hello', 'fOo', 'foo', 'lc()'],
['he lo', 'FOOOoO', 'fooooo', 'lc()'],
['He lo', 'FOOO', 'Fooo', 'ucfrst(lc())'],
['hE LO', 'fooo', 'fOOO', 'lcfrst(uc())'],
['hE LO', 'foobar', 'fOOBAR', 'lcfrst(uc())'],
['Ab Cd E', 'abc de gh i', 'Abc De Gh I', 'capitalize()'],
);
for @smart_tests -> $t {
my $test_str = $t[0];
$test_str ~~ s:ii:sigspace/.*/$t[1]/;
# some of these tests actuall pass in Rakudo, so skipping them to avoid
# too many passing TODOs
#?rakudo skip 's:ii:sigspace'
is $test_str, $t[2], ":ii:sigspace modifier: {$t[0]} ~~ s:ii:s/.*/{$t[1]}/ => {$t[2]}";
}
done;
# vim: syn=perl6 sw=4 ts=4 expandtab