Add new tests for bug #32840 provided by David Landgren,
[p5sagit/p5-mst-13.2.git] / t / op / rxcode.t
CommitLineData
768bc71f 1use Test::More tests => 34;
2
3$^R = undef;
4like( 'a', qr/^a(?{1})(?:b(?{2}))?/, 'a =~ ab?' );
5cmp_ok( $^R, '==', 1, '..$^R after a =~ ab?' );
6
7$^R = undef;
8unlike( 'abc', qr/^a(?{3})(?:b(?{4}))$/, 'abc !~ a(?:b)$' );
9ok( !defined $^R, '..$^R after abc !~ a(?:b)$' );
10
11$^R = undef;
12like( 'ab', qr/^a(?{5})b(?{6})/, 'ab =~ ab' );
13cmp_ok( $^R, '==', 6, '..$^R after ab =~ ab' );
14
15$^R = undef;
16like( 'ab', qr/^a(?{7})(?:b(?{8}))?/, 'ab =~ ab?' );
17
18TODO: {
19 local $TODO = '#32840: $^R value lost in (?:...)? constructs';
20 cmp_ok( $^R, '==', 8, '..$^R after ab =~ ab?' );
21}
22
23$^R = undef;
24like( 'ab', qr/^a(?{9})b?(?{10})/, 'ab =~ ab? (2)' );
25cmp_ok( $^R, '==', 10, '..$^R after ab =~ ab? (2)' );
26
27$^R = undef;
28like( 'ab', qr/^(a(?{11})(?:b(?{12})))?/, 'ab =~ (ab)? (3)' );
29TODO: {
30 local $TODO = '#32840: $^R value lost in (?:...)? constructs (2)';
31 cmp_ok( $^R, '==', 12, '..$^R after ab =~ ab? (3)' );
32}
33
34$^R = undef;
35unlike( 'ac', qr/^a(?{13})b(?{14})/, 'ac !~ ab' );
36ok( !defined $^R, '..$^R after ac !~ ab' );
37
38$^R = undef;
39like( 'ac', qr/^a(?{15})(?:b(?{16}))?/, 'ac =~ ab?' );
40cmp_ok( $^R, '==', 15, '..$^R after ac =~ ab?' );
41
42my @ar;
43like( 'ab', qr/^a(?{push @ar,101})(?:b(?{push @ar,102}))?/, 'ab =~ ab? with code push' );
44cmp_ok( scalar(@ar), '==', 2, '..@ar pushed' );
45cmp_ok( $ar[0], '==', 101, '..first element pushed' );
46cmp_ok( $ar[1], '==', 102, '..second element pushed' );
47
48$^R = undef;
49unlike( 'a', qr/^a(?{103})b(?{104})/, 'a !~ ab with code push' );
50ok( !defined $^R, '..$^R after a !~ ab with code push' );
51
52@ar = ();
53unlike( 'a', qr/^a(?{push @ar,105})b(?{push @ar,106})/, 'a !~ ab (push)' );
54cmp_ok( scalar(@ar), '==', 0, '..nothing pushed' );
55
56@ar = ();
57unlike( 'abc', qr/^a(?{push @ar,107})b(?{push @ar,108})$/, 'abc !~ ab$ (push)' );
58cmp_ok( scalar(@ar), '==', 0, '..still nothing pushed' );
59
60use vars '@var';
61
62like( 'ab', qr/^a(?{push @var,109})(?:b(?{push @var,110}))?/, 'ab =~ ab? push to package var' );
63cmp_ok( scalar(@var), '==', 2, '..@var pushed' );
64cmp_ok( $var[0], '==', 109, '..first element pushed (package)' );
65cmp_ok( $var[1], '==', 110, '..second element pushed (package)' );
66
67@var = ();
68unlike( 'a', qr/^a(?{push @var,111})b(?{push @var,112})/, 'a !~ ab (push package var)' );
69cmp_ok( scalar(@var), '==', 0, '..nothing pushed (package)' );
70
71@var = ();
72unlike( 'abc', qr/^a(?{push @var,113})b(?{push @var,114})$/, 'abc !~ ab$ (push package var)' );
73cmp_ok( scalar(@var), '==', 0, '..still nothing pushed (package)' );
74