php-src/ext/soap/tests/bugs/bug30045.phpt
Dmitry Stogov fabd954200 Fixed test
2006-04-10 12:50:02 +00:00

172 lines
4.3 KiB
PHP

--TEST--
Bug #30045 (Cannot pass big integers (> 2147483647) in SOAP requests)
--SKIPIF--
<?php
if (!extension_loaded('soap')) die('skip soap extension not available');
if (!extension_loaded('simplexml')) die('skip simplexml extension not available');
?>
--FILE--
<?php
function foo($type, $num) {
return new SoapVar($num, $type);
}
class LocalSoapClient extends SoapClient {
function __construct($wsdl, $options) {
parent::__construct($wsdl, $options);
$this->server = new SoapServer($wsdl, $options);
$this->server->addFunction('foo');
}
function __doRequest($request, $location, $action, $version) {
$xml = simplexml_load_string($request);
echo $xml->children("http://schemas.xmlsoap.org/soap/envelope/")->Body->children("http://test-uri")->children()->param1->asXML(),"\n";
unset($xml);
ob_start();
$this->server->handle($request);
$response = ob_get_contents();
ob_end_clean();
return $response;
}
}
$soap = new LocalSoapClient(NULL, array("uri"=>"http://test-uri", "location"=>"test://"));
function test($type, $num) {
global $soap;
try {
printf(" %0.0f\n ", $num);
$ret = $soap->foo($type, new SoapVar($num, $type));
printf(" %0.0f\n", $ret);
} catch (SoapFault $ex) {
var_dump($ex);
}
}
/*
echo "byte\n";
//test(XSD_BYTE, -129);
test(XSD_BYTE, -128);
test(XSD_BYTE, 127);
//test(XSD_BYTE, 128);
echo "\nshort\n";
//test(XSD_SHORT, -32769);
test(XSD_SHORT, -32768);
test(XSD_SHORT, 32767);
//test(XSD_SHORT, 32768);
echo "\nint\n";
//test(XSD_INT, -2147483649);
test(XSD_INT, -2147483648);
test(XSD_INT, 2147483647);
//test(XSD_INT, 2147483648);
echo "\nlong\n";
//test(XSD_LONG, -9223372036854775809);
test(XSD_LONG, -9223372036854775808);
test(XSD_LONG, 9223372036854775807);
//test(XSD_LONG, 9223372036854775808);
echo "\nunsignedByte\n";
//test(XSD_UNSIGNEDBYTE, -1);
test(XSD_UNSIGNEDBYTE, 0);
test(XSD_UNSIGNEDBYTE, 255);
//test(XSD_UNSIGNEDBYTE, 256);
echo "\nunsignedShort\n";
//test(XSD_UNSIGNEDSHORT, -1);
test(XSD_UNSIGNEDSHORT, 0);
test(XSD_UNSIGNEDSHORT, 65535);
//test(XSD_UNSIGNEDSHORT, 65536);
echo "\nunsignedInt\n";
//test(XSD_UNSIGNEDINT, -1);
test(XSD_UNSIGNEDINT, 0);
test(XSD_UNSIGNEDINT, 4294967295);
//test(XSD_UNSIGNEDINT, 4294967296);
echo "\nunsignedLong\n";
//test(XSD_UNSIGNEDLONG, -1);
test(XSD_UNSIGNEDLONG, 0);
test(XSD_UNSIGNEDLONG, 18446744073709551615);
//test(XSD_UNSIGNEDLONG, 18446744073709551616);
echo "\nnegativeInteger\n";
test(XSD_NEGATIVEINTEGER, -18446744073709551616);
test(XSD_NEGATIVEINTEGER, -1);
//test(XSD_NEGATIVEINTEGER, 0);
echo "\nnonPositiveInteger\n";
test(XSD_NONPOSITIVEINTEGER, -18446744073709551616);
test(XSD_NONPOSITIVEINTEGER, 0);
//test(XSD_NONPOSITIVEINTEGER, 1);
echo "\nnonNegativeInteger\n";
//test(XSD_NONNEGATIVEINTEGER, -1);
test(XSD_NONNEGATIVEINTEGER, 0);
test(XSD_NONNEGATIVEINTEGER, 18446744073709551616);
echo "\nPositiveInteger\n";
//test(XSD_POSITIVEINTEGER, 0);
test(XSD_POSITIVEINTEGER, 1);
test(XSD_POSITIVEINTEGER, 18446744073709551616);
echo "\ninteger\n";
test(XSD_INTEGER, -18446744073709551616);
test(XSD_INTEGER, 18446744073709551616);
*/
echo "long\n";
test(XSD_LONG, 2147483647);
test(XSD_LONG, 2147483648);
test(XSD_LONG, 4294967296);
test(XSD_LONG, 8589934592);
test(XSD_LONG, 17179869184);
echo "\nunsignedLong\n";
test(XSD_UNSIGNEDLONG, 2147483647);
test(XSD_UNSIGNEDLONG, 2147483648);
test(XSD_UNSIGNEDLONG, 4294967296);
test(XSD_UNSIGNEDLONG, 8589934592);
test(XSD_UNSIGNEDLONG, 17179869184);
?>
--EXPECT--
long
2147483647
<param1 xsi:type="xsd:long">2147483647</param1>
2147483647
2147483648
<param1 xsi:type="xsd:long">2147483648</param1>
2147483648
4294967296
<param1 xsi:type="xsd:long">4294967296</param1>
4294967296
8589934592
<param1 xsi:type="xsd:long">8589934592</param1>
8589934592
17179869184
<param1 xsi:type="xsd:long">17179869184</param1>
17179869184
unsignedLong
2147483647
<param1 xsi:type="xsd:unsignedLong">2147483647</param1>
2147483647
2147483648
<param1 xsi:type="xsd:unsignedLong">2147483648</param1>
2147483648
4294967296
<param1 xsi:type="xsd:unsignedLong">4294967296</param1>
4294967296
8589934592
<param1 xsi:type="xsd:unsignedLong">8589934592</param1>
8589934592
17179869184
<param1 xsi:type="xsd:unsignedLong">17179869184</param1>
17179869184