1--TEST--
2Test vsprintf() function : usage variations - float formats with non-float values
3--FILE--
4<?php
5/* Prototype  : string vsprintf(string format, array args)
6 * Description: Return a formatted string
7 * Source code: ext/standard/formatted_print.c
8*/
9
10/*
11 * Test vsprintf() when different float formats and non-float values are passed to
12 * the '$format' and '$args' arguments of the function
13*/
14
15echo "*** Testing vsprintf() : float formats and non-float values ***\n";
16
17// defining array of float formats
18$formats =
19  '%f %+f %-f
20   %lf %Lf %4f %-4f
21   %10.4f %-10.4f %04f %04.4f
22   %\'#2f %\'2f %\'$2f %\'_2f
23   %3$f %4$f %1$f %2$f';
24
25// Arrays of non float values for the format defined in $format.
26// Each sub array contains non float values which correspond to each format in $format
27$args_array = array(
28
29  // array of int values
30  array(2, -2, +2,
31        123456, 123456234, -12346789, +12346789,
32        123200, +20000, -40000, 22212,
33        12345780, 1211111, -12111111, -12345634,
34        3, +4, 1,-2 ),
35
36  // array of strings
37  array(" ", ' ', 'hello',
38        '123hello', "123hello", '-123hello', '+123hello',
39        "\12345678hello", "-\12345678hello", '0123456hello', 'h123456ello',
40        "1234hello", "hello\0world", "NULL", "true",
41        "3", "4", '1', '2'),
42
43  // different arrays
44  array( array(0), array(1, 2), array(-1, -1),
45         array("123"), array('123'), array('-123'), array("-123"),
46         array(true), array(false), array(TRUE), array(FALSE),
47         array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
48         array("3"), array("4"), array("1"), array("2") ),
49
50  // array of boolean data
51  array( true, TRUE, false,
52         TRUE, 0, FALSE, 1,
53         true, false, TRUE, FALSE,
54         0, 1, 1, 0,
55         1, TRUE, 0, FALSE),
56
57);
58
59// looping to test vsprintf() with different float formats from the above $format array
60// and with non-float values from the above $args_array array
61$counter = 1;
62foreach($args_array as $args) {
63  echo "\n-- Iteration $counter --\n";
64  var_dump( vsprintf($formats, $args) );
65  $counter++;
66}
67
68echo "Done";
69?>
70--EXPECT--
71*** Testing vsprintf() : float formats and non-float values ***
72
73-- Iteration 1 --
74string(244) "2.000000 -2.000000 2.000000
75   123456.000000 f -12346789.000000 12346789.000000
76   123200.0000 20000.0000 -40000.000000 22212.0000
77   12345780.000000 1211111.000000 -12111111.000000 -12345634.000000
78   2.000000 123456.000000 2.000000 -2.000000"
79
80-- Iteration 2 --
81string(196) "0.000000 +0.000000 0.000000
82   123.000000 f -123.000000 123.000000
83       0.0000 0.0000     123456.000000 0.0000
84   1234.000000 0.000000 0.000000 0.000000
85   0.000000 123.000000 0.000000 0.000000"
86
87-- Iteration 3 --
88string(179) "1.000000 +1.000000 1.000000
89   1.000000 f 1.000000 1.000000
90       1.0000 1.0000     1.000000 1.0000
91   1.000000 1.000000 1.000000 1.000000
92   1.000000 1.000000 1.000000 1.000000"
93
94-- Iteration 4 --
95string(179) "1.000000 +1.000000 0.000000
96   1.000000 f 0.000000 1.000000
97       1.0000 0.0000     1.000000 0.0000
98   0.000000 1.000000 1.000000 0.000000
99   0.000000 1.000000 1.000000 1.000000"
100Done
101