public function provideGet() {
return [
- [ 'protectedDeprecated', null, null ],
[ 'protectedNonDeprecated', E_USER_ERROR,
'Cannot access non-public property TestDeprecatedClass::$protectedNonDeprecated' ],
- [ 'privateDeprecated', null, null ],
[ 'privateNonDeprecated', E_USER_ERROR,
'Cannot access non-public property TestDeprecatedClass::$privateNonDeprecated' ],
[ 'nonExistent', E_USER_NOTICE, 'Undefined property: TestDeprecatedClass::$nonExistent' ],
public function provideSet() {
return [
- [ 'protectedDeprecated', null, null ],
[ 'protectedNonDeprecated', E_USER_ERROR,
'Cannot access non-public property TestDeprecatedClass::$protectedNonDeprecated' ],
- [ 'privateDeprecated', null, null ],
[ 'privateNonDeprecated', E_USER_ERROR,
'Cannot access non-public property TestDeprecatedClass::$privateNonDeprecated' ],
[ 'nonExistent', null, null ],
}
public function testSubclassGetSet() {
- $this->assertDeprecationWarningIssued( function () {
- $this->assertSame( 1, $this->testSubclass->getDeprecatedPrivateParentProperty() );
- } );
- $this->assertDeprecationWarningIssued( function () {
- $this->testSubclass->setDeprecatedPrivateParentProperty( 0 );
- } );
- $wrapper = TestingAccessWrapper::newFromObject( $this->testSubclass );
- $this->assertSame( 0, $wrapper->privateDeprecated );
-
$fullName = 'TestDeprecatedClass::$privateNonDeprecated';
$this->assertErrorTriggered( function () {
$this->assertSame( null, $this->testSubclass->getNonDeprecatedPrivateParentProperty() );
$wrapper = TestingAccessWrapper::newFromObject( $this->testSubclass );
$this->assertSame( 1, $wrapper->privateNonDeprecated );
}, E_USER_ERROR, "Cannot access non-public property $fullName" );
+
+ $fullName = 'TestDeprecatedSubclass::$subclassPrivateNondeprecated';
+ $this->assertErrorTriggered( function () {
+ $this->assertSame( null, $this->testSubclass->subclassPrivateNondeprecated );
+ }, E_USER_ERROR, "Cannot access non-public property $fullName" );
+ $this->assertErrorTriggered( function () {
+ $this->testSubclass->subclassPrivateNondeprecated = 0;
+ $wrapper = TestingAccessWrapper::newFromObject( $this->testSubclass );
+ $this->assertSame( 1, $wrapper->subclassPrivateNondeprecated );
+ }, E_USER_ERROR, "Cannot access non-public property $fullName" );
}
protected function assertErrorTriggered( callable $callback, $level, $message ) {
$this->assertNotEmpty( $wrapper->deprecationWarnings );
}
+ /**
+ * Test bad MW version values to throw exceptions as expected
+ *
+ * @dataProvider provideBadMWVersion
+ */
+ public function testBadMWVersion( $version, $expected ) {
+ $this->setExpectedException( $expected );
+
+ wfDeprecated( __METHOD__, $version );
+ }
+
+ public function provideBadMWVersion() {
+ return [
+ [ 1, Exception::class ],
+ [ 1.33, Exception::class ],
+ [ null, Exception::class ]
+ ];
+ }
}