<?php include '../../JsonRpcClient.php';
$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $serverUrl = substr($url, 0, strpos($url, 'tests')) . 'server.php';
$client = new JsonRpcClient($serverUrl);
function json_prettify($str) { $result = ''; $len = strlen($str); $pos = 0; $indent = ' '; $prev = ''; $newline = "\r\n";
for ($i = 0; $i < $len; $i++) {
if ($str[$i] === '[' || $str[$i] === '{') { $pos++;
if ($prev !== ',' && $prev !== '[' && $prev !== '' && $prev !== ':') { $result .= $newline . str_repeat($indent, $pos - 1); }
$result .= $str[$i] . $newline . str_repeat($indent, $pos); } elseif ($str[$i] === ':') { $result .= $str[$i] . ' '; } elseif ($str[$i] === ',') { $result .= $str[$i] . $newline . str_repeat($indent, $pos); } elseif ($str[$i] === ']' || $str[$i] === '}') { $pos--; $result .= $newline . str_repeat($indent, $pos) . $str[$i]; } else { $result .= $str[$i]; }
$prev = $str[$i]; }
return $result; }
function test($request, $expected = null) { global $client;
$result = ''; $response = $client->rawcall($request);
if ($expected !== null) { $expected = json_encode(json_decode($expected)); }
$result .= '--> ' . $request . "\r\n";
if ($response !== null) { $result .= '<-- ' . json_prettify($response) . "\r\n"; }
if ($response === $expected) { $result .= '<strong class="pass">Pass</strong>'; } else { $result .= '<strong class="fail">Fail</strong> (expecting ' . $expected . ')'; }
return $result; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Optional parameters tests</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style type="text/css"> html, body { font: 12px Arial }
h1 { font-size: 17px }
pre { border: solid 1px #ccc; padding: 10px; display: inline-block; *display: inline; zoom: 1 }
.example { background-color: #FFEAEA; }
pre strong { display: block; width: auto; font-size: 14px; color: #fff; padding: 3px; margin: 10px 0 }
.pass { background-color: green; }
.fail { background-color: red; } </style> </head> <body> <h1>Optional parameters tests</h1>
<?php try { $request = '{}'; test($request); ?>
<h2>Named parameters:</h2>
<h3>Method has 3 optional arguments:</h3>
<p>no argument is passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', null, 1)); $expected = '{"jsonrpc": "2.0","result": ["",null,100],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>only argument #1 is passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', array('param1' => 'first is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed",null,100],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>only argument #2 is passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', array('param2' => 'second is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["","second is passed",100],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>only argument #3 is passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', array('param3' => 'third is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["",null,"third is passed"],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>arguments #1 and #2 are passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', array('param1' => 'first is passed', 'param2' => 'second is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed","second is passed",100],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>Flip arguments:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', array('param2' => 'second is passed', 'param1' => 'first is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed","second is passed",100],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>arguments #1 and #3 are passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', array('param1' => 'first is passed', 'param3' => 'third is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed",null,"third is passed"],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>Flip arguments:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', array('param3' => 'third is passed', 'param1' => 'first is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed",null,"third is passed"],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>arguments #2 and #3 are passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', array('param2' => 'second is passed', 'param3' => 'third is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["","second is passed","third is passed"],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>Flip arguments:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', array('param3' => 'third is passed', 'param2' => 'second is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["","second is passed","third is passed"],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>all passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', array('param1' => 'first is passed', 'param2' => 'second is passed', 'param3' => 'third is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed","second is passed","third is passed"],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>Flip arguments:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedAllOptional', array('param2' => 'second is passed', 'param1' => 'first is passed', 'param3' => 'third is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed","second is passed","third is passed"],"id": 1}';
echo test($request, $expected); ?> </pre>
<h3>Method has 3 arguments, #1 is required, #2 and #3 are optional</h3>
<p>only argument #1 is passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedFirstRequired', array('param1' => 'first is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed",null,100],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>arguments #1 and #2 are passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedFirstRequired', array('param1' => 'first is passed', 'param2' => 'second is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed","second is passed",100],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>arguments #1 and #3 are passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedFirstRequired', array('param1' => 'first is passed', 'param3' => 'third is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed",null,"third is passed"],"id": 1}';
echo test($request, $expected); ?> </pre>
<h3>Method has 3 arguments, #1 and #2 are required, #3 is optional</h3>
<p>only arguments #1 and #2 is passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedThirdOptional', array('param1' => 'first is passed', 'param2' => 'second is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed","second is passed",100],"id": 1}';
echo test($request, $expected); ?> </pre>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedThirdOptional', array('param1' => 'first is passed', 'param2' => 'second is passed', 'param3' => 'third is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed","second is passed","third is passed"],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>Flip arguments:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testNamedThirdOptional', array('param2' => 'second is passed', 'param1' => 'first is passed', 'param3' => 'third is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed","second is passed","third is passed"],"id": 1}';
echo test($request, $expected); ?> </pre>
<h2>Positional parameters</h2>
<h3>Method has 3 optional arguments:</h3>
<p>no argument is passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testPositionalAllOptional', null, 1)); $expected = '{"jsonrpc": "2.0","result": ["",null,100],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>only argument #1 is passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testPositionalAllOptional', array('first is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed",null,100],"id": 1}';
echo test($request, $expected); ?> </pre>
<p>only arguments #1 and #2 are passed:</p>
<pre class="example"> <?php $request = json_encode($client->prepare('testPositionalAllOptional', array('first is passed', 'second is passed'), 1)); $expected = '{"jsonrpc": "2.0","result": ["first is passed","second is passed",100],"id": 1}';
echo test($request, $expected); ?> </pre>
<?php } catch (Exception $e) { ?> <p><?php echo $e->getMessage(); ?></p> <?php } ?> </body> </html>
|