summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandy wharmby <wharmby@php.net>2009-01-19 16:03:40 +0000
committerandy wharmby <wharmby@php.net>2009-01-19 16:03:40 +0000
commit2c593dd95c8a3539ed517d5e0dea0c82b4374e3c (patch)
tree9e3d316676b2b062336e15570d37b55e9595031a
parentce85cecb55fd48b5f5083079f5326d3a513a9ded (diff)
downloadphp-git-2c593dd95c8a3539ed517d5e0dea0c82b4374e3c.tar.gz
New vprintf() tests. Tested on Windows, Linux and Linux 64 bit.
-rw-r--r--ext/standard/tests/strings/vprintf_basic1.phpt43
-rw-r--r--ext/standard/tests/strings/vprintf_basic2.phpt47
-rw-r--r--ext/standard/tests/strings/vprintf_basic3.phpt66
-rw-r--r--ext/standard/tests/strings/vprintf_basic4.phpt43
-rw-r--r--ext/standard/tests/strings/vprintf_basic5.phpt43
-rw-r--r--ext/standard/tests/strings/vprintf_basic6.phpt43
-rw-r--r--ext/standard/tests/strings/vprintf_basic7.phpt47
-rw-r--r--ext/standard/tests/strings/vprintf_basic7_64bit.phpt47
-rw-r--r--ext/standard/tests/strings/vprintf_basic8.phpt43
-rw-r--r--ext/standard/tests/strings/vprintf_basic9.phpt62
-rw-r--r--ext/standard/tests/strings/vprintf_error.phpt46
-rw-r--r--ext/standard/tests/strings/vprintf_variation1.phpt219
-rw-r--r--ext/standard/tests/strings/vprintf_variation10.phpt121
-rw-r--r--ext/standard/tests/strings/vprintf_variation11.phpt94
-rw-r--r--ext/standard/tests/strings/vprintf_variation11_64bit.phpt94
-rw-r--r--ext/standard/tests/strings/vprintf_variation12.phpt125
-rw-r--r--ext/standard/tests/strings/vprintf_variation12_64bit.phpt125
-rw-r--r--ext/standard/tests/strings/vprintf_variation13.phpt94
-rw-r--r--ext/standard/tests/strings/vprintf_variation13_64bit.phpt94
-rw-r--r--ext/standard/tests/strings/vprintf_variation14.phpt126
-rw-r--r--ext/standard/tests/strings/vprintf_variation14_64bit.phpt126
-rw-r--r--ext/standard/tests/strings/vprintf_variation15.phpt75
-rw-r--r--ext/standard/tests/strings/vprintf_variation15_64bit.phpt75
-rw-r--r--ext/standard/tests/strings/vprintf_variation16.phpt109
-rw-r--r--ext/standard/tests/strings/vprintf_variation16_64bit.phpt110
-rw-r--r--ext/standard/tests/strings/vprintf_variation17.phpt71
-rw-r--r--ext/standard/tests/strings/vprintf_variation18.phpt106
-rw-r--r--ext/standard/tests/strings/vprintf_variation19.phpt104
-rw-r--r--ext/standard/tests/strings/vprintf_variation19_64bit.phpt104
-rw-r--r--ext/standard/tests/strings/vprintf_variation2.phpt202
-rw-r--r--ext/standard/tests/strings/vprintf_variation3.phpt91
-rw-r--r--ext/standard/tests/strings/vprintf_variation4.phpt110
-rw-r--r--ext/standard/tests/strings/vprintf_variation4_64bit.phpt110
-rw-r--r--ext/standard/tests/strings/vprintf_variation5.phpt91
-rw-r--r--ext/standard/tests/strings/vprintf_variation6.phpt106
-rw-r--r--ext/standard/tests/strings/vprintf_variation7.phptbin0 -> 2230 bytes
-rw-r--r--ext/standard/tests/strings/vprintf_variation8.phpt109
-rw-r--r--ext/standard/tests/strings/vprintf_variation9.phpt91
38 files changed, 3412 insertions, 0 deletions
diff --git a/ext/standard/tests/strings/vprintf_basic1.phpt b/ext/standard/tests/strings/vprintf_basic1.phpt
new file mode 100644
index 0000000000..f694155b8f
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_basic1.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test vprintf() function : basic functionality - string format
+--FILE--
+<?php
+/* Prototype : int vprintf(string $format , array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+echo "*** Testing vprintf() : basic functionality - using string format ***\n";
+
+// Initialise all required variables
+$format = "format";
+$format1 = "%s";
+$format2 = "%s %s";
+$format3 = "%s %s %s";
+$arg1 = array("one");
+$arg2 = array("one","two");
+$arg3 = array("one","two","three");
+
+
+$result = vprintf($format1,$arg1);
+echo "\n";
+var_dump($result);
+$result = vprintf($format2,$arg2);
+echo "\n";
+var_dump($result);
+$result = vprintf($format3,$arg3);
+echo "\n";
+var_dump($result);
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : basic functionality - using string format ***
+one
+int(3)
+one two
+int(7)
+one two three
+int(13)
+===DONE===
+
diff --git a/ext/standard/tests/strings/vprintf_basic2.phpt b/ext/standard/tests/strings/vprintf_basic2.phpt
new file mode 100644
index 0000000000..cdf6c2d83f
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_basic2.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test vprintf() function : basic functionality - integer format
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format , array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Testing vprintf() : basic functionality - using integer format
+*/
+
+echo "*** Testing vprintf() : basic functionality - using integer format ***\n";
+
+// Initialise all required variables
+$format = "format";
+$format1 = "%d";
+$format2 = "%d %d";
+$format3 = "%d %d %d";
+$arg1 = array(111);
+$arg2 = array(111,222);
+$arg3 = array(111,222,333);
+
+$result = vprintf($format1,$arg1);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format2,$arg2);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format3,$arg3);
+echo "\n";
+var_dump($result);
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : basic functionality - using integer format ***
+111
+int(3)
+111 222
+int(7)
+111 222 333
+int(11)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_basic3.phpt b/ext/standard/tests/strings/vprintf_basic3.phpt
new file mode 100644
index 0000000000..966ea56f71
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_basic3.phpt
@@ -0,0 +1,66 @@
+--TEST--
+Test vprintf() function : basic functionality - float format
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format , array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+echo "*** Testing vprintf() : basic functionality - using float format ***\n";
+
+// Initialise all required variables
+
+$format = "format";
+$format1 = "%f";
+$format2 = "%f %f";
+$format3 = "%f %f %f";
+
+$format11 = "%F";
+$format22 = "%F %F";
+$format33 = "%F %F %F";
+$arg1 = array(11.11);
+$arg2 = array(11.11,22.22);
+$arg3 = array(11.11,22.22,33.33);
+
+$result = vprintf($format1,$arg1);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format11,$arg1);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format2,$arg2);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format22,$arg2);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format3,$arg3);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format33,$arg3);
+echo "\n";
+var_dump($result);
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : basic functionality - using float format ***
+11.110000
+int(9)
+11.110000
+int(9)
+11.110000 22.220000
+int(19)
+11.110000 22.220000
+int(19)
+11.110000 22.220000 33.330000
+int(29)
+11.110000 22.220000 33.330000
+int(29)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_basic4.phpt b/ext/standard/tests/strings/vprintf_basic4.phpt
new file mode 100644
index 0000000000..89494e1217
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_basic4.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test vprintf() function : basic functionality - bool format
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format , array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+echo "*** Testing vprintf() : basic functionality - using bool format ***\n";
+
+// Initialise all required variables
+$format = "format";
+$format1 = "%b";
+$format2 = "%b %b";
+$format3 = "%b %b %b";
+$arg1 = array(TRUE);
+$arg2 = array(TRUE,FALSE);
+$arg3 = array(TRUE,FALSE,TRUE);
+
+$result = vprintf($format1,$arg1);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format2,$arg2);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format3,$arg3);
+echo "\n";
+var_dump($result);
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : basic functionality - using bool format ***
+1
+int(1)
+1 0
+int(3)
+1 0 1
+int(5)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_basic5.phpt b/ext/standard/tests/strings/vprintf_basic5.phpt
new file mode 100644
index 0000000000..e999417bf8
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_basic5.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test vprintf() function : basic functionality - char format
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format , array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+echo "*** Testing vprintf() : basic functionality - using char format ***\n";
+
+// Initialise all required variables
+$format = "format";
+$format1 = "%c";
+$format2 = "%c %c";
+$format3 = "%c %c %c";
+$arg1 = array(65);
+$arg2 = array(65,66);
+$arg3 = array(65,66,67);
+
+$result = vprintf($format1,$arg1);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format2,$arg2);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format3,$arg3);
+echo "\n";
+var_dump($result);
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : basic functionality - using char format ***
+A
+int(1)
+A B
+int(3)
+A B C
+int(5)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_basic6.phpt b/ext/standard/tests/strings/vprintf_basic6.phpt
new file mode 100644
index 0000000000..7f1bbd1dde
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_basic6.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test vprintf() function : basic functionality - exponential format
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format , array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+echo "*** Testing vprintf() : basic functionality - using exponential format ***\n";
+
+// Initialise all required variables
+$format = "format";
+$format1 = "%e";
+$format2 = "%e %e";
+$format3 = "%e %e %e";
+$arg1 = array(1000);
+$arg2 = array(1000,2000);
+$arg3 = array(1000,2000,3000);
+
+$result = vprintf($format1,$arg1);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format2,$arg2);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format3,$arg3);
+echo "\n";
+var_dump($result);
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : basic functionality - using exponential format ***
+1.000000e+3
+int(11)
+1.000000e+3 2.000000e+3
+int(23)
+1.000000e+3 2.000000e+3 3.000000e+3
+int(35)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_basic7.phpt b/ext/standard/tests/strings/vprintf_basic7.phpt
new file mode 100644
index 0000000000..fdf90fd47e
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_basic7.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test vprintf() function : basic functionality - unsigned format
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format , aaray $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+echo "*** Testing vprintf() : basic functionality - using unsigned format ***\n";
+
+// Initialise all required variables
+$format = "format";
+$format1 = "%u";
+$format2 = "%u %u";
+$format3 = "%u %u %u";
+$arg1 = array(-1111);
+$arg2 = array(-1111,-1234567);
+$arg3 = array(-1111,-1234567,-2345432);
+
+$result = vprintf($format1,$arg1);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format2,$arg2);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format3,$arg3);
+echo "\n";
+var_dump($result);
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : basic functionality - using unsigned format ***
+4294966185
+int(10)
+4294966185 4293732729
+int(21)
+4294966185 4293732729 4292621864
+int(32)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_basic7_64bit.phpt b/ext/standard/tests/strings/vprintf_basic7_64bit.phpt
new file mode 100644
index 0000000000..e563848390
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_basic7_64bit.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test vprintf() function : basic functionality - unsigned format
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format , aaray $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+echo "*** Testing vprintf() : basic functionality - using unsigned format ***\n";
+
+// Initialise all required variables
+$format = "format";
+$format1 = "%u";
+$format2 = "%u %u";
+$format3 = "%u %u %u";
+$arg1 = array(-1111);
+$arg2 = array(-1111,-1234567);
+$arg3 = array(-1111,-1234567,-2345432);
+
+$result = vprintf($format1,$arg1);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format2,$arg2);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format3,$arg3);
+echo "\n";
+var_dump($result);
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing vprintf() : basic functionality - using unsigned format ***
+18446744073709550505
+int(20)
+18446744073709550505 18446744073708317049
+int(41)
+18446744073709550505 18446744073708317049 18446744073707206184
+int(62)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_basic8.phpt b/ext/standard/tests/strings/vprintf_basic8.phpt
new file mode 100644
index 0000000000..91c6dd782d
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_basic8.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test vprintf() function : basic functionality - octal format
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format , array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+echo "*** Testing vprintf() : basic functionality - using octal format ***\n";
+
+// Initialise all required variables
+$format = "format";
+$format1 = "%o";
+$format2 = "%o %o";
+$format3 = "%o %o %o";
+$arg1 = array(021);
+$arg2 = array(021,0347);
+$arg3 = array(021,0347,05678);
+
+$result = vprintf($format1,$arg1);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format2,$arg2);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format3,$arg3);
+echo "\n";
+var_dump($result);
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : basic functionality - using octal format ***
+21
+int(2)
+21 347
+int(6)
+21 347 567
+int(10)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_basic9.phpt b/ext/standard/tests/strings/vprintf_basic9.phpt
new file mode 100644
index 0000000000..4aa12a080f
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_basic9.phpt
@@ -0,0 +1,62 @@
+--TEST--
+Test vprintf() function : basic functionality - hexadecimal format
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format , array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+echo "*** Testing vprintf() : basic functionality - using hexadecimal format ***\n";
+
+// Initialising different format strings
+$format = "format";
+$format1 = "%x";
+$format2 = "%x %x";
+$format3 = "%x %x %x";
+
+$format11 = "%X";
+$format22 = "%X %X";
+$format33 = "%X %X %X";
+
+$arg1 = array(11);
+$arg2 = array(11,132);
+$arg3 = array(11,132,177);
+
+$result = vprintf($format1,$arg1);
+echo "\n";
+var_dump($result);
+$result = vprintf($format11,$arg1);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format2,$arg2);
+echo "\n";
+var_dump($result);
+$result = vprintf($format22,$arg2);
+echo "\n";
+var_dump($result);
+
+$result = vprintf($format3,$arg3);echo "\n";
+var_dump($result);
+$result = vprintf($format33,$arg3);
+echo "\n";
+var_dump($result);
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : basic functionality - using hexadecimal format ***
+b
+int(1)
+B
+int(1)
+b 84
+int(4)
+B 84
+int(4)
+b 84 b1
+int(7)
+B 84 B1
+int(7)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_error.phpt b/ext/standard/tests/strings/vprintf_error.phpt
new file mode 100644
index 0000000000..91fc1bdc32
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_error.phpt
@@ -0,0 +1,46 @@
+--TEST--
+Test vprintf() function : error conditions
+--FILE--
+<?php
+/* Prototype : int vprintf(string $format , array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+ */
+
+echo "*** Testing vprintf() : error conditions ***\n";
+
+// initialising the required variables
+$format = "%s";
+$args = array("hello");
+$extra_arg = "extra arg";
+
+// Zero arguments
+echo "\n-- Testing vprintf() function with Zero arguments --\n";
+var_dump( vprintf() );
+
+echo "\n-- Testing vprintf() function with less than expected no. of arguments --\n";
+var_dump( vprintf($format) );
+
+echo "\n-- testing vprintf() function with more than expected no. of arguments --\n";
+var_dump( vprintf($format, $args, $extra_arg) );
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing vprintf() : error conditions ***
+
+-- Testing vprintf() function with Zero arguments --
+
+Warning: vprintf() expects at least 1 parameter, 0 given in %s on line %d
+bool(false)
+
+-- Testing vprintf() function with less than expected no. of arguments --
+
+Warning: Wrong parameter count for vprintf() in %s on line %d
+bool(false)
+
+-- testing vprintf() function with more than expected no. of arguments --
+
+Warning: Wrong parameter count for vprintf() in %s on line %d
+bool(false)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation1.phpt b/ext/standard/tests/strings/vprintf_variation1.phpt
new file mode 100644
index 0000000000..18f314f284
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation1.phpt
@@ -0,0 +1,219 @@
+--TEST--
+Test vprintf() function : usage variations - unexpected values for the format argument
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format, array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different unexpected format strings are passed to
+ * the '$format' argument of the function
+*/
+
+echo "*** Testing vprintf() : with unexpected values for format argument ***\n";
+
+// initialising the required variables
+$args = array(1, 2);
+
+//get an unset variable
+$unset_var = 10;
+unset ($unset_var);
+
+// declaring a class
+class sample
+{
+ public function __toString() {
+ return "object";
+ }
+}
+
+// Defining resource
+$file_handle = fopen(__FILE__, 'r');
+
+
+//array of values to iterate over
+$values = array(
+
+ // int data
+/*1*/ 0,
+ 1,
+ 12345,
+ -2345,
+
+ // float data
+/*5*/ 10.5,
+ -10.5,
+ 10.1234567e10,
+ 10.7654321E-10,
+ .5,
+
+ // array data
+/*10*/ array(),
+ array(0),
+ array(1),
+ array(1,2),
+ array('color' => 'red', 'item' => 'pen'),
+
+ // null data
+/*15*/ NULL,
+ null,
+
+ // boolean data
+/*17*/ true,
+ false,
+ TRUE,
+ FALSE,
+
+ // empty data
+/*21*/ "",
+ '',
+
+ // object data
+/*23*/ new sample(),
+
+ // undefined data
+/*24*/ @$undefined_var,
+
+ // unset data
+/*25*/ @$unset_var,
+
+ // resource data
+/*26*/ $file_handle
+);
+
+// loop through each element of the array for format
+
+$counter = 1;
+foreach($values as $value) {
+ echo "\n -- Iteration $counter --\n";
+ $result = vprintf($value,$args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+
+};
+
+// closing the resource
+fclose($file_handle);
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing vprintf() : with unexpected values for format argument ***
+
+ -- Iteration 1 --
+0
+int(1)
+
+ -- Iteration 2 --
+1
+int(1)
+
+ -- Iteration 3 --
+12345
+int(5)
+
+ -- Iteration 4 --
+-2345
+int(5)
+
+ -- Iteration 5 --
+10.5
+int(4)
+
+ -- Iteration 6 --
+-10.5
+int(5)
+
+ -- Iteration 7 --
+101234567000
+int(12)
+
+ -- Iteration 8 --
+1.07654321E-9
+int(13)
+
+ -- Iteration 9 --
+0.5
+int(3)
+
+ -- Iteration 10 --
+
+Notice: Array to string conversion in %s on line %d
+Array
+int(5)
+
+ -- Iteration 11 --
+
+Notice: Array to string conversion in %s on line %d
+Array
+int(5)
+
+ -- Iteration 12 --
+
+Notice: Array to string conversion in %s on line %d
+Array
+int(5)
+
+ -- Iteration 13 --
+
+Notice: Array to string conversion in %s on line %d
+Array
+int(5)
+
+ -- Iteration 14 --
+
+Notice: Array to string conversion in %s on line %d
+Array
+int(5)
+
+ -- Iteration 15 --
+
+int(0)
+
+ -- Iteration 16 --
+
+int(0)
+
+ -- Iteration 17 --
+1
+int(1)
+
+ -- Iteration 18 --
+
+int(0)
+
+ -- Iteration 19 --
+1
+int(1)
+
+ -- Iteration 20 --
+
+int(0)
+
+ -- Iteration 21 --
+
+int(0)
+
+ -- Iteration 22 --
+
+int(0)
+
+ -- Iteration 23 --
+object
+int(6)
+
+ -- Iteration 24 --
+
+int(0)
+
+ -- Iteration 25 --
+
+int(0)
+
+ -- Iteration 26 --
+Resource id #%d
+int(%d)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation10.phpt b/ext/standard/tests/strings/vprintf_variation10.phpt
new file mode 100644
index 0000000000..d211a62e89
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation10.phpt
@@ -0,0 +1,121 @@
+--TEST--
+Test vprintf() function : usage variations - char formats with non-char values
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different char formats and non-char values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : char formats and non-char values ***\n";
+
+// defining an array of various char formats
+$formats =
+ '%c %+c %-c
+ %lc %Lc %4c %-4c
+ %10.4c %-10.4c %04c %04.4c
+ %\'10c %\'10c %\'$10c %\'_10c
+ %3$c %4$c %1$c %2$c';
+
+// Arrays of non char values for the format defined in $format.
+// Each sub array contains non char values which correspond to each format in $format
+$args_array = array(
+
+ // array of float values
+ array(65.8, -65.8, +66.8,
+ 93.2, -93.2, 126.8, -126.49,
+ 35.44, -35.68, 32.99, -32.00,
+ -61.51, 61.51, 50.49, -54.50,
+ 83.33, +84.44, 81.11, 82.22),
+
+ // array of int values
+ array(65, -65, +66,
+ 169, -169, 126, -126,
+ 35, -35, 32, -32,
+ -61, 61, 50, -54,
+ 83, +84, 81, 82),
+
+ // array of strings
+ array(" ", ' ', 'hello',
+ '123hello', "123hello", '-123hello', '+123hello',
+ "\12345678hello", "-\12345678hello", '0123456hello', 'h123456ello',
+ "1234hello", "hello\0world", "NULL", "true",
+ "3", "4", '1', '2'),
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(false), array(TRUE), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, false, TRUE, FALSE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different char formats from the above $format array
+// and with non-char values from the above $args_array array
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing vprintf() : char formats and non-char values ***
+
+-- Iteration 1 --
+A %s B
+ ] c ~ %s
+ # %s %s
+ %s = 2 %s
+ B ] A %s
+int(64)
+
+-- Iteration 2 --
+A %s B
+ %s c ~ %s
+ # %s %s
+ %s = 2 %s
+ B %s A %s
+int(68)
+
+-- Iteration 3 --
+%c %c %c
+ { c %s {
+ %c %c @ %c
+ %s %c %c %c
+ %c { %c %c
+int(54)
+
+-- Iteration 4 --
+%c %c %c
+ %c c %c %c
+ %c %c %c %c
+ %c %c %c %c
+ %c %c %c %c
+int(50)
+
+-- Iteration 5 --
+%c %c %c
+ %c c %c %c
+ %c %c %c %c
+ %c %c %c %c
+ %c %c %c %c
+int(50)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation11.phpt b/ext/standard/tests/strings/vprintf_variation11.phpt
new file mode 100644
index 0000000000..f803e96c83
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation11.phpt
@@ -0,0 +1,94 @@
+--TEST--
+Test vprintf() function : usage variations - octal formats with octal values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different octal formats and octal values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : octal formats with octal values ***\n";
+
+// defining array of octal formats
+$formats = array(
+ "%o",
+ "%+o %-o %O",
+ "%lo %Lo, %4o %-4o",
+ "%10.4o %-10.4o %04o %04.4o",
+ "%'#2o %'2o %'$2o %'_2o",
+ "%o %o %o %o",
+ "%% %%o %10 o%",
+ '%3$o %4$o %1$o %2$o'
+);
+
+// Arrays of octal values for the format defined in $format.
+// Each sub array contains octal values which correspond to each format string in $format
+$args_array = array(
+ array(00),
+ array(-01, 01, +022),
+ array(-020000000000, 020000000000, 017777777777, -017777777777),
+ array(0123456, 012345678, -01234567, 01234567),
+ array(0111, 02222, -0333333, -044444444),
+ array(0x123b, 0xfAb, 0123, 01293),
+ array(01234, 05678, -01234, 02345),
+ array(03, 04, 01, 02)
+
+);
+
+// looping to test vprintf() with different octal formats from the above $formats array
+// and with octal values from the above $args_array array
+$counter = 1;
+foreach($formats as $format) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : octal formats with octal values ***
+
+-- Iteration 1 --
+0
+int(1)
+
+-- Iteration 2 --
+37777777777 1
+int(14)
+
+-- Iteration 3 --
+20000000000 o, 17777777777 20000000001
+int(38)
+
+-- Iteration 4 --
+ 37776543211 0000
+int(38)
+
+-- Iteration 5 --
+111 2222 37777444445 37733333334
+int(32)
+
+-- Iteration 6 --
+11073 7653 123 12
+int(17)
+
+-- Iteration 7 --
+% %o o
+int(6)
+
+-- Iteration 8 --
+1 2 3 4
+int(7)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation11_64bit.phpt b/ext/standard/tests/strings/vprintf_variation11_64bit.phpt
new file mode 100644
index 0000000000..c92ef088fe
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation11_64bit.phpt
@@ -0,0 +1,94 @@
+--TEST--
+Test vprintf() function : usage variations - octal formats with octal values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different octal formats and octal values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : octal formats with octal values ***\n";
+
+// defining array of octal formats
+$formats = array(
+ "%o",
+ "%+o %-o %O",
+ "%lo %Lo, %4o %-4o",
+ "%10.4o %-10.4o %04o %04.4o",
+ "%'#2o %'2o %'$2o %'_2o",
+ "%o %o %o %o",
+ "%% %%o %10 o%",
+ '%3$o %4$o %1$o %2$o'
+);
+
+// Arrays of octal values for the format defined in $format.
+// Each sub array contains octal values which correspond to each format string in $format
+$args_array = array(
+ array(00),
+ array(-01, 01, +022),
+ array(-020000000000, 020000000000, 017777777777, -017777777777),
+ array(0123456, 012345678, -01234567, 01234567),
+ array(0111, 02222, -0333333, -044444444),
+ array(0x123b, 0xfAb, 0123, 01293),
+ array(01234, 05678, -01234, 02345),
+ array(03, 04, 01, 02)
+
+);
+
+// looping to test vprintf() with different octal formats from the above $formats array
+// and with octal values from the above $args_array array
+$counter = 1;
+foreach($formats as $format) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : octal formats with octal values ***
+
+-- Iteration 1 --
+0
+int(1)
+
+-- Iteration 2 --
+1777777777777777777777 1
+int(25)
+
+-- Iteration 3 --
+1777777777760000000000 o, 17777777777 1777777777760000000001
+int(60)
+
+-- Iteration 4 --
+ 1777777777777776543211 0000
+int(49)
+
+-- Iteration 5 --
+111 2222 1777777777777777444445 1777777777777733333334
+int(54)
+
+-- Iteration 6 --
+11073 7653 123 12
+int(17)
+
+-- Iteration 7 --
+% %o o
+int(6)
+
+-- Iteration 8 --
+1 2 3 4
+int(7)
+===DONE=== \ No newline at end of file
diff --git a/ext/standard/tests/strings/vprintf_variation12.phpt b/ext/standard/tests/strings/vprintf_variation12.phpt
new file mode 100644
index 0000000000..99938502d5
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation12.phpt
@@ -0,0 +1,125 @@
+--TEST--
+Test vprintf() function : usage variations - octal formats with non-octal values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different octal formats and non-octal values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : octal formats and non-octal values ***\n";
+
+// defining array of octal formats
+$formats =
+ '%o %+o %-o
+ %lo %Lo %4o %-4o
+ %10.4o %-10.4o %.4o
+ %\'#2o %\'2o %\'$2o %\'_2o
+ %3$o %4$o %1$o %2$o';
+
+// Arrays of non octal values for the format defined in $format.
+// Each sub array contains non octal values which correspond to each format in $format
+$args_array = array(
+
+ // array of float values
+ array(2.2, .2, 10.2,
+ 123456.234, 123456.234, -1234.6789, +1234.6789,
+ 2e10, +2e12, 22e+12,
+ 12345.780, 12.000000011111, -12.00000111111, -123456.234,
+ 3.33, +4.44, 1.11,-2.22 ),
+
+ // array of int values
+ array(2, -2, +2,
+ 123456, 123456234, -12346789, +12346789,
+ 123200, +20000, 22212,
+ 12345780, 1211111, -12111111, -12345634,
+ 3, +4, 1,-2 ),
+
+ // array of strings
+ array(" ", ' ', 'hello',
+ '123hello', "123hello", '-123hello', '+123hello',
+ "\12345678hello", "-\12345678hello", 'h123456ello',
+ "1234hello", "hello\0world", "NULL", "true",
+ "3", "4", '1', '2'),
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(false), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, false, TRUE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different octal formats from the above $format array
+// and with non-octal values from the above $args_array array
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : octal formats and non-octal values ***
+
+-- Iteration 1 --
+2 0 12
+ 361100 o 37777775456 2322
+
+ 30071 14 37777777764 37777416700
+ 12 361100 2 0
+int(116)
+
+-- Iteration 2 --
+2 37777777776 2
+ 361100 o 37720715133 57062645
+
+ 57060664 4475347 37721631371 37720717336
+ 2 361100 2 37777777776
+int(146)
+
+-- Iteration 3 --
+0 0 0
+ 173 o 37777777605 173
+
+ 2322 0 $0 _0
+ 0 173 0 0
+int(88)
+
+-- Iteration 4 --
+1 1 1
+ 1 o 1 1
+
+ #1 1 $1 _1
+ 1 1 1 1
+int(75)
+
+-- Iteration 5 --
+1 1 0
+ 1 o 0 1
+
+ #0 1 $1 _0
+ 0 1 1 1
+int(75)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation12_64bit.phpt b/ext/standard/tests/strings/vprintf_variation12_64bit.phpt
new file mode 100644
index 0000000000..32dc01bfc1
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation12_64bit.phpt
@@ -0,0 +1,125 @@
+--TEST--
+Test vprintf() function : usage variations - octal formats with non-octal values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different octal formats and non-octal values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : octal formats and non-octal values ***\n";
+
+// defining array of octal formats
+$formats =
+ '%o %+o %-o
+ %lo %Lo %4o %-4o
+ %10.4o %-10.4o %.4o
+ %\'#2o %\'2o %\'$2o %\'_2o
+ %3$o %4$o %1$o %2$o';
+
+// Arrays of non octal values for the format defined in $format.
+// Each sub array contains non octal values which correspond to each format in $format
+$args_array = array(
+
+ // array of float values
+ array(2.2, .2, 10.2,
+ 123456.234, 123456.234, -1234.6789, +1234.6789,
+ 2e10, +2e12, 22e+12,
+ 12345.780, 12.000000011111, -12.00000111111, -123456.234,
+ 3.33, +4.44, 1.11,-2.22 ),
+
+ // array of int values
+ array(2, -2, +2,
+ 123456, 123456234, -12346789, +12346789,
+ 123200, +20000, 22212,
+ 12345780, 1211111, -12111111, -12345634,
+ 3, +4, 1,-2 ),
+
+ // array of strings
+ array(" ", ' ', 'hello',
+ '123hello', "123hello", '-123hello', '+123hello',
+ "\12345678hello", "-\12345678hello", 'h123456ello',
+ "1234hello", "hello\0world", "NULL", "true",
+ "3", "4", '1', '2'),
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(false), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, false, TRUE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different octal formats from the above $format array
+// and with non-octal values from the above $args_array array
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing vprintf() : octal formats and non-octal values ***
+
+-- Iteration 1 --
+2 0 12
+ 361100 o 1777777777777777775456 2322
+
+ 30071 14 1777777777777777777764 1777777777777777416700
+ 12 361100 2 0
+int(149)
+
+-- Iteration 2 --
+2 1777777777777777777776 2
+ 361100 o 1777777777777720715133 57062645
+
+ 57060664 4475347 1777777777777721631371 1777777777777720717336
+ 2 361100 2 1777777777777777777776
+int(201)
+
+-- Iteration 3 --
+0 0 0
+ 173 o 1777777777777777777605 173
+
+ 2322 0 $0 _0
+ 0 173 0 0
+int(99)
+
+-- Iteration 4 --
+1 1 1
+ 1 o 1 1
+
+ #1 1 $1 _1
+ 1 1 1 1
+int(75)
+
+-- Iteration 5 --
+1 1 0
+ 1 o 0 1
+
+ #0 1 $1 _0
+ 0 1 1 1
+int(75)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation13.phpt b/ext/standard/tests/strings/vprintf_variation13.phpt
new file mode 100644
index 0000000000..6b629c851d
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation13.phpt
@@ -0,0 +1,94 @@
+--TEST--
+Test vprintf() function : usage variations - hexa formats with hexa values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different hexa formats and hexa values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : hexa formats with hexa values ***\n";
+
+// defining array of different hexa formats
+$formats = array(
+ "%x",
+ "%+x %-x %X",
+ "%lx %Lx, %4x %-4x",
+ "%10.4x %-10.4x %04x %04.4x",
+ "%'#2x %'2x %'$2x %'_2x",
+ "%x %x %x %x",
+ "% %%x x%",
+ '%3$x %4$x %1$x %2$x'
+);
+
+// Arrays of hexa values for the format defined in $format.
+// Each sub array contains hexa values which correspond to each format string in $format
+$args_array = array(
+ array(0x0),
+ array(-0x1, 0x1, +0x22),
+ array(0x7FFFFFFF, -0x7fffffff, +0x7000000, -0x80000000),
+ array(123456, 12345678, -1234567, 1234567),
+ array(1, 0x2222, 0333333, -0x44444444),
+ array(0x123b, 0xfAb, "0xaxz", 01293),
+ array(0x1234, 0x34, 0x2ff),
+ array(0x3, 0x4, 0x1, 0x2)
+
+);
+
+// looping to test vprintf() with different char octal from the above $format array
+// and with octal values from the above $args_array array
+$counter = 1;
+foreach($formats as $format) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : hexa formats with hexa values ***
+
+-- Iteration 1 --
+0
+int(1)
+
+-- Iteration 2 --
+ffffffff 1 22
+int(13)
+
+-- Iteration 3 --
+7fffffff x, 7000000 80000000
+int(28)
+
+-- Iteration 4 --
+ ffed2979 0000
+int(35)
+
+-- Iteration 5 --
+#1 2222 1b6db bbbbbbbc
+int(22)
+
+-- Iteration 6 --
+123b fab 0 a
+int(12)
+
+-- Iteration 7 --
+%34 x
+int(5)
+
+-- Iteration 8 --
+1 2 3 4
+int(7)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation13_64bit.phpt b/ext/standard/tests/strings/vprintf_variation13_64bit.phpt
new file mode 100644
index 0000000000..69338a6ad4
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation13_64bit.phpt
@@ -0,0 +1,94 @@
+--TEST--
+Test vprintf() function : usage variations - hexa formats with hexa values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different hexa formats and hexa values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : hexa formats with hexa values ***\n";
+
+// defining array of different hexa formats
+$formats = array(
+ "%x",
+ "%+x %-x %X",
+ "%lx %Lx, %4x %-4x",
+ "%10.4x %-10.4x %04x %04.4x",
+ "%'#2x %'2x %'$2x %'_2x",
+ "%x %x %x %x",
+ "% %%x x%",
+ '%3$x %4$x %1$x %2$x'
+);
+
+// Arrays of hexa values for the format defined in $format.
+// Each sub array contains hexa values which correspond to each format string in $format
+$args_array = array(
+ array(0x0),
+ array(-0x1, 0x1, +0x22),
+ array(0x7FFFFFFF, -0x7fffffff, +0x7000000, -0x80000000),
+ array(123456, 12345678, -1234567, 1234567),
+ array(1, 0x2222, 0333333, -0x44444444),
+ array(0x123b, 0xfAb, "0xaxz", 01293),
+ array(0x1234, 0x34, 0x2ff),
+ array(0x3, 0x4, 0x1, 0x2)
+
+);
+
+// looping to test vprintf() with different char octal from the above $format array
+// and with octal values from the above $args_array array
+$counter = 1;
+foreach($formats as $format) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : hexa formats with hexa values ***
+
+-- Iteration 1 --
+0
+int(1)
+
+-- Iteration 2 --
+ffffffffffffffff 1 22
+int(21)
+
+-- Iteration 3 --
+7fffffff x, 7000000 ffffffff80000000
+int(36)
+
+-- Iteration 4 --
+ ffffffffffed2979 0000
+int(43)
+
+-- Iteration 5 --
+#1 2222 1b6db ffffffffbbbbbbbc
+int(30)
+
+-- Iteration 6 --
+123b fab 0 a
+int(12)
+
+-- Iteration 7 --
+%34 x
+int(5)
+
+-- Iteration 8 --
+1 2 3 4
+int(7)
+===DONE=== \ No newline at end of file
diff --git a/ext/standard/tests/strings/vprintf_variation14.phpt b/ext/standard/tests/strings/vprintf_variation14.phpt
new file mode 100644
index 0000000000..bbb15e149a
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation14.phpt
@@ -0,0 +1,126 @@
+--TEST--
+Test vprintf() function : usage variations - hexa formats with non-hexa values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different hexa formats and non-hexa values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : hexa formats and non-hexa values ***\n";
+
+// defining array of different hexa formats
+$formats =
+ '%x %+x %-x
+ %lx %Lx %4x %-4x
+ %10.4x %-10.4x %.4x
+ %\'#2x %\'2x %\'$2x %\'_2x
+ %3$x %4$x %1$x %2$x';
+
+// Arrays of non hexa values for the format defined in $format.
+// Each sub array contains non hexa values which correspond to each format in $format
+$args_array = array(
+
+ // array of float values
+ array(2.2, .2, 10.2,
+ 123456.234, 123456.234, -1234.6789, +1234.6789,
+ 2e10, +2e12, 22e+12,
+ 12345.780, 12.000000011111, -12.00000111111, -123456.234,
+ 3.33, +4.44, 1.11,-2.22 ),
+
+ // array of int values
+ array(2, -2, +2,
+ 123456, 123456234, -12346789, +12346789,
+ 123200, +20000, 22212,
+ 12345780, 1211111, -12111111, -12345634,
+ 3, +4, 1,-2 ),
+
+ // array of strings
+ array(" ", ' ', 'hello',
+ '123hello', "123hello", '-123hello', '+123hello',
+ "\12345678hello", "-\12345678hello", 'h123456ello',
+ "1234hello", "hello\0world", "NULL", "true",
+ "3", "4", '1', '2'),
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(TRUE), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, TRUE, FALSE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different hexa formats from the above $format array
+// and with non-hexa values from the above $args_array array
+
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : hexa formats and non-hexa values ***
+
+-- Iteration 1 --
+2 0 a
+ 1e240 x fffffb2e 4d2
+
+ 3039 c fffffff4 fffe1dc0
+ a 1e240 2 0
+int(101)
+
+-- Iteration 2 --
+2 fffffffe 2
+ 1e240 x ff439a5b bc65a5
+
+ bc61b4 127ae7 ff4732f9 ff439ede
+ 2 1e240 2 fffffffe
+int(124)
+
+-- Iteration 3 --
+0 0 0
+ 7b x ffffff85 7b
+
+ 4d2 0 $0 _0
+ 0 7b 0 0
+int(82)
+
+-- Iteration 4 --
+1 1 1
+ 1 x 1 1
+
+ #1 1 $1 _1
+ 1 1 1 1
+int(75)
+
+-- Iteration 5 --
+1 1 0
+ 1 x 0 1
+
+ #0 1 $1 _0
+ 0 1 1 1
+int(75)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation14_64bit.phpt b/ext/standard/tests/strings/vprintf_variation14_64bit.phpt
new file mode 100644
index 0000000000..51b2f477b8
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation14_64bit.phpt
@@ -0,0 +1,126 @@
+--TEST--
+Test vprintf() function : usage variations - hexa formats with non-hexa values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different hexa formats and non-hexa values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : hexa formats and non-hexa values ***\n";
+
+// defining array of different hexa formats
+$formats =
+ '%x %+x %-x
+ %lx %Lx %4x %-4x
+ %10.4x %-10.4x %.4x
+ %\'#2x %\'2x %\'$2x %\'_2x
+ %3$x %4$x %1$x %2$x';
+
+// Arrays of non hexa values for the format defined in $format.
+// Each sub array contains non hexa values which correspond to each format in $format
+$args_array = array(
+
+ // array of float values
+ array(2.2, .2, 10.2,
+ 123456.234, 123456.234, -1234.6789, +1234.6789,
+ 2e10, +2e12, 22e+12,
+ 12345.780, 12.000000011111, -12.00000111111, -123456.234,
+ 3.33, +4.44, 1.11,-2.22 ),
+
+ // array of int values
+ array(2, -2, +2,
+ 123456, 123456234, -12346789, +12346789,
+ 123200, +20000, 22212,
+ 12345780, 1211111, -12111111, -12345634,
+ 3, +4, 1,-2 ),
+
+ // array of strings
+ array(" ", ' ', 'hello',
+ '123hello', "123hello", '-123hello', '+123hello',
+ "\12345678hello", "-\12345678hello", 'h123456ello',
+ "1234hello", "hello\0world", "NULL", "true",
+ "3", "4", '1', '2'),
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(TRUE), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, TRUE, FALSE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different hexa formats from the above $format array
+// and with non-hexa values from the above $args_array array
+
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : hexa formats and non-hexa values ***
+
+-- Iteration 1 --
+2 0 a
+ 1e240 x fffffffffffffb2e 4d2
+
+ 3039 c fffffffffffffff4 fffffffffffe1dc0
+ a 1e240 2 0
+int(125)
+
+-- Iteration 2 --
+2 fffffffffffffffe 2
+ 1e240 x ffffffffff439a5b bc65a5
+
+ bc61b4 127ae7 ffffffffff4732f9 ffffffffff439ede
+ 2 1e240 2 fffffffffffffffe
+int(164)
+
+-- Iteration 3 --
+0 0 0
+ 7b x ffffffffffffff85 7b
+
+ 4d2 0 $0 _0
+ 0 7b 0 0
+int(90)
+
+-- Iteration 4 --
+1 1 1
+ 1 x 1 1
+
+ #1 1 $1 _1
+ 1 1 1 1
+int(75)
+
+-- Iteration 5 --
+1 1 0
+ 1 x 0 1
+
+ #0 1 $1 _0
+ 0 1 1 1
+int(75)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation15.phpt b/ext/standard/tests/strings/vprintf_variation15.phpt
new file mode 100644
index 0000000000..a812ff6b8f
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation15.phpt
@@ -0,0 +1,75 @@
+--TEST--
+Test vprintf() function : usage variations - unsigned formats with unsigned values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different unsigned formats and unsigned values
+ * are passed to the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : unsigned formats and unsigned values ***\n";
+
+// defining array of unsigned formats
+$formats = array(
+ '%u %+u %-u',
+ '%lu %Lu %4u %-4u',
+ '%10.4u %-10.4u %.4u',
+ '%\'#2u %\'2u %\'$2u %\'_2u',
+ '%3$u %4$u %1$u %2$u'
+);
+
+// Arrays of unsigned values for the format defined in $format.
+// Each sub array contains unsigned values which correspond to each format string in $format
+$args_array = array(
+ array(1234567, 01234567, 0 ),
+ array(12345678900, 12345678900, 1234, 12345),
+ array("1234000", 10.1234567e10, 1.2e2),
+ array(1, 0, 00, "10_"),
+ array(3, 4, 1, 2)
+);
+
+// looping to test vprintf() with different unsigned formats from the above $format array
+// and with signed and other types of values from the above $args_array array
+$counter = 1;
+foreach($formats as $format) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : unsigned formats and unsigned values ***
+
+-- Iteration 1 --
+1234567 342391 0
+int(16)
+
+-- Iteration 2 --
+2147483647 u 1234 12345
+int(23)
+
+-- Iteration 3 --
+ 1234000 2147483647 120
+int(25)
+
+-- Iteration 4 --
+#1 0 $0 10
+int(10)
+
+-- Iteration 5 --
+1 2 3 4
+int(7)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation15_64bit.phpt b/ext/standard/tests/strings/vprintf_variation15_64bit.phpt
new file mode 100644
index 0000000000..666865c7c6
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation15_64bit.phpt
@@ -0,0 +1,75 @@
+--TEST--
+Test vprintf() function : usage variations - unsigned formats with unsigned values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different unsigned formats and unsigned values
+ * are passed to the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : unsigned formats and unsigned values ***\n";
+
+// defining array of unsigned formats
+$formats = array(
+ '%u %+u %-u',
+ '%lu %Lu %4u %-4u',
+ '%10.4u %-10.4u %.4u',
+ '%\'#2u %\'2u %\'$2u %\'_2u',
+ '%3$u %4$u %1$u %2$u'
+);
+
+// Arrays of unsigned values for the format defined in $format.
+// Each sub array contains unsigned values which correspond to each format string in $format
+$args_array = array(
+ array(1234567, 01234567, 0 ),
+ array(12345678900, 12345678900, 1234, 12345),
+ array("1234000", 10e20, 1.2e2),
+ array(1, 0, 00, "10_"),
+ array(3, 4, 1, 2)
+);
+
+// looping to test vprintf() with different unsigned formats from the above $format array
+// and with signed and other types of values from the above $args_array array
+$counter = 1;
+foreach($formats as $format) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing vprintf() : unsigned formats and unsigned values ***
+
+-- Iteration 1 --
+1234567 342391 0
+int(16)
+
+-- Iteration 2 --
+12345678900 u 1234 12345
+int(24)
+
+-- Iteration 3 --
+ 1234000 9223372036854775807 120
+int(34)
+
+-- Iteration 4 --
+#1 0 $0 10
+int(10)
+
+-- Iteration 5 --
+1 2 3 4
+int(7)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation16.phpt b/ext/standard/tests/strings/vprintf_variation16.phpt
new file mode 100644
index 0000000000..3bf2c579cd
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation16.phpt
@@ -0,0 +1,109 @@
+--TEST--
+Test vprintf() function : usage variations - unsigned formats with signed and other types of values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different unsigned formats and signed values and other types of values
+ * are passed to the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : unsigned formats and signed & other types of values ***\n";
+
+// defining array of unsigned formats
+$formats =
+ '%u %+u %-u
+ %lu %Lu %4u %-4u
+ %10.4u %-10.4u %.4u
+ %\'#2u %\'2u %\'$2u %\'_2u
+ %3$u %4$u %1$u %2$u';
+
+// Arrays of signed and other type of values for the format defined in $format.
+// Each sub array contains signed values which correspond to each format in $format
+$args_array = array(
+
+ // array of float values
+ array(+2.2, +.2, +10.2,
+ +123456.234, +123456.234, +1234.6789,
+ +2e10, +2e12, +22e+12,
+ +12345.780, +12.000000011111, -12.00000111111, -123456.234,
+ +3.33, +4.44, +1.11,-2.22 ),
+
+ // array of strings
+ array(" ", ' ', 'hello',
+ '123hello', "123hello", '-123hello', '+123hello',
+ "\12345678hello", "-\12345678hello", 'h123456ello',
+ "1234hello", "hello\0world", "NULL", "true",
+ "3", "4", '1', '2'),
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(TRUE), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, TRUE, FALSE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different unsigned formats from the above $format array
+// and with signed and other types of values from the above $args_array array
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : unsigned formats and signed & other types of values ***
+
+-- Iteration 1 --
+2 0 10
+ 123456 u 1234 2147483647
+ 2147483647 2147483647 12345
+ 12 4294967284 4294843840 _3
+ 10 123456 2 0
+int(115)
+
+-- Iteration 2 --
+0 0 0
+ 123 u 4294967173 123
+ 0 0 0
+ 1234 0 $0 _0
+ 0 123 0 0
+int(88)
+
+-- Iteration 3 --
+1 1 1
+ 1 u 1 1
+ 1 1 1
+ #1 1 $1 _1
+ 1 1 1 1
+int(76)
+
+-- Iteration 4 --
+1 1 0
+ 1 u 0 1
+ 1 1 0
+ #0 1 $1 _0
+ 0 1 1 1
+int(76)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation16_64bit.phpt b/ext/standard/tests/strings/vprintf_variation16_64bit.phpt
new file mode 100644
index 0000000000..dab90d1e45
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation16_64bit.phpt
@@ -0,0 +1,110 @@
+--TEST--
+Test vprintf() function : usage variations - unsigned formats with signed and other types of values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different unsigned formats and signed values and other types of values
+ * are passed to the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : unsigned formats and signed & other types of values ***\n";
+
+// defining array of unsigned formats
+$formats =
+ '%u %+u %-u
+ %lu %Lu %4u %-4u
+ %10.4u %-10.4u %.4u
+ %\'#2u %\'2u %\'$2u %\'_2u
+ %3$u %4$u %1$u %2$u';
+
+// Arrays of signed and other type of values for the format defined in $format.
+// Each sub array contains signed values which correspond to each format in $format
+$args_array = array(
+
+ // array of float values
+ array(+2.2, +.2, +10.2,
+ +123456.234, +123456.234, +1234.6789,
+ +2e10, +2e12, +22e+12,
+ +12345.780, +12.000000011111, -12.00000111111, -123456.234,
+ +3.33, +4.44, +1.11,-2.22 ),
+
+ // array of strings
+ array(" ", ' ', 'hello',
+ '123hello', "123hello", '-123hello', '+123hello',
+ "\12345678hello", "-\12345678hello", 'h123456ello',
+ "1234hello", "hello\0world", "NULL", "true",
+ "3", "4", '1', '2'),
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(TRUE), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, TRUE, FALSE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different unsigned formats from the above $format array
+// and with signed and other types of values from the above $args_array array
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : unsigned formats and signed & other types of values ***
+
+-- Iteration 1 --
+2 0 10
+ 123456 u 1234 20000000000
+ 2000000000000 22000000000000 12345
+ 12 18446744073709551604 18446744073709428160 _3
+ 10 123456 2 0
+int(143)
+
+-- Iteration 2 --
+0 0 0
+ 123 u 18446744073709551493 123
+ 0 0 0
+ 1234 0 $0 _0
+ 0 123 0 0
+int(98)
+
+-- Iteration 3 --
+1 1 1
+ 1 u 1 1
+ 1 1 1
+ #1 1 $1 _1
+ 1 1 1 1
+int(76)
+
+-- Iteration 4 --
+1 1 0
+ 1 u 0 1
+ 1 1 0
+ #0 1 $1 _0
+ 0 1 1 1
+int(76)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation17.phpt b/ext/standard/tests/strings/vprintf_variation17.phpt
new file mode 100644
index 0000000000..e2e8530153
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation17.phpt
@@ -0,0 +1,71 @@
+--TEST--
+Test vsprintf() function : usage variations - scientific formats with scientific values
+--FILE--
+<?php
+/* Prototype : string vsprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different scientific formats and scientific values
+ * are passed to the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : scientific formats and scientific values ***\n";
+
+// defining array of scientific formats
+$formats = array(
+ '%e %+e %-e',
+ '%le %Le %4e %-4e',
+ '%10.4e %-10.4e %.4e',
+ '%\'#20e %\'20e %\'$20e %\'_20e',
+ '%3$e %4$e %1$e %2$e'
+);
+
+// Arrays of scientific values for the format defined in $format.
+// Each sub array contains scientific values which correspond to each format string in $format
+$args_array = array(
+ array(0, 1e0, "10e2" ),
+ array(2.2e2, 10e10, 1000e-2, 1000e7),
+ array(-22e12, 10e20, 1.2e2),
+ array(1e1, +1e2, -1e3, "1e2_"),
+ array(3e3, 4e3, 1e3, 2e3)
+);
+
+// looping to test vprintf() with different scientific formats from the above $format array
+// and with signed and other types of values from the above $args_array array
+$counter = 1;
+foreach($formats as $format) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : scientific formats and scientific values ***
+
+-- Iteration 1 --
+0.000000e+0 +1.000000e+0 1.000000e+3
+int(36)
+
+-- Iteration 2 --
+2.200000e+2 e 1.000000e+1 1.000000e+10
+int(38)
+
+-- Iteration 3 --
+-2.2000e+13 1.0000e+21 1.2000e+2
+int(32)
+
+-- Iteration 4 --
+#########1.000000e+1 1.000000e+2 $$$$$$$$-1.000000e+3 _________1.000000e+2
+int(74)
+
+-- Iteration 5 --
+1.000000e+3 2.000000e+3 3.000000e+3 4.000000e+3
+int(47)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation18.phpt b/ext/standard/tests/strings/vprintf_variation18.phpt
new file mode 100644
index 0000000000..8b30ae78d9
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation18.phpt
@@ -0,0 +1,106 @@
+--TEST--
+Test vprintf() function : usage variations - scientific formats with non-scientific values
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different scientific formats and non-scientific values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : scientific formats and non-scientific values ***\n";
+
+// defining array of non-scientific formats
+$formats =
+ '%e %+e %-e
+ %le %Le %4e %-4e
+ %10.4e %-10.4e %04e %04.4e
+ %\'#2e %\'2e %\'$2e %\'_2e
+ %3$e %4$e %1$e %2$e';
+
+// Arrays of non scientific values for the format defined in $format.
+// Each sub array contains non scientific values which correspond to each format in $format
+$args_array = array(
+
+ // array of float values
+ array(2.2, .2, 10.2,
+ 123456.234, 123456.234, -1234.6789, +1234.6789,
+ 20.00, +212.2, -411000000000, 2212.000000000001,
+ 12345.780, 12.000000011111, -12.00000111111, -123456.234,
+ 3.33, +4.44, 1.11,-2.22 ),
+
+ // array of strings
+ array(" ", ' ', 'hello',
+ '123hello', "123hello", '-123hello', '+123hello',
+ "\12345678hello", "-\12345678hello", '0123456hello', 'h123456ello',
+ "1234hello", "hello\0world", "NULL", "true",
+ "3", "4", '1', '2'),
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(false), array(TRUE), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, false, TRUE, FALSE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different scientific formats from the above $format array
+// and with non-scientific values from the above $args_array array
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : scientific formats and non-scientific values ***
+
+-- Iteration 1 --
+2.200000e+0 +2.000000e-1 1.020000e+1
+ 1.234562e+5 e -1.234679e+3 1.234679e+3
+ 2.0000e+1 2.1220e+2 -4.110000e+11 2.2120e+3
+ 1.234578e+4 1.200000e+1 -1.200000e+1 -1.234562e+5
+ 1.020000e+1 1.234562e+5 2.200000e+0 2.000000e-1
+int(232)
+
+-- Iteration 2 --
+0.000000e+0 +0.000000e+0 0.000000e+0
+ 1.230000e+2 e -1.230000e+2 1.230000e+2
+ 0.0000e+0 0.0000e+0 1.234560e+5 0.0000e+0
+ 1.234000e+3 0.000000e+0 0.000000e+0 0.000000e+0
+ 0.000000e+0 1.230000e+2 0.000000e+0 0.000000e+0
+int(228)
+
+-- Iteration 3 --
+1.000000e+0 +1.000000e+0 1.000000e+0
+ 1.000000e+0 e 1.000000e+0 1.000000e+0
+ 1.0000e+0 1.0000e+0 1.000000e+0 1.0000e+0
+ 1.000000e+0 1.000000e+0 1.000000e+0 1.000000e+0
+ 1.000000e+0 1.000000e+0 1.000000e+0 1.000000e+0
+int(227)
+
+-- Iteration 4 --
+1.000000e+0 +1.000000e+0 0.000000e+0
+ 1.000000e+0 e 0.000000e+0 1.000000e+0
+ 1.0000e+0 0.0000e+0 1.000000e+0 0.0000e+0
+ 0.000000e+0 1.000000e+0 1.000000e+0 0.000000e+0
+ 0.000000e+0 1.000000e+0 1.000000e+0 1.000000e+0
+int(227)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation19.phpt b/ext/standard/tests/strings/vprintf_variation19.phpt
new file mode 100644
index 0000000000..a9288a1634
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation19.phpt
@@ -0,0 +1,104 @@
+--TEST--
+Test vprintf() function : usage variations - with whitespaces in format strings
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format , array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+echo "*** Testing vprintf() : with white spaces in format strings ***\n";
+
+// initializing the format array
+$formats = array(
+ "% d % d % d",
+ "% f % f % f",
+ "% F % F % F",
+ "% b % b % b",
+ "% c % c % c",
+ "% e % e % e",
+ "% u % u % u",
+ "% o % o % o",
+ "% x % x % x",
+ "% X % X % X",
+ "% E % E % E"
+);
+
+// initializing the args array
+
+$args_array = array(
+ array(111, 222, 333),
+ array(1.1, .2, -0.6),
+ array(1.12, -1.13, +0.23),
+ array(1, 2, 3),
+ array(65, 66, 67),
+ array(2e1, 2e-1, -2e1),
+ array(-11, +22, 33),
+ array(012, -02394, +02389),
+ array(0x11, -0x22, +0x33),
+ array(0x11, -0x22, +0x33),
+ array(2e1, 2e-1, -2e1)
+);
+
+$counter = 1;
+foreach($formats as $format) {
+ echo"\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : with white spaces in format strings ***
+
+-- Iteration 1 --
+111 222 333
+int(13)
+
+-- Iteration 2 --
+1.100000 0.200000 -0.600000
+int(29)
+
+-- Iteration 3 --
+1.120000 -1.130000 0.230000
+int(29)
+
+-- Iteration 4 --
+1 10 11
+int(9)
+
+-- Iteration 5 --
+A B C
+int(7)
+
+-- Iteration 6 --
+2.000000e+1 2.000000e-1 -2.000000e+1
+int(38)
+
+-- Iteration 7 --
+4294967285 22 33
+int(18)
+
+-- Iteration 8 --
+12 37777777755 23
+int(19)
+
+-- Iteration 9 --
+11 ffffffde 33
+int(16)
+
+-- Iteration 10 --
+11 FFFFFFDE 33
+int(16)
+
+-- Iteration 11 --
+2.000000E+1 2.000000E-1 -2.000000E+1
+int(38)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation19_64bit.phpt b/ext/standard/tests/strings/vprintf_variation19_64bit.phpt
new file mode 100644
index 0000000000..d98199624f
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation19_64bit.phpt
@@ -0,0 +1,104 @@
+--TEST--
+Test vprintf() function : usage variations - with whitespaces in format strings
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string $format , array $args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+echo "*** Testing vprintf() : with white spaces in format strings ***\n";
+
+// initializing the format array
+$formats = array(
+ "% d % d % d",
+ "% f % f % f",
+ "% F % F % F",
+ "% b % b % b",
+ "% c % c % c",
+ "% e % e % e",
+ "% u % u % u",
+ "% o % o % o",
+ "% x % x % x",
+ "% X % X % X",
+ "% E % E % E"
+);
+
+// initializing the args array
+
+$args_array = array(
+ array(111, 222, 333),
+ array(1.1, .2, -0.6),
+ array(1.12, -1.13, +0.23),
+ array(1, 2, 3),
+ array(65, 66, 67),
+ array(2e1, 2e-1, -2e1),
+ array(-11, +22, 33),
+ array(012, -02394, +02389),
+ array(0x11, -0x22, +0x33),
+ array(0x11, -0x22, +0x33),
+ array(2e1, 2e-1, -2e1)
+);
+
+$counter = 1;
+foreach($formats as $format) {
+ echo"\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : with white spaces in format strings ***
+
+-- Iteration 1 --
+111 222 333
+int(13)
+
+-- Iteration 2 --
+1.100000 0.200000 -0.600000
+int(29)
+
+-- Iteration 3 --
+1.120000 -1.130000 0.230000
+int(29)
+
+-- Iteration 4 --
+1 10 11
+int(9)
+
+-- Iteration 5 --
+A B C
+int(7)
+
+-- Iteration 6 --
+2.000000e+1 2.000000e-1 -2.000000e+1
+int(38)
+
+-- Iteration 7 --
+18446744073709551605 22 33
+int(28)
+
+-- Iteration 8 --
+12 1777777777777777777755 23
+int(30)
+
+-- Iteration 9 --
+11 ffffffffffffffde 33
+int(24)
+
+-- Iteration 10 --
+11 FFFFFFFFFFFFFFDE 33
+int(24)
+
+-- Iteration 11 --
+2.000000E+1 2.000000E-1 -2.000000E+1
+int(38)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation2.phpt b/ext/standard/tests/strings/vprintf_variation2.phpt
new file mode 100644
index 0000000000..63c3dfe39e
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation2.phpt
@@ -0,0 +1,202 @@
+--TEST--
+Test vprintf() function : usage variations - unexpected values for args argument
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different unexpected values are passed to
+ * the '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : with unexpected values for args argument ***\n";
+
+// initialising the required variables
+$format = '%s';
+
+//get an unset variable
+$unset_var = 10;
+unset ($unset_var);
+
+// declaring a class
+class sample
+{
+ public function __toString() {
+ return "object";
+ }
+}
+
+// Defining resource
+$file_handle = fopen(__FILE__, 'r');
+
+
+//array of values to iterate over
+$values = array(
+
+ // int data
+/*1*/ 0,
+ 1,
+ 12345,
+ -2345,
+
+ // float data
+/*5*/ 10.5,
+ -10.5,
+ 10.1234567e10,
+ 10.7654321E-10,
+ .5,
+
+ // null data
+/*10*/ NULL,
+ null,
+
+ // boolean data
+/*12*/ true,
+ false,
+ TRUE,
+ FALSE,
+
+ // empty data
+/*16*/ "",
+ '',
+
+ // string data
+/*18*/ "string",
+ 'string',
+
+ // object data
+/*20*/ new sample(),
+
+ // undefined data
+/*21*/ @$undefined_var,
+
+ // unset data
+/*22*/ @$unset_var,
+
+ // resource data
+/*23*/ $file_handle
+);
+
+// loop through each element of the array for args
+$counter = 1;
+foreach($values as $value) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($format,$value);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+};
+
+// closing the resource
+fclose($file_handle);
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing vprintf() : with unexpected values for args argument ***
+
+-- Iteration 1 --
+0
+int(1)
+
+-- Iteration 2 --
+1
+int(1)
+
+-- Iteration 3 --
+12345
+int(5)
+
+-- Iteration 4 --
+-2345
+int(5)
+
+-- Iteration 5 --
+10.5
+int(4)
+
+-- Iteration 6 --
+-10.5
+int(5)
+
+-- Iteration 7 --
+101234567000
+int(12)
+
+-- Iteration 8 --
+1.07654321E-9
+int(13)
+
+-- Iteration 9 --
+0.5
+int(3)
+
+-- Iteration 10 --
+
+Warning: vprintf(): Too few arguments in %s on line %d
+
+bool(false)
+
+-- Iteration 11 --
+
+Warning: vprintf(): Too few arguments in %s on line %d
+
+bool(false)
+
+-- Iteration 12 --
+1
+int(1)
+
+-- Iteration 13 --
+
+int(0)
+
+-- Iteration 14 --
+1
+int(1)
+
+-- Iteration 15 --
+
+int(0)
+
+-- Iteration 16 --
+
+int(0)
+
+-- Iteration 17 --
+
+int(0)
+
+-- Iteration 18 --
+string
+int(6)
+
+-- Iteration 19 --
+string
+int(6)
+
+-- Iteration 20 --
+
+Warning: vprintf(): Too few arguments in %s on line %d
+
+bool(false)
+
+-- Iteration 21 --
+
+Warning: vprintf(): Too few arguments in %s on line %d
+
+bool(false)
+
+-- Iteration 22 --
+
+Warning: vprintf(): Too few arguments in %s on line %d
+
+bool(false)
+
+-- Iteration 23 --
+Resource id #%d
+int(%d)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation3.phpt b/ext/standard/tests/strings/vprintf_variation3.phpt
new file mode 100644
index 0000000000..41c76487c8
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation3.phpt
@@ -0,0 +1,91 @@
+--TEST--
+Test vprintf() function : usage variations - int formats with int values
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different int formats and int values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : int formats with int values ***\n";
+
+
+// defining array of int formats
+$formats = array(
+ "%d",
+ "%+d %-d %D",
+ "%ld %Ld, %4d %-4d",
+ "%10.4d %-10.4d %04d %04.4d",
+ "%'#2d %'2d %'$2d %'_2d",
+ "%d %d %d %d",
+ "% %%d d%",
+ '%3$d %4$d %1$d %2$d'
+);
+
+// Arrays of int values for the format defined in $format.
+// Each sub array contains int values which correspond to each format string in $format
+$args_array = array(
+ array(0),
+ array(-1, 1, +22),
+ array(2147483647, -2147483648, +2147483640, -2147483640),
+ array(123456, 12345678, -1234567, 1234567),
+ array(111, 2222, 333333, 44444444),
+ array(0x123b, 0xfAb, 0123, 01293),
+ array(1234, -5678, 2345),
+ array(3, 4, 1, 2)
+
+);
+
+// looping to test vprintf() with different int formats from the above $format array
+// and with int values from the above $args_array array
+$counter = 1;
+foreach($formats as $format) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : int formats with int values ***
+
+-- Iteration 1 --
+0
+int(1)
+
+-- Iteration 2 --
+-1 1
+int(5)
+
+-- Iteration 3 --
+2147483647 d, 2147483640 -2147483640
+int(36)
+
+-- Iteration 4 --
+ 123456 12345678 -1234567 1234567
+int(38)
+
+-- Iteration 5 --
+111 2222 333333 44444444
+int(24)
+
+-- Iteration 6 --
+4667 4011 83 10
+int(15)
+
+-- Iteration 7 --
+%-5678 d
+int(8)
+
+-- Iteration 8 --
+1 2 3 4
+int(7)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation4.phpt b/ext/standard/tests/strings/vprintf_variation4.phpt
new file mode 100644
index 0000000000..8a37c79dce
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation4.phpt
@@ -0,0 +1,110 @@
+--TEST--
+Test vprintf() function : usage variations - int formats with non-integer values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different int formats and non-int values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : int formats and non-integer values ***\n";
+
+// defining array of int formats
+$formats =
+ '%d %+d %-d
+ %ld %Ld %4d %-4d
+ %10.4d %-10.4d %.4d %04.4d
+ %\'#2d %\'2d %\'$2d %\'_2d
+ %3$d %4$d %1$d %2$d';
+
+// Arrays of non int values for the format defined in $format.
+// Each sub array contains non int values which correspond to each format in $format
+$args_array = array(
+
+ // array of float values
+ array(2.2, .2, 10.2,
+ 123456.234, 123456.234, -1234.6789, +1234.6789,
+ 2e10, +2e5, 4e3, 22e+6,
+ 12345.780, 12.000000011111, -12.00000111111, -123456.234,
+ 3.33, +4.44, 1.11,-2.22 ),
+
+ // array of strings
+ array(" ", ' ', 'hello',
+ '123hello', "123hello", '-123hello', '+123hello',
+ "\12345678hello", "-\12345678hello", '0123456hello', 'h123456ello',
+ "1234hello", "hello\0world", "NULL", "true",
+ "3", "4", '1', '2'),
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(false), array(TRUE), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, false, TRUE, FALSE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different int formats from the above $format array
+// and with non-int values from the above $args_array array
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : int formats and non-integer values ***
+
+-- Iteration 1 --
+2 +0 10
+ 123456 d -1234 1234
+ 2147483647 200000 4000 22000000
+ 12345 12 -12 -123456
+ 10 123456 2 0
+int(111)
+
+-- Iteration 2 --
+0 +0 0
+ 123 d -123 123
+ 0 0 123456 0000
+ 1234 0 $0 _0
+ 0 123 0 0
+int(92)
+
+-- Iteration 3 --
+1 +1 1
+ 1 d 1 1
+ 1 1 1 0001
+ #1 1 $1 _1
+ 1 1 1 1
+int(81)
+
+-- Iteration 4 --
+1 +1 0
+ 1 d 0 1
+ 1 0 1 0000
+ #0 1 $1 _0
+ 0 1 1 1
+int(81)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation4_64bit.phpt b/ext/standard/tests/strings/vprintf_variation4_64bit.phpt
new file mode 100644
index 0000000000..ab3f9123ab
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation4_64bit.phpt
@@ -0,0 +1,110 @@
+--TEST--
+Test vprintf() function : usage variations - int formats with non-integer values
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
+?>
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different int formats and non-int values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : int formats and non-integer values ***\n";
+
+// defining array of int formats
+$formats =
+ '%d %+d %-d
+ %ld %Ld %4d %-4d
+ %10.4d %-10.4d %.4d %04.4d
+ %\'#2d %\'2d %\'$2d %\'_2d
+ %3$d %4$d %1$d %2$d';
+
+// Arrays of non int values for the format defined in $format.
+// Each sub array contains non int values which correspond to each format in $format
+$args_array = array(
+
+ // array of float values
+ array(2.2, .2, 10.2,
+ 123456.234, 123456.234, -1234.6789, +1234.6789,
+ 2e10, +2e5, 4e3, 22e+6,
+ 12345.780, 12.000000011111, -12.00000111111, -123456.234,
+ 3.33, +4.44, 1.11,-2.22 ),
+
+ // array of strings
+ array(" ", ' ', 'hello',
+ '123hello', "123hello", '-123hello', '+123hello',
+ "\12345678hello", "-\12345678hello", '0123456hello', 'h123456ello',
+ "1234hello", "hello\0world", "NULL", "true",
+ "3", "4", '1', '2'),
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(false), array(TRUE), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, false, TRUE, FALSE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different int formats from the above $format array
+// and with non-int values from the above $args_array array
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : int formats and non-integer values ***
+
+-- Iteration 1 --
+2 +0 10
+ 123456 d -1234 1234
+ 20000000000 200000 4000 22000000
+ 12345 12 -12 -123456
+ 10 123456 2 0
+int(112)
+
+-- Iteration 2 --
+0 +0 0
+ 123 d -123 123
+ 0 0 123456 0000
+ 1234 0 $0 _0
+ 0 123 0 0
+int(92)
+
+-- Iteration 3 --
+1 +1 1
+ 1 d 1 1
+ 1 1 1 0001
+ #1 1 $1 _1
+ 1 1 1 1
+int(81)
+
+-- Iteration 4 --
+1 +1 0
+ 1 d 0 1
+ 1 0 1 0000
+ #0 1 $1 _0
+ 0 1 1 1
+int(81)
+===DONE=== \ No newline at end of file
diff --git a/ext/standard/tests/strings/vprintf_variation5.phpt b/ext/standard/tests/strings/vprintf_variation5.phpt
new file mode 100644
index 0000000000..6388f284c6
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation5.phpt
@@ -0,0 +1,91 @@
+--TEST--
+Test vprintf() function : usage variations - float formats with float values
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different float formats and float values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : int formats with float values ***\n";
+
+
+// defining array of float formats
+$formats = array(
+ "%f",
+ "%+f %-f %F",
+ "%lf %Lf, %4f %-4f",
+ "%10.4f %-10.4F %04f %04.4f",
+ "%'#2f %'2f %'$2f %'_2f",
+ "%f %f %f %f",
+ "% %%f f%",
+ '%3$f %4$f %1$f %2$f'
+);
+
+// Arrays of float values for the format defined in $format.
+// Each sub array contains float values which correspond to each format string in $format
+$args_array = array(
+ array(0.0),
+ array(-0.1, +0.1, +10.0000006),
+ array(2147483649, -2147483647, +2147483640, -2147483640),
+ array(2e5, 2e-5, -2e5, -2e-5),
+ array(0.2E5, -0.2e40, 0.2E-20, 0.2E+20),
+ array(0x123b, 0xfAb, 0123, 01293),
+ array(1234.1234, -5678.5678, 2345.2345),
+ array(3.33, 4.44, 1.11, 2.22)
+
+);
+
+// looping to test vprintf() with different float formats from the above $format array
+// and with float values from the above $args_array array
+$counter = 1;
+foreach($formats as $format) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : int formats with float values ***
+
+-- Iteration 1 --
+0.000000
+int(8)
+
+-- Iteration 2 --
+-0.100000 0.100000 10.000001
+int(28)
+
+-- Iteration 3 --
+2147483649.000000 f, 2147483640.000000 -2147483640.000000
+int(57)
+
+-- Iteration 4 --
+200000.0000 0.0000 -200000.000000 -0.0000
+int(45)
+
+-- Iteration 5 --
+20000.000000 -1999999999999999879418332743206357172224.000000 0.000000 20000000000000000000.000000
+int(98)
+
+-- Iteration 6 --
+4667.000000 4011.000000 83.000000 10.000000
+int(43)
+
+-- Iteration 7 --
+%-5678.567800 f
+int(15)
+
+-- Iteration 8 --
+1.110000 2.220000 3.330000 4.440000
+int(35)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation6.phpt b/ext/standard/tests/strings/vprintf_variation6.phpt
new file mode 100644
index 0000000000..265948b565
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation6.phpt
@@ -0,0 +1,106 @@
+--TEST--
+Test vprintf() function : usage variations - float formats with non-float values
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different float formats and non-float values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+echo "*** Testing vprintf() : float formats and non-float values ***\n";
+
+// defining array of float formats
+$formats =
+ '%f %+f %-f
+ %lf %Lf %4f %-4f
+ %10.4f %-10.4f %04f %04.4f
+ %\'#2f %\'2f %\'$2f %\'_2f
+ %3$f %4$f %1$f %2$f';
+
+// Arrays of non float values for the format defined in $format.
+// Each sub array contains non float values which correspond to each format in $format
+$args_array = array(
+
+ // array of int values
+ array(2, -2, +2,
+ 123456, 123456234, -12346789, +12346789,
+ 123200, +20000, -40000, 22212,
+ 12345780, 1211111, -12111111, -12345634,
+ 3, +4, 1,-2 ),
+
+ // array of strings
+ array(" ", ' ', 'hello',
+ '123hello', "123hello", '-123hello', '+123hello',
+ "\12345678hello", "-\12345678hello", '0123456hello', 'h123456ello',
+ "1234hello", "hello\0world", "NULL", "true",
+ "3", "4", '1', '2'),
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(false), array(TRUE), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, false, TRUE, FALSE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different float formats from the above $format array
+// and with non-float values from the above $args_array array
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : float formats and non-float values ***
+
+-- Iteration 1 --
+2.000000 -2.000000 2.000000
+ 123456.000000 f -12346789.000000 12346789.000000
+ 123200.0000 20000.0000 -40000.000000 22212.0000
+ 12345780.000000 1211111.000000 -12111111.000000 -12345634.000000
+ 2.000000 123456.000000 2.000000 -2.000000
+int(244)
+
+-- Iteration 2 --
+0.000000 +0.000000 0.000000
+ 123.000000 f -123.000000 123.000000
+ 0.0000 0.0000 123456.000000 0.0000
+ 1234.000000 0.000000 0.000000 0.000000
+ 0.000000 123.000000 0.000000 0.000000
+int(196)
+
+-- Iteration 3 --
+1.000000 +1.000000 1.000000
+ 1.000000 f 1.000000 1.000000
+ 1.0000 1.0000 1.000000 1.0000
+ 1.000000 1.000000 1.000000 1.000000
+ 1.000000 1.000000 1.000000 1.000000
+int(179)
+
+-- Iteration 4 --
+1.000000 +1.000000 0.000000
+ 1.000000 f 0.000000 1.000000
+ 1.0000 0.0000 1.000000 0.0000
+ 0.000000 1.000000 1.000000 0.000000
+ 0.000000 1.000000 1.000000 1.000000
+int(179)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation7.phpt b/ext/standard/tests/strings/vprintf_variation7.phpt
new file mode 100644
index 0000000000..ef2bfecdfb
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation7.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/vprintf_variation8.phpt b/ext/standard/tests/strings/vprintf_variation8.phpt
new file mode 100644
index 0000000000..c0558ff6b7
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation8.phpt
@@ -0,0 +1,109 @@
+--TEST--
+Test vprintf() function : usage variations - string formats with non-string values
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Return a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+ * Test vprintf() when different string formats and non-string values are passed to
+ * the '$format' and '$args' arguments of the function
+*/
+
+error_reporting(E_ALL & ~E_NOTICE);
+
+echo "*** Testing vprintf() : string formats and non-string values ***\n";
+
+// defining array of string formats
+$formats =
+ '%s %+s %-s
+ %ls %Ls %4s %-4s
+ %10.4s %-10.4s %04s %04.4s
+ %\'#2s %\'2s %\'$2s %\'_2s
+ %3$s %4$s %1$s %2$s';
+
+// Arrays of non string values for the format defined in $format.
+// Each sub array contains non string values which correspond to each format in $format
+$args_array = array(
+
+ // array of float values
+ array(2.2, .2, 10.2,
+ 123456.234, 123456.234, -1234.6789, +1234.6789,
+ 2.1234567e10, +2.7654321e10, -2.7654321e10,
+ 12345.780, 12.000000011111, -12.00000111111, -123456.234,
+ 3.33, +4.44, 1.11,-2.22 ),
+
+ // array of int values
+ array(2, -2, +2,
+ 123456, 123456234, -12346789, +12346789,
+ 123200, +20000, -40000, 22212,
+ 12345780, 1211111, -12111111, -12345634,
+ 3, +4, 1,-2 ),
+
+
+ // different arrays
+ array( array(0), array(1, 2), array(-1, -1),
+ array("123"), array('123'), array('-123'), array("-123"),
+ array(true), array(false), array(TRUE), array(FALSE),
+ array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
+ array("3"), array("4"), array("1"), array("2") ),
+
+ // array of boolean data
+ array( true, TRUE, false,
+ TRUE, 0, FALSE, 1,
+ true, false, TRUE, FALSE,
+ 0, 1, 1, 0,
+ 1, TRUE, 0, FALSE),
+
+);
+
+// looping to test vprintf() with different string formats from the above $format array
+// and with non-string values from the above $args_array array
+$counter = 1;
+foreach($args_array as $args) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($formats, $args);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECT--
+*** Testing vprintf() : string formats and non-string values ***
+
+-- Iteration 1 --
+2.2 0.2 10.2
+ 123456.234 s -1234.6789 1234.6789
+ 2123 2765 -27654321000 1234
+ 12.000000011111 -12.00000111111 -123456.234 3.33
+ 10.2 123456.234 2.2 0.2
+int(172)
+
+-- Iteration 2 --
+2 -2 2
+ 123456 s -12346789 12346789
+ 1232 2000 -40000 2221
+ 12345780 1211111 -12111111 -12345634
+ 2 123456 2 -2
+int(132)
+
+-- Iteration 3 --
+Array Array Array
+ Array s Array Array
+ Arra Arra Array Arra
+ Array Array Array Array
+ Array Array Array Array
+int(131)
+
+-- Iteration 4 --
+1 1
+ 1 s 1
+ 1 0001 0000
+ #0 1 $1 _0
+ 1 1 1
+int(81)
+===DONE===
diff --git a/ext/standard/tests/strings/vprintf_variation9.phpt b/ext/standard/tests/strings/vprintf_variation9.phpt
new file mode 100644
index 0000000000..c928a1da89
--- /dev/null
+++ b/ext/standard/tests/strings/vprintf_variation9.phpt
@@ -0,0 +1,91 @@
+--TEST--
+Test vprintf() function : usage variations - char formats with char values
+--FILE--
+<?php
+/* Prototype : string vprintf(string format, array args)
+ * Description: Output a formatted string
+ * Source code: ext/standard/formatted_print.c
+*/
+
+/*
+* Test vprintf() for char formats with an array of chars passed to the function
+*/
+
+echo "*** Testing vprintf() : char formats with char values ***\n";
+
+
+// defining array of char formats
+$formats = array(
+ "%c",
+ "%+c %-c %C",
+ "%lc %Lc, %4c %-4c",
+ "%10.4c %-10.4c %04c %04.4c",
+ "%'#2c %'2c %'$2c %'_2c",
+ "%c %c %c %c",
+ "% %%c c%",
+ '%3$c %4$c %1$c %2$c'
+);
+
+// Arrays of char values for the format defined in $format.
+// Each sub array contains char values which correspond to each format string in $format
+$args_array = array(
+ array(0),
+ array('c', 67, 68),
+ array(' ', " ", -67, +67),
+ array(97, -97, 98, +98),
+ array(97, -97, 98, +98),
+ array(0x123b, 0xfAb, 0123, 01293),
+ array(38, -1234, 2345),
+ array(67, 68, 65, 66)
+
+);
+
+// looping to test vprintf() with different char formats from the above $format array
+// and with char values from the above $args_array array
+$counter = 1;
+foreach($formats as $format) {
+ echo "\n-- Iteration $counter --\n";
+ $result = vprintf($format, $args_array[$counter-1]);
+ echo "\n";
+ var_dump($result);
+ $counter++;
+}
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing vprintf() : char formats with char values ***
+
+-- Iteration 1 --
+%c
+int(1)
+
+-- Iteration 2 --
+%c C
+int(4)
+
+-- Iteration 3 --
+%c c, %s C
+int(10)
+
+-- Iteration 4 --
+a %s b b
+int(9)
+
+-- Iteration 5 --
+a %s b b
+int(9)
+
+-- Iteration 6 --
+; %s S
+
+int(9)
+
+-- Iteration 7 --
+%. c
+int(4)
+
+-- Iteration 8 --
+A B C D
+int(7)
+===DONE===