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