public function testSetInvisiblePropertyByMethod()
{
$mother = new Mother();
$child = new Child();
Util::setInvisibleProperty($mother, 'invalidProperty', 'private2', 'setPrivateProperty');
$this->assertSame('private2', Util::getInvisibleProperty($mother, 'invalidProperty', 'getPrivateProperty'));
Util::setInvisibleProperty($child, 'invalidProperty', 'private2', 'setPrivateProperty');
$this->assertSame('private2', Util::getInvisibleProperty($child, 'invalidProperty', 'getPrivateProperty'));
Util::setInvisibleProperty($child, 'invalidProperty', 'protected2', 'setProtectedProperty');
$this->assertSame('protected2', Util::getInvisibleProperty($child, 'invalidProperty', 'getProtectedProperty'));
Util::setInvisibleProperty($mother, 'invalidProperty', 'public2', 'setPublicProperty');
$this->assertSame('public2', Util::getInvisibleProperty($mother, 'invalidProperty', 'getPublicProperty'));
Util::setInvisibleProperty($child, 'invalidProperty', 'public2', 'setPublicProperty');
$this->assertSame('public2', Util::getInvisibleProperty($child, 'invalidProperty', 'getPublicProperty'));
}