Skip to content

Commit 1a00e5e

Browse files
committed
[coverage] Cover Cool.subst-mutate
1 parent 2e1428a commit 1a00e5e

File tree

1 file changed

+48
-1
lines changed

1 file changed

+48
-1
lines changed

S05-substitution/subst.t

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use lib 't/spec/packages';
33
use Test;
44
use Test::Util;
55

6-
plan 180;
6+
plan 181;
77

88
# L<S05/Substitution/>
99

@@ -576,4 +576,51 @@ is '12'.subst(/(.)(.)/,{$()*2}),'24', '.. and do nifty things in closures';
576576
}, 'code in replacement part of s/// has correct scoping';
577577
}
578578

579+
{ # coverage; 2016-09-27
580+
subtest 'Cool.subst-mutate works same as on .Str' => {
581+
my @tests = # args | returned stringified Match objects | result
582+
[ \('', ''), '', "aabbb\x[308]b\x[308]cc \t xz \t y", ],
583+
[ \('', '', :g), ('' xx 20), "aabbb\x[308]b\x[308]cc \t xz \t y", ],
584+
[ \('', '', :global), ('' xx 20), "aabbb\x[308]b\x[308]cc \t xz \t y", ],
585+
[ \('a', ''), 'a', "abbb\x[308]b\x[308]cc \t xz \t y", ],
586+
[ \('a', '', :g), ('a', 'a'), "bbb\x[308]b\x[308]cc \t xz \t y", ],
587+
[ \('a', '', :global), ('a', 'a'), "bbb\x[308]b\x[308]cc \t xz \t y", ],
588+
[ \('b', ''), 'b', "aabb\x[308]b\x[308]cc \t xz \t y", ],
589+
[ \('b', '', :g), ('b', 'b'), "aab\x[308]b\x[308]cc \t xz \t y", ],
590+
[ \('b', '', :global), ('b', 'b'), "aab\x[308]b\x[308]cc \t xz \t y", ],
591+
[ \(/<[abc]>/, ''), 'a', "abbb\x[308]b\x[308]cc \t xz \t y", ],
592+
[ \(/<[abc]>/, '', :g), ('a', 'a', 'b', 'b', 'c', 'c' ), "b\x[308]b\x[308] \t xz \t y", ],
593+
[ \(/<[abc]>/, '', :global), ('a', 'a', 'b', 'b', 'c', 'c' ), "b\x[308]b\x[308] \t xz \t y", ],
594+
[ \(/<[abc]>/, '', :1st), 'a', "abbb\x[308]b\x[308]cc \t xz \t y", ],
595+
[ \(/<[abc]>/, '', :st{1;}), 'a', "abbb\x[308]b\x[308]cc \t xz \t y", ],
596+
[ \(/<[abc]>/, '', :2nd), 'a', "abbb\x[308]b\x[308]cc \t xz \t y", ],
597+
[ \(/<[abc]>/, '', :nd{2;}), 'a', "abbb\x[308]b\x[308]cc \t xz \t y", ],
598+
[ \(/<[abc]>/, '', :3rd), 'b', "aabb\x[308]b\x[308]cc \t xz \t y", ],
599+
[ \(/<[abc]>/, '', :rd{3;}), 'b', "aabb\x[308]b\x[308]cc \t xz \t y", ],
600+
[ \(/<[abc]>/, '', :4th), 'b', "aabb\x[308]b\x[308]cc \t xz \t y", ],
601+
[ \(/<[abc]>/, '', :th{4;}), 'b', "aabb\x[308]b\x[308]cc \t xz \t y", ],
602+
[ \(/<[abc]>/, '', :5nth), 'c', "aabbb\x[308]b\x[308]c \t xz \t y", ],
603+
[ \(/<[abc]>/, '', :nth{5;}), 'c', "aabbb\x[308]b\x[308]c \t xz \t y", ],
604+
[ \(/<[cz]> \s+ <[xy]>/, 'Z P', :ss), "c \t x", "aabbb\x[308]b\x[308]cZ \t Pz \t y", ],
605+
[ \(/<[cz]> \s+ <[xy]>/, 'Z P', :ss, :global), ( "c \t x", "z \t y" ), "aabbb\x[308]b\x[308]cZ \t PZ \t P", ],
606+
[ \('a', 'Z', :ii), 'a', "zabbb\x[308]b\x[308]cc \t xz \t y", ],
607+
[ \('a', 'Z', :ii, :global), ( 'a', 'a' ), "zzbbb\x[308]b\x[308]cc \t xz \t y", ],
608+
[ \(/<[b]+[b\x[308]]>/, 'Z', :mm), 'b', "aaZbb\x[308]b\x[308]cc \t xz \t y", ],
609+
[ \(/<[b]+[b\x[308]]>/, 'Z', :mm, :global), ( 'b', 'b', "b\x[308]", "b\x[308]" ), "aaZZZ\x[308]Z\x[308]cc \t xz \t y", ],
610+
[ \(/<[b]+[b\x[308]]>/, 'Z', :ii, :mm), 'b', "aazbb\x[308]b\x[308]cc \t xz \t y", ],
611+
[ \(/<[b]+[b\x[308]]>/, 'Z', :ii, :mm, :global), ( 'b', 'b', "b\x[308]", "b\x[308]" ), "aazzz\x[308]z\x[308]cc \t xz \t y", ],
612+
;
613+
614+
plan 2*@tests;
615+
for @tests -> $t {
616+
# use IO::Path as our Cool object
617+
my $obj = "aabbb\x[308]b\x[308]cc \t xz \t y".IO;
618+
my $ret = $obj.subst-mutate(|$t[0]);
619+
is-deeply ( $ret ~~ Iterable ?? $ret».Str !! $ret.Str ), $t[1],
620+
"correct return value when using $t[0].gist()";
621+
is-deeply $obj, $t[2], "correct modification when using $t[0].gist()";
622+
}
623+
}
624+
}
625+
579626
# vim: ft=perl6

0 commit comments

Comments
 (0)