X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fapi%2Fformat%2FApiFormatWddxTest.php;h=07111300aece20e24a819e480c69ef7b1b6a2b31;hb=64717f414cdd66a27630b92539cde5456d622141;hp=c00545f8ebe032a3047aaafde46f240d3b428a52;hpb=2e5bfb55d73d93867c5a1fcb091e6beab2ef56db;p=lhc%2Fweb%2Fwiklou.git
diff --git a/tests/phpunit/includes/api/format/ApiFormatWddxTest.php b/tests/phpunit/includes/api/format/ApiFormatWddxTest.php
index c00545f8eb..07111300ae 100644
--- a/tests/phpunit/includes/api/format/ApiFormatWddxTest.php
+++ b/tests/phpunit/includes/api/format/ApiFormatWddxTest.php
@@ -2,27 +2,79 @@
/**
* @group API
- * @group Database
- * @group medium
* @covers ApiFormatWddx
*/
class ApiFormatWddxTest extends ApiFormatTestBase {
- public function testValidSyntax( ) {
- if ( !function_exists( 'wddx_deserialize' ) ) {
- $this->markTestSkipped( "Function 'wddx_deserialize' not exist, skipping." );
- }
+ protected $printerName = 'wddx';
- if ( wfIsHHVM() && false === strpos( wddx_serialize_value( "Test for &" ), '&' ) ) {
- # Some version of HHVM fails to escape the ampersand
- #
- # https://phabricator.wikimedia.org/T75531
- $this->markTestSkipped( "wddx_deserialize is bugged under this version of HHVM" );
+ public static function provideGeneralEncoding() {
+ if ( ApiFormatWddx::useSlowPrinter() ) {
+ return array(
+ array( array(), 'Fast Wddx printer is unavailable', array( 'SKIP' => true ) )
+ );
}
+ return self::provideEncoding();
+ }
+
+ public static function provideEncoding() {
+ $p = 'format=wddx has been deprecated. Please use format=json instead.';
+ $s = '';
+
+ return array(
+ // Basic types
+ array( array( null ), "{$p}{$s}" ),
+ array( array( true ), "{$p}{$s}" ),
+ array( array( false ), "{$p}{$s}" ),
+ array( array( true, ApiResult::META_BC_BOOLS => array( 0 ) ),
+ "{$p}{$s}" ),
+ array( array( false, ApiResult::META_BC_BOOLS => array( 0 ) ),
+ "{$p}{$s}" ),
+ array( array( 42 ), "{$p}42{$s}" ),
+ array( array( 42.5 ), "{$p}42.5{$s}" ),
+ array( array( 1e42 ), "{$p}1.0E+42{$s}" ),
+ array( array( 'foo' ), "{$p}foo{$s}" ),
+ array( array( 'fóo' ), "{$p}fóo{$s}" ),
+
+ // Arrays and objects
+ array( array( array() ), "{$p}{$s}" ),
+ array( array( array( 1 ) ), "{$p}1{$s}" ),
+ array( array( array( 'x' => 1 ) ), "{$p}1{$s}" ),
+ array( array( array( 2 => 1 ) ), "{$p}1{$s}" ),
+ array( array( (object)array() ), "{$p}{$s}" ),
+ array( array( array( 1, ApiResult::META_TYPE => 'assoc' ) ), "{$p}1{$s}" ),
+ array( array( array( 'x' => 1, ApiResult::META_TYPE => 'array' ) ), "{$p}1{$s}" ),
+ array( array( array( 'x' => 1, ApiResult::META_TYPE => 'kvp' ) ), "{$p}1{$s}" ),
+ array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ) ),
+ "{$p}x1{$s}" ),
+ array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCarray' ) ), "{$p}1{$s}" ),
+ array( array( array( 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ) ), "{$p}ab{$s}" ),
+
+ // Content
+ array( array( 'content' => 'foo', ApiResult::META_CONTENT => 'content' ),
+ "{$p}foo{$s}" ),
- $data = $this->apiRequest( 'wddx', array( 'action' => 'query', 'meta' => 'siteinfo' ) );
+ // BC Subelements
+ array( array( 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => array( 'foo' ) ),
+ "{$p}foo{$s}" ),
+ );
+ }
+
+ /**
+ * @dataProvider provideEncoding
+ */
+ public function testSlowEncoding( array $data, $expect, array $params = array() ) {
+ // Adjust expectation for differences between fast and slow printers.
+ $expect = str_replace( '\'', '"', $expect );
+ $expect = str_replace( '/>', ' />', $expect );
+ $expect = '' . $expect;
+
+ $this->assertSame( $expect, $this->encodeData( $params, $data, 'ApiFormatWddxTest_SlowWddx' ) );
+ }
+}
- $this->assertInternalType( 'array', wddx_deserialize( $data ) );
- $this->assertGreaterThan( 0, count( (array)$data ) );
+class ApiFormatWddxTest_SlowWddx extends ApiFormatWddx {
+ public static function useSlowPrinter() {
+ return true;
}
}