]> granicus.if.org Git - php/commitdiff
added failing tests for bug #61780
authorChristoph M. Becker <cmbecker69@gmx.de>
Sat, 23 May 2015 17:28:14 +0000 (19:28 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Sat, 23 May 2015 17:28:14 +0000 (19:28 +0200)
ext/pcre/tests/bug61780_1.phpt [new file with mode: 0644]
ext/pcre/tests/bug61780_2.phpt [new file with mode: 0644]

diff --git a/ext/pcre/tests/bug61780_1.phpt b/ext/pcre/tests/bug61780_1.phpt
new file mode 100644 (file)
index 0000000..d8e35c5
--- /dev/null
@@ -0,0 +1,194 @@
+--TEST--
+Bug #61780 (Inconsistent PCRE captures in match results): numeric subpatterns
+--FILE--
+<?php
+preg_match('/(4)?(2)?\d/', '23456', $matches);
+var_export($matches);
+echo "\n\n";
+preg_match('/(4)?(2)?\d/', '23456', $matches, PREG_OFFSET_CAPTURE);
+var_export($matches);
+echo "\n\n";
+preg_match_all('/(4)?(2)?\d/', '123456', $matches);
+var_export($matches);
+echo "\n\n";
+preg_match_all('/(4)?(2)?\d/', '123456', $matches, PREG_OFFSET_CAPTURE);
+var_export($matches);
+echo "\n\n";
+preg_match_all('/(4)?(2)?\d/', '123456', $matches, PREG_SET_ORDER);
+var_export($matches);
+echo "\n\n";
+preg_match_all('/(4)?(2)?\d/', '123456', $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE);
+var_export($matches);
+?>
+--EXPECT--
+array (
+  0 => '23',
+  1 => NULL,
+  2 => '2',
+)
+
+array (
+  0 => 
+  array (
+    0 => '23',
+    1 => 0,
+  ),
+  1 => 
+  array (
+    0 => NULL,
+    1 => -1,
+  ),
+  2 => 
+  array (
+    0 => '2',
+    1 => 0,
+  ),
+)
+
+array (
+  0 => 
+  array (
+    0 => '1',
+    1 => '23',
+    2 => '45',
+    3 => '6',
+  ),
+  1 => 
+  array (
+    0 => NULL,
+    1 => NULL,
+    2 => '4',
+    3 => NULL,
+  ),
+  2 => 
+  array (
+    0 => NULL,
+    1 => '2',
+    2 => NULL,
+    3 => NULL,
+  ),
+)
+
+array (
+  0 => 
+  array (
+    0 => 
+    array (
+      0 => '1',
+      1 => 0,
+    ),
+    1 => 
+    array (
+      0 => '23',
+      1 => 1,
+    ),
+    2 => 
+    array (
+      0 => '45',
+      1 => 3,
+    ),
+    3 => 
+    array (
+      0 => '6',
+      1 => 5,
+    ),
+  ),
+  1 => 
+  array (
+    0 => NULL,
+    1 => 
+    array (
+      0 => NULL,
+      1 => -1,
+    ),
+    2 => 
+    array (
+      0 => '4',
+      1 => 3,
+    ),
+    3 => NULL,
+  ),
+  2 => 
+  array (
+    0 => NULL,
+    1 => 
+    array (
+      0 => '2',
+      1 => 1,
+    ),
+    2 => NULL,
+    3 => NULL,
+  ),
+)
+
+array (
+  0 => 
+  array (
+    0 => '1',
+  ),
+  1 => 
+  array (
+    0 => '23',
+    1 => NULL,
+    2 => '2',
+  ),
+  2 => 
+  array (
+    0 => '45',
+    1 => '4',
+  ),
+  3 => 
+  array (
+    0 => '6',
+  ),
+)
+
+array (
+  0 => 
+  array (
+    0 => 
+    array (
+      0 => '1',
+      1 => 0,
+    ),
+  ),
+  1 => 
+  array (
+    0 => 
+    array (
+      0 => '23',
+      1 => 1,
+    ),
+    1 => 
+    array (
+      0 => NULL,
+      1 => -1,
+    ),
+    2 => 
+    array (
+      0 => '2',
+      1 => 1,
+    ),
+  ),
+  2 => 
+  array (
+    0 => 
+    array (
+      0 => '45',
+      1 => 3,
+    ),
+    1 => 
+    array (
+      0 => '4',
+      1 => 3,
+    ),
+  ),
+  3 => 
+  array (
+    0 => 
+    array (
+      0 => '6',
+      1 => 5,
+    ),
+  ),
+)
diff --git a/ext/pcre/tests/bug61780_2.phpt b/ext/pcre/tests/bug61780_2.phpt
new file mode 100644 (file)
index 0000000..375c02f
--- /dev/null
@@ -0,0 +1,264 @@
+--TEST--
+Bug #61780 (Inconsistent PCRE captures in match results): named subpatterns
+--FILE--
+<?php
+preg_match('/(?<a>4)?(?<b>2)?\d/', '23456', $matches);
+var_export($matches);
+echo "\n\n";
+preg_match('/(?<a>4)?(?<b>2)?\d/', '23456', $matches, PREG_OFFSET_CAPTURE);
+var_export($matches);
+echo "\n\n";
+preg_match_all('/(?<a>4)?(?<b>2)?\d/', '123456', $matches);
+var_export($matches);
+echo "\n\n";
+preg_match_all('/(?<a>4)?(?<b>2)?\d/', '123456', $matches, PREG_OFFSET_CAPTURE);
+var_export($matches);
+echo "\n\n";
+preg_match_all('/(?<a>4)?(?<b>2)?\d/', '123456', $matches, PREG_SET_ORDER);
+var_export($matches);
+echo "\n\n";
+preg_match_all('/(?<a>4)?(?<b>2)?\d/', '123456', $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE);
+var_export($matches);
+?>
+--EXPECT--
+array (
+  0 => '23',
+  'a' => NULL,
+  1 => NULL,
+  'b' => '2',
+  2 => '2',
+)
+
+array (
+  0 => 
+  array (
+    0 => '23',
+    1 => 0,
+  ),
+  'a' => 
+  array (
+    0 => NULL,
+    1 => -1,
+  ),
+  1 => 
+  array (
+    0 => NULL,
+    1 => -1,
+  ),
+  'b' => 
+  array (
+    0 => '2',
+    1 => 0,
+  ),
+  2 => 
+  array (
+    0 => '2',
+    1 => 0,
+  ),
+)
+
+array (
+  0 => 
+  array (
+    0 => '1',
+    1 => '23',
+    2 => '45',
+    3 => '6',
+  ),
+  'a' => 
+  array (
+    0 => NULL,
+    1 => NULL,
+    2 => '4',
+    3 => NULL,
+  ),
+  1 => 
+  array (
+    0 => NULL,
+    1 => NULL,
+    2 => '4',
+    3 => NULL,
+  ),
+  'b' => 
+  array (
+    0 => NULL,
+    1 => '2',
+    2 => NULL,
+    3 => NULL,
+  ),
+  2 => 
+  array (
+    0 => NULL,
+    1 => '2',
+    2 => NULL,
+    3 => NULL,
+  ),
+)
+
+array (
+  0 => 
+  array (
+    0 => 
+    array (
+      0 => '1',
+      1 => 0,
+    ),
+    1 => 
+    array (
+      0 => '23',
+      1 => 1,
+    ),
+    2 => 
+    array (
+      0 => '45',
+      1 => 3,
+    ),
+    3 => 
+    array (
+      0 => '6',
+      1 => 5,
+    ),
+  ),
+  'a' => 
+  array (
+    0 => NULL,
+    1 => 
+    array (
+      0 => NULL,
+      1 => -1,
+    ),
+    2 => 
+    array (
+      0 => '4',
+      1 => 3,
+    ),
+    3 => NULL,
+  ),
+  1 => 
+  array (
+    0 => NULL,
+    1 => 
+    array (
+      0 => NULL,
+      1 => -1,
+    ),
+    2 => 
+    array (
+      0 => '4',
+      1 => 3,
+    ),
+    3 => NULL,
+  ),
+  'b' => 
+  array (
+    0 => NULL,
+    1 => 
+    array (
+      0 => '2',
+      1 => 1,
+    ),
+    2 => NULL,
+    3 => NULL,
+  ),
+  2 => 
+  array (
+    0 => NULL,
+    1 => 
+    array (
+      0 => '2',
+      1 => 1,
+    ),
+    2 => NULL,
+    3 => NULL,
+  ),
+)
+
+array (
+  0 => 
+  array (
+    0 => '1',
+  ),
+  1 => 
+  array (
+    0 => '23',
+    'a' => NULL,
+    1 => NULL,
+    'b' => '2',
+    2 => '2',
+  ),
+  2 => 
+  array (
+    0 => '45',
+    'a' => '4',
+    1 => '4',
+  ),
+  3 => 
+  array (
+    0 => '6',
+  ),
+)
+
+array (
+  0 => 
+  array (
+    0 => 
+    array (
+      0 => '1',
+      1 => 0,
+    ),
+  ),
+  1 => 
+  array (
+    0 => 
+    array (
+      0 => '23',
+      1 => 1,
+    ),
+    'a' => 
+    array (
+      0 => NULL,
+      1 => -1,
+    ),
+    1 => 
+    array (
+      0 => NULL,
+      1 => -1,
+    ),
+    'b' => 
+    array (
+      0 => '2',
+      1 => 1,
+    ),
+    2 => 
+    array (
+      0 => '2',
+      1 => 1,
+    ),
+  ),
+  2 => 
+  array (
+    0 => 
+    array (
+      0 => '45',
+      1 => 3,
+    ),
+    'a' => 
+    array (
+      0 => '4',
+      1 => 3,
+    ),
+    1 => 
+    array (
+      0 => '4',
+      1 => 3,
+    ),
+  ),
+  3 => 
+  array (
+    0 => 
+    array (
+      0 => '6',
+      1 => 5,
+    ),
+  ),
+)