mirror of
https://github.com/php/php-src.git
synced 2025-01-10 21:14:37 +08:00
New json extension tests. Tested on Windows, Linux and Linux 64 bit.
This commit is contained in:
parent
7633999aa5
commit
845595eb7c
187
ext/json/tests/json_decode_basic.phpt
Normal file
187
ext/json/tests/json_decode_basic.phpt
Normal file
@ -0,0 +1,187 @@
|
||||
--TEST--
|
||||
Test json_decode() function : basic functionality
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("json")) {
|
||||
die('skip JSON extension not available in this build');
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : mixed json_decode ( string $json [, bool $assoc ] )
|
||||
* Description: Decodes a JSON string
|
||||
* Source code: ext/json/php_json.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
echo "*** Testing json_decode() : basic functionality ***\n";
|
||||
|
||||
// array with different values for $string
|
||||
$inputs = array (
|
||||
'0',
|
||||
'123',
|
||||
'-123',
|
||||
'2147483647',
|
||||
'-2147483648',
|
||||
'123.456',
|
||||
'1230',
|
||||
'-1230',
|
||||
'true',
|
||||
'false',
|
||||
'null',
|
||||
'"abc"',
|
||||
'"Hello World\r\n"',
|
||||
'[]',
|
||||
'[1,2,3,4,5]',
|
||||
'{"myInt":99,"myFloat":123.45,"myNull":null,"myBool":true,"myString":"Hello World"}',
|
||||
'{"Jan":31,"Feb":29,"Mar":31,"April":30,"May":31,"June":30}',
|
||||
'""',
|
||||
'{}'
|
||||
);
|
||||
|
||||
// loop through with each element of the $inputs array to test json_decode() function
|
||||
$count = 1;
|
||||
foreach($inputs as $input) {
|
||||
echo "-- Iteration $count --\n";
|
||||
var_dump(json_decode($input));
|
||||
var_dump(json_decode($input, TRUE));
|
||||
$count ++;
|
||||
}
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECTF--
|
||||
*** Testing json_decode() : basic functionality ***
|
||||
-- Iteration 1 --
|
||||
int(0)
|
||||
int(0)
|
||||
-- Iteration 2 --
|
||||
int(123)
|
||||
int(123)
|
||||
-- Iteration 3 --
|
||||
int(-123)
|
||||
int(-123)
|
||||
-- Iteration 4 --
|
||||
int(2147483647)
|
||||
int(2147483647)
|
||||
-- Iteration 5 --
|
||||
int(-2147483648)
|
||||
int(-2147483648)
|
||||
-- Iteration 6 --
|
||||
float(123.456)
|
||||
float(123.456)
|
||||
-- Iteration 7 --
|
||||
int(1230)
|
||||
int(1230)
|
||||
-- Iteration 8 --
|
||||
int(-1230)
|
||||
int(-1230)
|
||||
-- Iteration 9 --
|
||||
bool(true)
|
||||
bool(true)
|
||||
-- Iteration 10 --
|
||||
bool(false)
|
||||
bool(false)
|
||||
-- Iteration 11 --
|
||||
NULL
|
||||
NULL
|
||||
-- Iteration 12 --
|
||||
unicode(3) "abc"
|
||||
unicode(3) "abc"
|
||||
-- Iteration 13 --
|
||||
unicode(13) "Hello World
|
||||
"
|
||||
unicode(13) "Hello World
|
||||
"
|
||||
-- Iteration 14 --
|
||||
array(0) {
|
||||
}
|
||||
array(0) {
|
||||
}
|
||||
-- Iteration 15 --
|
||||
array(5) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
[3]=>
|
||||
int(4)
|
||||
[4]=>
|
||||
int(5)
|
||||
}
|
||||
array(5) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
[3]=>
|
||||
int(4)
|
||||
[4]=>
|
||||
int(5)
|
||||
}
|
||||
-- Iteration 16 --
|
||||
object(stdClass)#%d (5) {
|
||||
[u"myInt"]=>
|
||||
int(99)
|
||||
[u"myFloat"]=>
|
||||
float(123.45)
|
||||
[u"myNull"]=>
|
||||
NULL
|
||||
[u"myBool"]=>
|
||||
bool(true)
|
||||
[u"myString"]=>
|
||||
unicode(11) "Hello World"
|
||||
}
|
||||
array(5) {
|
||||
[u"myInt"]=>
|
||||
int(99)
|
||||
[u"myFloat"]=>
|
||||
float(123.45)
|
||||
[u"myNull"]=>
|
||||
NULL
|
||||
[u"myBool"]=>
|
||||
bool(true)
|
||||
[u"myString"]=>
|
||||
unicode(11) "Hello World"
|
||||
}
|
||||
-- Iteration 17 --
|
||||
object(stdClass)#%d (6) {
|
||||
[u"Jan"]=>
|
||||
int(31)
|
||||
[u"Feb"]=>
|
||||
int(29)
|
||||
[u"Mar"]=>
|
||||
int(31)
|
||||
[u"April"]=>
|
||||
int(30)
|
||||
[u"May"]=>
|
||||
int(31)
|
||||
[u"June"]=>
|
||||
int(30)
|
||||
}
|
||||
array(6) {
|
||||
[u"Jan"]=>
|
||||
int(31)
|
||||
[u"Feb"]=>
|
||||
int(29)
|
||||
[u"Mar"]=>
|
||||
int(31)
|
||||
[u"April"]=>
|
||||
int(30)
|
||||
[u"May"]=>
|
||||
int(31)
|
||||
[u"June"]=>
|
||||
int(30)
|
||||
}
|
||||
-- Iteration 18 --
|
||||
unicode(0) ""
|
||||
unicode(0) ""
|
||||
-- Iteration 19 --
|
||||
object(stdClass)#%d (0) {
|
||||
}
|
||||
array(0) {
|
||||
}
|
||||
===DONE===
|
39
ext/json/tests/json_decode_error.phpt
Normal file
39
ext/json/tests/json_decode_error.phpt
Normal file
@ -0,0 +1,39 @@
|
||||
--TEST--
|
||||
Test json_decode() function : error conditions
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("json")) {
|
||||
die('skip JSON extension not available in this build');
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : mixed json_decode ( string $json [, bool $assoc=false [, int $depth=512 ]] )
|
||||
* Description: Decodes a JSON string
|
||||
* Source code: ext/json/php_json.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
echo "*** Testing json_decode() : error conditions ***\n";
|
||||
|
||||
echo "\n-- Testing json_decode() function with no arguments --\n";
|
||||
var_dump( json_decode() );
|
||||
|
||||
echo "\n-- Testing json_decode() function with more than expected no. of arguments --\n";
|
||||
$extra_arg = 10;
|
||||
var_dump( json_decode('"abc"', TRUE, 512, $extra_arg) );
|
||||
|
||||
?>
|
||||
===Done===
|
||||
--EXPECTF--
|
||||
*** Testing json_decode() : error conditions ***
|
||||
|
||||
-- Testing json_decode() function with no arguments --
|
||||
|
||||
Warning: json_decode() expects at least 1 parameter, 0 given in %s on line %d
|
||||
NULL
|
||||
|
||||
-- Testing json_decode() function with more than expected no. of arguments --
|
||||
|
||||
Warning: json_decode() expects at most 3 parameters, 4 given in %s on line %d
|
||||
NULL
|
||||
===Done===
|
158
ext/json/tests/json_encode_basic.phpt
Normal file
158
ext/json/tests/json_encode_basic.phpt
Normal file
@ -0,0 +1,158 @@
|
||||
--TEST--
|
||||
Test json_encode() function : basic functionality
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("json")) {
|
||||
die('skip JSON extension not available in this build');
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : string json_encode ( mixed $value )
|
||||
* Description: Returns the JSON representation of a value
|
||||
* Source code: ext/json/php_json.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
echo "*** Testing json_encode() : basic functionality ***\n";
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
// get a resource variable
|
||||
$fp = fopen(__FILE__, "r");
|
||||
|
||||
// get an object
|
||||
class sample {
|
||||
}
|
||||
|
||||
$obj = new sample();
|
||||
$obj->MyInt = 99;
|
||||
$obj->MyFloat = 123.45;
|
||||
$obj->MyBool = true;
|
||||
$obj->MyNull = null;
|
||||
$obj->MyString = "Hello World";
|
||||
|
||||
// array with different values for $string
|
||||
$inputs = array (
|
||||
|
||||
// integers
|
||||
/*1*/ 0,
|
||||
123,
|
||||
-123,
|
||||
2147483647,
|
||||
-2147483648,
|
||||
|
||||
// floats
|
||||
/*6*/ 123.456,
|
||||
1.23E3,
|
||||
-1.23E3,
|
||||
|
||||
// boolean
|
||||
/*9*/ TRUE,
|
||||
true,
|
||||
FALSE,
|
||||
false,
|
||||
|
||||
// NULL
|
||||
/*13*/ NULL,
|
||||
null,
|
||||
|
||||
// strings
|
||||
/*15*/ "abc",
|
||||
'abc',
|
||||
"Hello\t\tWorld\n",
|
||||
|
||||
// arrays
|
||||
/*18*/ array(),
|
||||
array(1,2,3,4,5),
|
||||
array(1 => "Sun", 2=>"Mon", 3 => "Tue", 4 => "Wed", 5 => "Thur", 6 => "Fri", 7 => "Sat"),
|
||||
array("Jan" => 31, "Feb" => 29, "Mar" => 31, "April" => 30, "May" => 31, "June" => 30),
|
||||
|
||||
// empty data
|
||||
/*22*/ "",
|
||||
'',
|
||||
|
||||
// undefined data
|
||||
/*24*/ @$undefined_var,
|
||||
|
||||
// unset data
|
||||
/*25*/ @$unset_var,
|
||||
|
||||
// resource variable
|
||||
/*26*/ $fp,
|
||||
|
||||
// object variable
|
||||
/*27*/ $obj
|
||||
|
||||
);
|
||||
|
||||
// loop through with each element of the $inputs array to test json_encode() function
|
||||
$count = 1;
|
||||
foreach($inputs as $input) {
|
||||
echo "-- Iteration $count --\n";
|
||||
var_dump(json_encode($input));
|
||||
$count ++;
|
||||
}
|
||||
|
||||
?>
|
||||
===Done===
|
||||
--EXPECTF--
|
||||
*** Testing json_encode() : basic functionality ***
|
||||
-- Iteration 1 --
|
||||
string(1) "0"
|
||||
-- Iteration 2 --
|
||||
string(3) "123"
|
||||
-- Iteration 3 --
|
||||
string(4) "-123"
|
||||
-- Iteration 4 --
|
||||
string(10) "2147483647"
|
||||
-- Iteration 5 --
|
||||
string(11) "-2147483648"
|
||||
-- Iteration 6 --
|
||||
string(7) "123.456"
|
||||
-- Iteration 7 --
|
||||
string(4) "1230"
|
||||
-- Iteration 8 --
|
||||
string(5) "-1230"
|
||||
-- Iteration 9 --
|
||||
string(4) "true"
|
||||
-- Iteration 10 --
|
||||
string(4) "true"
|
||||
-- Iteration 11 --
|
||||
string(5) "false"
|
||||
-- Iteration 12 --
|
||||
string(5) "false"
|
||||
-- Iteration 13 --
|
||||
string(4) "null"
|
||||
-- Iteration 14 --
|
||||
string(4) "null"
|
||||
-- Iteration 15 --
|
||||
string(5) ""abc""
|
||||
-- Iteration 16 --
|
||||
string(5) ""abc""
|
||||
-- Iteration 17 --
|
||||
string(18) ""Hello\t\tWorld\n""
|
||||
-- Iteration 18 --
|
||||
string(2) "[]"
|
||||
-- Iteration 19 --
|
||||
string(11) "[1,2,3,4,5]"
|
||||
-- Iteration 20 --
|
||||
string(72) "{"1":"Sun","2":"Mon","3":"Tue","4":"Wed","5":"Thur","6":"Fri","7":"Sat"}"
|
||||
-- Iteration 21 --
|
||||
string(58) "{"Jan":31,"Feb":29,"Mar":31,"April":30,"May":31,"June":30}"
|
||||
-- Iteration 22 --
|
||||
string(2) """"
|
||||
-- Iteration 23 --
|
||||
string(2) """"
|
||||
-- Iteration 24 --
|
||||
string(4) "null"
|
||||
-- Iteration 25 --
|
||||
string(4) "null"
|
||||
-- Iteration 26 --
|
||||
|
||||
Warning: [json] (json_encode_r) type is unsupported, encoded as null in %s on line %d
|
||||
string(4) "null"
|
||||
-- Iteration 27 --
|
||||
string(82) "{"MyInt":99,"MyFloat":123.45,"MyBool":true,"MyNull":null,"MyString":"Hello World"}"
|
||||
===Done===
|
26
ext/json/tests/json_encode_basic_utf8.phpt
Normal file
26
ext/json/tests/json_encode_basic_utf8.phpt
Normal file
@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
Test json_encode() function : basic functionality with UTF8 string input
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("json")) {
|
||||
die('skip JSON extension not available in this build');
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : string json_encode ( mixed $value )
|
||||
* Description: Returns the JSON representation of a value
|
||||
* Source code: ext/json/php_json.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
echo "*** Testing json_encode() : basic functionality with UTF-8 input***\n";
|
||||
|
||||
$utf8_string = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=');
|
||||
var_dump(json_encode($utf8_string));
|
||||
|
||||
?>
|
||||
===Done===
|
||||
--EXPECTF--
|
||||
*** Testing json_encode() : basic functionality with UTF-8 input***
|
||||
string(103) ""\u65e5\u672c\u8a9e\u30c6\u30ad\u30b9\u30c8\u3067\u3059\u300201234\uff15\uff16\uff17\uff18\uff19\u3002""
|
||||
===Done===
|
40
ext/json/tests/json_encode_error.phpt
Normal file
40
ext/json/tests/json_encode_error.phpt
Normal file
@ -0,0 +1,40 @@
|
||||
--TEST--
|
||||
Test json_encode() function : error conditions
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("json")) {
|
||||
die('skip JSON extension not available in this build');
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : string json_encode ( mixed $value [, int $options=0 ] )
|
||||
* Description: Returns the JSON representation of a value
|
||||
* Source code: ext/json/php_json.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
echo "*** Testing json_encode() : error conditions ***\n";
|
||||
|
||||
echo "\n-- Testing json_encode() function with no arguments --\n";
|
||||
var_dump( json_encode() );
|
||||
|
||||
echo "\n-- Testing json_encode() function with more than expected no. of arguments --\n";
|
||||
$extra_arg = 10;
|
||||
var_dump( json_encode("abc", 0, $extra_arg) );
|
||||
|
||||
?>
|
||||
===Done===
|
||||
--EXPECTF--
|
||||
*** Testing json_encode() : error conditions ***
|
||||
|
||||
-- Testing json_encode() function with no arguments --
|
||||
|
||||
Warning: json_encode() expects at least 1 parameter, 0 given in %s on line %d
|
||||
NULL
|
||||
|
||||
-- Testing json_encode() function with more than expected no. of arguments --
|
||||
|
||||
Warning: json_encode() expects at most 2 parameters, 3 given in %s on line %d
|
||||
NULL
|
||||
===Done===
|
Loading…
Reference in New Issue
Block a user