Split tests.

001: most types, return as array
002: bigint return as float member of an objet (32 bits only)
003: bigint return as string member of an objet (32 bits only)
004: bigint return as integer member of an objet (64 bits only)

The bigint value used is >32bits but <64bits which doesn't exists
in real world (to avoid issue with jsonc used in free distro)
This commit is contained in:
Remi Collet
2015-03-05 14:41:37 +01:00
parent 3964b8f0cd
commit b14bbb2fd8
6 changed files with 76 additions and 59 deletions

2
.gitignore vendored
View File

@@ -34,3 +34,5 @@ tests/*/*.exp
tests/*/*.log
tests/*/*.sh
php_json_post.o
json_post-*.tgz
tmp-php.ini

View File

@@ -49,6 +49,8 @@ This extension does not provide any constants, functions or classes.
<dir name="tests">
<file role="test" name="001.phpt"/>
<file role="test" name="002.phpt"/>
<file role="test" name="003.phpt"/>
<file role="test" name="004.phpt"/>
</dir>
</dir>
</contents>

View File

@@ -1,8 +1,8 @@
--TEST--
json_post
json_post with most common types, as array
--SKIPIF--
<?php
extension_loaded("json_post")) or die("skip need json_post support\n");
extension_loaded("json_post") or die("skip need json_post support\n");
?>
--POST_RAW--
Content-type: text/json
@@ -11,7 +11,6 @@ Content-type: text/json
"null": null,
"bool": true,
"int": 123,
"bigint": 36893488147419103232,
"float": 123.123,
"string": "Hello World",
"array": [1,2,3],
@@ -22,18 +21,17 @@ Content-type: text/json
}
--FILE--
<?php
var_dump($_POST, json_last_error_msg());
var_dump($_POST, json_last_error());
?>
Done
--EXPECTF--
array(8) {
array(7) {
["null"]=>
NULL
["bool"]=>
bool(true)
["int"]=>
int(123)
["bigint"]=>
float(3.689%dE+19)
["float"]=>
float(123.123)
["string"]=>
@@ -62,4 +60,5 @@ array(8) {
string(11) "Österreich"
}
}
string(8) "No error"
int(0)
Done

View File

@@ -1,67 +1,27 @@
--TEST--
json_post
json_post with > 32bits integer as float on 32bits
--SKIPIF--
<?php
extension_loaded("json_post")) or die("skip need json_post support\n");
extension_loaded("json_post") or die("skip need json_post support\n");
if (PHP_INT_SIZE != 4) die("skip this test is for 32bits platform only");
?>
--INI--
json_post.flags=2;JSON_BIGINT_AS_STRING
json_post.flags=0
--POST_RAW--
Content-type: text/json
{
"null": null,
"bool": true,
"int": 123,
"bigint": 36893488147419103232,
"float": 123.123,
"string": "Hello World",
"array": [1,2,3],
"object": {
"array": [1,2,3],
"unicode": "\u00D6sterreich"
}
"bigint": 12345678901234
}
--FILE--
<?php
var_dump($_POST, json_last_error_msg());
var_dump($_POST, json_last_error());
?>
Done
--EXPECTF--
object(stdClass)#%d (8) {
["null"]=>
NULL
["bool"]=>
bool(true)
["int"]=>
int(123)
object(stdClass)#%d (1) {
["bigint"]=>
string(20) "36893488147419103232"
["float"]=>
float(123.123)
["string"]=>
string(11) "Hello World"
["array"]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
["object"]=>
object(stdClass)#%d (2) {
["array"]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
["unicode"]=>
string(11) "Österreich"
}
float(12345678901234)
}
string(8) "No error"
int(0)
Done

27
tests/003.phpt Normal file
View File

@@ -0,0 +1,27 @@
--TEST--
json_post with > 32bits integer as float on 32bits
--SKIPIF--
<?php
extension_loaded("json_post") or die("skip need json_post support\n");
if (PHP_INT_SIZE != 4) die("skip this test is for 32bits platform only");
?>
--INI--
json_post.flags=2;JSON_BIGINT_AS_STRING
--POST_RAW--
Content-type: text/json
{
"bigint": 12345678901234
}
--FILE--
<?php
var_dump($_POST, json_last_error());
?>
Done
--EXPECTF--
object(stdClass)#%d (1) {
["bigint"]=>
string(14) "12345678901234"
}
int(0)
Done

27
tests/004.phpt Normal file
View File

@@ -0,0 +1,27 @@
--TEST--
json_post with > 32bits integer as float on 64bits
--SKIPIF--
<?php
extension_loaded("json_post") or die("skip need json_post support\n");
if (PHP_INT_SIZE != 8) die("skip this test is for 64bits platform only");
?>
--INI--
json_post.flags=0
--POST_RAW--
Content-type: text/json
{
"bigint": 12345678901234
}
--FILE--
<?php
var_dump($_POST, json_last_error());
?>
Done
--EXPECTF--
object(stdClass)#%d (1) {
["bigint"]=>
int(12345678901234)
}
int(0)
Done