1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
<?php
namespace MediaWiki\Tests\Api\Format;
use MediaWiki\Api\ApiResult;
/**
* @group API
* @covers \MediaWiki\Api\ApiFormatPhp
*/
class ApiFormatPhpTest extends ApiFormatTestBase {
/** @inheritDoc */
protected $printerName = 'php';
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 ], 'a:1:{i:0;N;}' ],
[ [ true ], 'a:1:{i:0;s:0:"";}' ],
[ [ false ], 'a:0:{}' ],
[ [ true, ApiResult::META_BC_BOOLS => [ 0 ] ],
'a:1:{i:0;b:1;}' ],
[ [ false, ApiResult::META_BC_BOOLS => [ 0 ] ],
'a:1:{i:0;b:0;}' ],
[ [ 42 ], 'a:1:{i:0;i:42;}' ],
[ [ 42.5 ], 'a:1:{i:0;d:42.5;}' ],
[ [ 1e42 ], 'a:1:{i:0;d:1.0E+42;}' ],
[ [ 'foo' ], 'a:1:{i:0;s:3:"foo";}' ],
[ [ 'fóo' ], 'a:1:{i:0;s:4:"fóo";}' ],
// Arrays and objects
[ [ [] ], 'a:1:{i:0;a:0:{}}' ],
[ [ [ 1 ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
[ [ [ 'x' => 1 ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
[ [ [ 2 => 1 ] ], 'a:1:{i:0;a:1:{i:2;i:1;}}' ],
[ [ (object)[] ], 'a:1:{i:0;a:0:{}}' ],
[ [ [ 1, ApiResult::META_TYPE => 'assoc' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'array' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'kvp' ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ] ],
'a:1:{i:0;a:1:{i:0;a:2:{s:3:"key";s:1:"x";s:1:"*";i:1;}}}' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCarray' ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
[ [ [ 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ] ], 'a:1:{i:0;a:2:{i:0;s:1:"a";i:1;s:1:"b";}}' ],
// Content
[ [ 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
'a:1:{s:1:"*";s:3:"foo";}' ],
// BC Subelements
[ [ 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => [ 'foo' ] ],
'a:1:{s:3:"foo";a:1:{s:1:"*";s:3:"foo";}}' ],
] ),
self::addFormatVersion( 2, [
// Basic types
[ [ null ], 'a:1:{i:0;N;}' ],
[ [ true ], 'a:1:{i:0;b:1;}' ],
[ [ false ], 'a:1:{i:0;b:0;}' ],
[ [ true, ApiResult::META_BC_BOOLS => [ 0 ] ],
'a:1:{i:0;b:1;}' ],
[ [ false, ApiResult::META_BC_BOOLS => [ 0 ] ],
'a:1:{i:0;b:0;}' ],
[ [ 42 ], 'a:1:{i:0;i:42;}' ],
[ [ 42.5 ], 'a:1:{i:0;d:42.5;}' ],
[ [ 1e42 ], 'a:1:{i:0;d:1.0E+42;}' ],
[ [ 'foo' ], 'a:1:{i:0;s:3:"foo";}' ],
[ [ 'fóo' ], 'a:1:{i:0;s:4:"fóo";}' ],
// Arrays and objects
[ [ [] ], 'a:1:{i:0;a:0:{}}' ],
[ [ [ 1 ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
[ [ [ 'x' => 1 ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
[ [ [ 2 => 1 ] ], 'a:1:{i:0;a:1:{i:2;i:1;}}' ],
[ [ (object)[] ], 'a:1:{i:0;a:0:{}}' ],
[ [ [ 1, ApiResult::META_TYPE => 'assoc' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'array' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'kvp' ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ] ],
'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
[ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCarray' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
[ [ [ 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ] ], 'a:1:{i:0;a:2:{i:0;s:1:"a";i:1;s:1:"b";}}' ],
// Content
[ [ 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
'a:1:{s:7:"content";s:3:"foo";}' ],
// BC Subelements
[ [ 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => [ 'foo' ] ],
'a:1:{s:3:"foo";s:3:"foo";}' ],
] )
);
// phpcs:enable
}
}
|