File: MessageSerializationTestTrait.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (53 lines) | stat: -rw-r--r-- 1,421 bytes parent folder | download
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
<?php

namespace Wikimedia\Tests\Message;

use MediaWiki\Json\JsonCodec;
use Wikimedia\Tests\SerializationTestTrait;

trait MessageSerializationTestTrait {
	use SerializationTestTrait;

	/**
	 * Overrides SerializationTestTrait::getSerializedDataPath
	 * @return string
	 */
	public static function getSerializedDataPath(): string {
		return __DIR__ . '/../../../../data/MessageValue';
	}

	/**
	 * Overrides SerializationTestTrait::getTestInstancesAndAssertions
	 * @return array
	 */
	public static function getTestInstancesAndAssertions(): array {
		$className = self::getClassToTest();
		return array_map( static function ( $test ) use ( $className ) {
			[ $args, $expected ] = $test;
			$obj = new $className( ...$args );
			return [
				'instance' => $obj,
				'assertions' => static function ( $testCase, $obj ) use ( $expected ) {
					$testCase->assertSame( $expected, $obj->dump() );
				},
			];
		}, self::provideConstruct() );
	}

	/**
	 * Overrides SerializationTestTrait::getSupportedSerializationFormats
	 * @return array
	 */
	public static function getSupportedSerializationFormats(): array {
		$jsonCodec = new JsonCodec();
		return [ [
			'ext' => 'json',
			'serializer' => static function ( $obj ) use ( $jsonCodec ) {
				return $jsonCodec->serialize( $obj );
			},
			'deserializer' => static function ( $data ) use ( $jsonCodec ) {
				return $jsonCodec->deserialize( $data );
			},
		] ];
	}
}