wiki.techinc.nl/tests/phpunit/includes/api/format/ApiFormatJsonTest.php
Kunal Mehta 6e9b4f0e9c Convert all array() syntax to []
Per wikitech-l consensus:
 https://lists.wikimedia.org/pipermail/wikitech-l/2016-February/084821.html

Notes:
* Disabled CallTimePassByReference due to false positives (T127163)

Change-Id: I2c8ce713ce6600a0bb7bf67537c87044c7a45c4b
2016-02-17 01:33:00 -08:00

129 lines
3.6 KiB
PHP

<?php
/**
* @group API
* @covers ApiFormatJson
*/
class ApiFormatJsonTest extends ApiFormatTestBase {
protected $printerName = 'json';
private static function addFormatVersion( $format, $arr ) {
foreach ( $arr as &$p ) {
if ( !isset( $p[2] ) ) {
$p[2] = [ 'formatversion' => $format ];
} else {
$p[2]['formatversion'] = $format;
}
}
return $arr;
}
public static function provideGeneralEncoding() {
return array_merge(
self::addFormatVersion( 1, [
// Basic types
[ [ null ], '[null]' ],
[ [ true ], '[""]' ],
[ [ false ], '[]' ],
[ [ true, ApiResult::META_BC_BOOLS => [ 0 ] ], '[true]' ],
[ [ false, ApiResult::META_BC_BOOLS => [ 0 ] ], '[false]' ],
[ [ 42 ], '[42]' ],
[ [ 42.5 ], '[42.5]' ],
[ [ 1e42 ], '[1.0e+42]' ],
[ [ 'foo' ], '["foo"]' ],
[ [ 'fóo' ], '["f\u00f3o"]' ],
[ [ 'fóo' ], '["fóo"]', [ 'utf8' => 1 ] ],
// Arrays and objects
[ [ [] ], '[[]]' ],
[ [ [ 1 ] ], '[[1]]' ],
[ [ [ 'x' => 1 ] ], '[{"x":1}]' ],
[ [ [ 2 => 1 ] ], '[{"2":1}]' ],
[ [ (object)[] ], '[{}]' ],
[ [ [ 1, ApiResult::META_TYPE => 'assoc' ] ], '[{"0":1}]' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'array' ] ], '[[1]]' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'kvp' ] ], '[{"x":1}]' ],
[
[ [
'x' => 1,
ApiResult::META_TYPE => 'BCkvp',
ApiResult::META_KVP_KEY_NAME => 'key'
] ],
'[[{"key":"x","*":1}]]'
],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCarray' ] ], '[{"x":1}]' ],
[ [ [ 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ] ], '[["a","b"]]' ],
// Content
[ [ 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
'{"*":"foo"}' ],
// BC Subelements
[ [ 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => [ 'foo' ] ],
'{"foo":{"*":"foo"}}' ],
// Callbacks
[ [ 1 ], '/**/myCallback([1])', [ 'callback' => 'myCallback' ] ],
// Cross-domain mangling
[ [ '< Cross-Domain-Policy >' ], '["\u003C Cross-Domain-Policy \u003E"]' ],
] ),
self::addFormatVersion( 2, [
// Basic types
[ [ null ], '[null]' ],
[ [ true ], '[true]' ],
[ [ false ], '[false]' ],
[ [ true, ApiResult::META_BC_BOOLS => [ 0 ] ], '[true]' ],
[ [ false, ApiResult::META_BC_BOOLS => [ 0 ] ], '[false]' ],
[ [ 42 ], '[42]' ],
[ [ 42.5 ], '[42.5]' ],
[ [ 1e42 ], '[1.0e+42]' ],
[ [ 'foo' ], '["foo"]' ],
[ [ 'fóo' ], '["fóo"]' ],
[ [ 'fóo' ], '["f\u00f3o"]', [ 'ascii' => 1 ] ],
// Arrays and objects
[ [ [] ], '[[]]' ],
[ [ [ 'x' => 1 ] ], '[{"x":1}]' ],
[ [ [ 2 => 1 ] ], '[{"2":1}]' ],
[ [ (object)[] ], '[{}]' ],
[ [ [ 1, ApiResult::META_TYPE => 'assoc' ] ], '[{"0":1}]' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'array' ] ], '[[1]]' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'kvp' ] ], '[{"x":1}]' ],
[
[ [
'x' => 1,
ApiResult::META_TYPE => 'BCkvp',
ApiResult::META_KVP_KEY_NAME => 'key'
] ],
'[{"x":1}]'
],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCarray' ] ], '[[1]]' ],
[
[ [
'a',
'b',
ApiResult::META_TYPE => 'BCassoc'
] ],
'[{"0":"a","1":"b"}]'
],
// Content
[ [ 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
'{"content":"foo"}' ],
// BC Subelements
[ [ 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => [ 'foo' ] ],
'{"foo":"foo"}' ],
// Callbacks
[ [ 1 ], '/**/myCallback([1])', [ 'callback' => 'myCallback' ] ],
// Cross-domain mangling
[ [ '< Cross-Domain-Policy >' ], '["\u003C Cross-Domain-Policy \u003E"]' ],
] )
);
}
}