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
|
<?php
use MediaWiki\Debug\DeprecatablePropertyArray;
/**
* @covers \MediaWiki\Debug\DeprecatablePropertyArray
*/
class DeprecatablePropertyArrayTest extends MediaWikiUnitTestCase {
private const PROP_NAME = 'test_property';
/**
* @dataProvider provideDeprecationWarning
*/
public function testDeprecationWarning( callable $callback, string $message ) {
$this->expectDeprecationAndContinue( '/' . preg_quote( $message, '/' ) . '/' );
$callback();
}
public function provideDeprecationWarning() {
$propName = self::PROP_NAME;
$array = new DeprecatablePropertyArray(
[
self::PROP_NAME => 'test_value',
'callback' => static function () {
return 'callback_test_value';
},
],
[
self::PROP_NAME => 'DEPRECATED_VERSION',
'callback' => 'DEPRECATED_VERSION',
],
'TEST'
);
yield 'get' => [
function () use ( $array ) {
$this->assertSame( 'test_value', $array[ self::PROP_NAME ] );
},
"TEST get '{$propName}'"
];
yield 'get, callback' => [
function () use ( $array ) {
$this->assertSame( 'callback_test_value', $array[ 'callback' ] );
},
"TEST get 'callback'"
];
yield 'exists' => [
function () use ( $array ) {
$this->assertTrue( isset( $array[ self::PROP_NAME ] ) );
},
"TEST exists '{$propName}'"
];
yield 'unset' => [
static function () use ( $array ) {
unset( $array[ self::PROP_NAME ] );
},
"TEST unset '{$propName}'"
];
}
public function testNonDeprecated() {
$array = new DeprecatablePropertyArray( [], [], __METHOD__ );
$this->assertFalse( isset( $array[self::PROP_NAME] ) );
$array[self::PROP_NAME] = 'test_value';
$this->assertTrue( isset( $array[self::PROP_NAME] ) );
$this->assertSame( 'test_value', $array[self::PROP_NAME] );
unset( $array[self::PROP_NAME] );
$this->assertFalse( isset( $array[self::PROP_NAME] ) );
}
public function testNonDeprecatedNumerical() {
$array = new DeprecatablePropertyArray( [], [], __METHOD__ );
$this->assertFalse( isset( $array[0] ) );
$array[] = 'test_value';
$this->assertTrue( isset( $array[0] ) );
$this->assertSame( 'test_value', $array[0] );
unset( $array[0] );
$this->assertFalse( isset( $array[0] ) );
}
}
|