1--TEST-- 2Test vfprintf() function : usage variations - int formats with non-integer values 3--SKIPIF-- 4<?php 5if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); 6?> 7--FILE-- 8<?php 9/* Prototype : int vfprintf ( resource $handle , string $format , array $args ) 10 * Description: Write a formatted string to a stream 11 * Source code: ext/standard/formatted_print.c 12*/ 13 14/* 15 * Test vfprintf() when different int formats and non-int values are passed to 16 * the '$format' and '$args' arguments of the function 17*/ 18 19echo "*** Testing vfprintf() : int formats and non-integer values ***\n"; 20 21// defining array of int formats 22$formats = 23 '%d %+d %-d 24 %ld %Ld %4d %-4d 25 %10.4d %-10.4d %.4d %04.4d 26 %\'#2d %\'2d %\'$2d %\'_2d 27 %3$d %4$d %1$d %2$d'; 28 29// Arrays of non int values for the format defined in $format. 30// Each sub array contains non int values which correspond to each format in $format 31$args_array = array( 32 33 // array of float values 34 array(2.2, .2, 10.2, 35 123456.234, 123456.234, -1234.6789, +1234.6789, 36 2e10, +2e5, 4e3, 22e+6, 37 12345.780, 12.000000011111, -12.00000111111, -123456.234, 38 3.33, +4.44, 1.11,-2.22 ), 39 40 // array of strings 41 array(" ", ' ', 'hello', 42 '123hello', "123hello", '-123hello', '+123hello', 43 "\12345678hello", "-\12345678hello", '0123456hello', 'h123456ello', 44 "1234hello", "hello\0world", "NULL", "true", 45 "3", "4", '1', '2'), 46 47 // different arrays 48 array( array(0), array(1, 2), array(-1, -1), 49 array("123"), array('123'), array('-123'), array("-123"), 50 array(true), array(false), array(TRUE), array(FALSE), 51 array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"), 52 array("3"), array("4"), array("1"), array("2") ), 53 54 // array of boolean data 55 array( true, TRUE, false, 56 TRUE, 0, FALSE, 1, 57 true, false, TRUE, FALSE, 58 0, 1, 1, 0, 59 1, TRUE, 0, FALSE), 60 61); 62 63 64/* creating dumping file */ 65$data_file = dirname(__FILE__) . '/dump.txt'; 66if (!($fp = fopen($data_file, 'wt'))) 67 return; 68 69// looping to test vfprintf() with different int formats from the above $format array 70// and with non-int values from the above $args_array array 71$counter = 1; 72foreach($args_array as $args) { 73 fprintf($fp, "\n-- Iteration %d --\n",$counter); 74 vfprintf($fp, $formats, $args); 75 $counter++; 76} 77 78fclose($fp); 79print_r(file_get_contents($data_file)); 80echo "\n"; 81 82unlink($data_file); 83 84?> 85===DONE=== 86--EXPECT-- 87*** Testing vfprintf() : int formats and non-integer values *** 88 89-- Iteration 1 -- 902 +0 10 91 123456 d -1234 1234 92 20000000000 200000 4000 22000000 93 12345 12 -12 -123456 94 10 123456 2 0 95-- Iteration 2 -- 960 +0 0 97 123 d -123 123 98 0 0 123456 0000 99 1234 0 $0 _0 100 0 123 0 0 101-- Iteration 3 -- 1021 +1 1 103 1 d 1 1 104 1 1 1 0001 105 #1 1 $1 _1 106 1 1 1 1 107-- Iteration 4 -- 1081 +1 0 109 1 d 0 1 110 1 0 1 0000 111 #0 1 $1 _0 112 0 1 1 1 113===DONE=== 114