New strval() tests. Tested on Windows, Linux and Linux 64 bit.

This commit is contained in:
andy wharmby 2009-01-19 15:54:45 +00:00
parent 8be7bef0a6
commit ce85cecb55
4 changed files with 400 additions and 0 deletions

View File

@ -0,0 +1,77 @@
--TEST--
Test strval() function : basic functionality
--FILE--
<?php
/* Prototype : string strval ( mixed $var )
* Description: Get the string value of a variable.
* Source code: ext/standard/string.c
*/
echo "*** Testing strval() : basic variations ***\n";
error_reporting(E_ALL ^ E_NOTICE);
$simple_heredoc =<<<EOT
Simple HEREDOC string
EOT;
//array of values to iterate over
$values = array(
// Simple strings
/*1*/ "Hello World",
'Hello World',
// String with control chars
/*3*/ "String\nwith\ncontrol\ncharacters\r\n",
// String with quotes
/*4*/ "String with \"quotes\"",
//Numeric String
/*5*/ "123456",
// Hexadecimal string
/*6*/ "0xABC",
//Heredoc String
/*7*/ $simple_heredoc
);
// loop through each element of the array for strval
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( strval($value) );
$iterator++;
};
?>
===DONE===
--EXPECTF--
*** Testing strval() : basic variations ***
-- Iteration 1 --
unicode(11) "Hello World"
-- Iteration 2 --
unicode(11) "Hello World"
-- Iteration 3 --
unicode(32) "String
with
control
characters
"
-- Iteration 4 --
unicode(20) "String with "quotes""
-- Iteration 5 --
unicode(6) "123456"
-- Iteration 6 --
unicode(5) "0xABC"
-- Iteration 7 --
unicode(21) "Simple HEREDOC string"
===DONE===

View File

@ -0,0 +1,51 @@
--TEST--
Test strval() function : usage variations - error conditions
--FILE--
<?php
/* Prototype : string strval ( mixed $var )
* Description: Get the string value of a variable.
* Source code: ext/standard/string.c
*/
echo "*** Testing strval() : error conditions ***\n";
error_reporting(E_ALL ^ E_NOTICE);
class MyClass
{
// no toString() method defined
}
$string = "Hello";
$extra_arg = 10;
//Test strval with one more than the expected number of arguments
echo "\n-- Testing strval() function with more than expected no. of arguments --\n";
var_dump( strval($string, $extra_arg) );
// Testing strval with one less than the expected number of arguments
echo "\n-- Testing strval() function with less than expected no. of arguments --\n";
var_dump( strval() );
// Testing strval with a object which has no toString() method
echo "\n-- Testing strval() function with object which has not toString() method --\n";
var_dump( strval(new MyClass()) );
?>
===DONE===
--EXPECTF--
*** Testing strval() : error conditions ***
-- Testing strval() function with more than expected no. of arguments --
Warning: strval() expects exactly 1 parameter, 2 given in %s on line %d
NULL
-- Testing strval() function with less than expected no. of arguments --
Warning: strval() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing strval() function with object which has not toString() method --
Catchable fatal error: Object of class MyClass could not be converted to string in %s on line %d

View File

@ -0,0 +1,190 @@
--TEST--
Test strval() function : usage variations - Pass different data types as strval
--FILE--
<?php
/* Prototype : string strval ( mixed $var )
* Description: Get the string value of a variable.
* Source code: ext/standard/string.c
*/
echo "*** Testing strval() : usage variations ***\n";
error_reporting(E_ALL ^ E_NOTICE);
//get an unset variable
$unset_var = 10;
unset ($unset_var);
//getting the resource
$file_handle = fopen(__FILE__, "r");
class MyClass
{
function __toString() {
return "MyClass";
}
}
//array of values to iterate over
$values = array(
//Decimal values
/*1*/ 0,
1,
12345,
-12345,
//Octal values
/*5*/ 02,
010,
030071,
-030071,
//Hexadecimal values
/*9*/ 0x0,
0x1,
0xABCD,
-0xABCD,
// float data
/*13*/ 100.5,
-100.5,
100.1234567e10,
100.7654321E-10,
.5,
// array data
/*18*/ array(),
array('color' => 'red', 'item' => 'pen'),
// null data
/*20*/ NULL,
null,
// boolean data
/*22*/ true,
false,
TRUE,
FALSE,
// empty data
/*26*/ "",
'',
// object data
/*28*/ new MyClass(),
// resource
/*29*/ $file_handle,
// undefined data
/*30*/ @$undefined_var,
// unset data
/*31*/ @$unset_var,
);
// loop through each element of the array for strval
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( strval($value) );
$iterator++;
};
?>
===DONE===
--EXPECTF--
*** Testing strval() : usage variations ***
-- Iteration 1 --
unicode(1) "0"
-- Iteration 2 --
unicode(1) "1"
-- Iteration 3 --
unicode(5) "12345"
-- Iteration 4 --
unicode(6) "-12345"
-- Iteration 5 --
unicode(1) "2"
-- Iteration 6 --
unicode(1) "8"
-- Iteration 7 --
unicode(5) "12345"
-- Iteration 8 --
unicode(6) "-12345"
-- Iteration 9 --
unicode(1) "0"
-- Iteration 10 --
unicode(1) "1"
-- Iteration 11 --
unicode(5) "43981"
-- Iteration 12 --
unicode(6) "-43981"
-- Iteration 13 --
unicode(5) "100.5"
-- Iteration 14 --
unicode(6) "-100.5"
-- Iteration 15 --
unicode(13) "1001234567000"
-- Iteration 16 --
unicode(14) "1.007654321E-8"
-- Iteration 17 --
unicode(3) "0.5"
-- Iteration 18 --
unicode(5) "Array"
-- Iteration 19 --
unicode(5) "Array"
-- Iteration 20 --
unicode(0) ""
-- Iteration 21 --
unicode(0) ""
-- Iteration 22 --
unicode(1) "1"
-- Iteration 23 --
unicode(0) ""
-- Iteration 24 --
unicode(1) "1"
-- Iteration 25 --
unicode(0) ""
-- Iteration 26 --
unicode(0) ""
-- Iteration 27 --
unicode(0) ""
-- Iteration 28 --
unicode(7) "MyClass"
-- Iteration 29 --
unicode(%d) "Resource id #%d"
-- Iteration 30 --
unicode(0) ""
-- Iteration 31 --
unicode(0) ""
===DONE===

View File

@ -0,0 +1,82 @@
--TEST--
Test strval() function : usage variations - Pass all valid char codes
--FILE--
<?php
/* Prototype : string strval ( mixed $var )
* Description: Get the string value of a variable.
* Source code: ext/standard/string.c
*/
echo "*** Testing strval() : usage variations - Pass all valid char codes ***\n";
$s0 = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f";
$s1 = "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f";
$s2 = "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f";
$s3 = "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f";
$s4 = "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f";
$s5 = "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f";
$s6 = "\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f";
$s7 = "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f";
$s8 = "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f";
$s9 = "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f";
$sa = "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf";
$sb = "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf";
$sc = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf";
$sd = "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf";
$se = "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef";
$sf = "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
echo bin2hex((binary)strval($s0));
echo "\n";
echo bin2hex((binary)strval($s1));
echo "\n";
echo bin2hex((binary)strval($s2));
echo "\n";
echo bin2hex((binary)strval($s3));
echo "\n";
echo bin2hex((binary)strval($s4));
echo "\n";
echo bin2hex((binary)strval($s5));
echo "\n";
echo bin2hex((binary)strval($s6));
echo "\n";
echo bin2hex((binary)strval($s7));
echo "\n";
echo bin2hex((binary)strval($s8));
echo "\n";
echo bin2hex((binary)strval($s9));
echo "\n";
echo bin2hex((binary)strval($sa));
echo "\n";
echo bin2hex((binary)strval($sb));
echo "\n";
echo bin2hex((binary)strval($sc));
echo "\n";
echo bin2hex((binary)strval($sd));
echo "\n";
echo bin2hex((binary)strval($se));
echo "\n";
echo bin2hex((binary)strval($sf));
echo "\n";
?>
===DONE===
--EXPECTF--
*** Testing strval() : usage variations - Pass all valid char codes ***
000102030405060708090a0b0c0d0e0f
101112131415161718191a1b1c1d1e1f
202122232425262728292a2b2c2d2e2f
303132333435363738393a3b3c3d3e3f
404142434445464748494a4b4c4d4e4f
505152535455565758595a5b5c5d5e5f
606162636465666768696a6b6c6d6e6f
707172737475767778797a7b7c7d7e7f
808182838485868788898a8b8c8d8e8f
909192939495969798999a9b9c9d9e9f
a0a1a2a3a4a5a6a7a8a9aaabacadaeaf
b0b1b2b3b4b5b6b7b8b9babbbcbdbebf
c0c1c2c3c4c5c6c7c8c9cacbcccdcecf
d0d1d2d3d4d5d6d7d8d9dadbdcdddedf
e0e1e2e3e4e5e6e7e8e9eaebecedeeef
f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
===DONE===