Add Regex conditionals. Various bugfixes. More tests.
[p5sagit/p5-mst-13.2.git] / t / op / re_tests
index 6759f34..9f0e06b 100644 (file)
@@ -1020,3 +1020,45 @@ X(?<=foo.)[YZ]   ..XfooXY..      y       pos     8
 ^(<(?:[^<>]+|(?1))*>)$ <<><<<><>>>>    y       $1      <<><<<><>>>>
 ((?2)*)([fF]o+)        fooFoFoo        y       $1-$2   fooFo-Foo
 (<(?:[^<>]+|(?R))*>)   <<><<<><>>>>    y       $1      <<><<<><>>>>
+(?<n>foo|bar|baz)      snofooewa       y       $1      foo
+(?<n>foo|bar|baz)      snofooewa       y       $+{n}   foo
+(?<n>foo|bar|baz)(?<m>[ew]+)   snofooewa       y       $+{n}   foo
+(?<n>foo|bar|baz)(?<m>[ew]+)   snofooewa       y       $+{m}   ew
+(?<n>foo)|(?<n>bar)|(?<n>baz)  snofooewa       y       $+{n}   foo
+(?<n>foo)(??{ $+{n} }) snofooefoofoowaa        y       $+{n}   foo
+/(?'n'foo|bar|baz)/    snofooewa       y       $1      foo
+/(?'n'foo|bar|baz)/    snofooewa       y       $+{n}   foo
+/(?'n'foo|bar|baz)(?'m'[ew]+)/ snofooewa       y       $+{n}   foo
+/(?'n'foo|bar|baz)(?'m'[ew]+)/ snofooewa       y       $+{m}   ew
+/(?'n'foo)|(?'n'bar)|(?<n>baz)/        snobazewa       y       $+{n}   baz
+/(?'n'foo)(??{ $+{n} })/       snofooefoofoowaa        y       $+{n}   foo
+/(?'n'foo)\k<n>/       ..foofoo..      y       $1      foo
+/(?'n'foo)\k<n>/       ..foofoo..      y       $+{n}   foo
+/(?<n>foo)\k'n'/       ..foofoo..      y       $1      foo
+/(?<n>foo)\k'n'/       ..foofoo..      y       $+{n}   foo
+/(?:(?<n>foo)|(?<n>bar))\k<n>/ ..barbar..      y       $+{n}   bar
+/^(?'main'<(?:[^<>]+|(?&crap)|(?&main))*>)(?'empty')(?'crap'!>!>!>)$/  <<!>!>!>><>>!>!>!>      y       $+{main}        <<!>!>!>><>>
+/^(?'main'<(?:[^<>]+|(?&main))*>)$/    <<><<<><>>>>    y       $1      <<><<<><>>>>
+/(?'first'(?&second)*)(?'second'[fF]o+)/       fooFoFoo        y       $+{first}-$+{second}    fooFo-Foo
+(?<A>foo)?(?(<A>)bar|nada)     foobar  y       $+{A}   foo
+(?<A>foo)?(?(<A>)bar|nada)     foo-barnada     y       $&      nada
+(?<A>foo)?(?(1)bar|nada)       foo-barnada     y       $&      nada
+(?<A>foo(?(R)bar))?(?1)        foofoobar       y       $1      foo
+(?<A>foo(?(R)bar))?(?1)        foofoobar       y       $&      foofoobar
+(x)(?<A>foo(?(R&A)bar))?(?&A)  xfoofoobar      y       $2      foo
+(x)(?<A>foo(?(R&A)bar))?(?&A)  xfoofoobar      y       $&      xfoofoobar
+(x)(?<A>foo(?(R2)bar))?(?&A)   xfoofoobar      y       $2      foo
+(x)(?<A>foo(?(R2)bar))?(?&A)   xfoofoobar      y       $&      xfoofoobar
+(?1)(?(DEFINE)(blah))  blah    y       $&      blah
+/^(?<PAL>(?<CHAR>.)((?&PAL)|.?)\k<CHAR>)$/     madamimadam     y       $&      madamimadam
+/^(?<PAL>(?<CHAR>.)((?&PAL)|.?)\k<CHAR>)$/     madamiamadam    n       -       -
+/(a)?((?1))(fox)/      aafox   y       $1-$2-$3        a-a-fox
+/(a)*((?1))(fox)/      aafox   y       $1-$2-$3        a-a-fox
+/(a)+((?1))(fox)/      aafox   y       $1-$2-$3        a-a-fox
+/(a){1,100}((?1))(fox)/        aafox   y       $1-$2-$3        a-a-fox
+/(a){0,100}((?1))(fox)/        aafox   y       $1-$2-$3        a-a-fox
+/(ab)?((?1))(fox)/     ababfox y       $1-$2-$3        ab-ab-fox
+/(ab)*((?1))(fox)/     ababfox y       $1-$2-$3        ab-ab-fox
+/(ab)+((?1))(fox)/     ababfox y       $1-$2-$3        ab-ab-fox
+/(ab){1,100}((?1))(fox)/       ababfox y       $1-$2-$3        ab-ab-fox
+/(ab){0,100}((?1))(fox)/       ababfox y       $1-$2-$3        ab-ab-fox