'bar', 'biz' => [ 'baz' => 'boom', ], 'nestedAnnotation' => new Plugin([ 'foo' => 'bar', ]), ]); $this->assertEquals([ // This property wasn't in our definition but is defined as a property on // our plugin class. 'defaultProperty' => 'testvalue', 'foo' => 'bar', 'biz' => [ 'baz' => 'boom', ], 'nestedAnnotation' => [ 'foo' => 'bar', ], ], $plugin->get()); // Without default properties, we get a completely empty plugin definition. $plugin = new Plugin([]); $this->assertEquals([], $plugin->get()); } /** * @covers ::getProvider */ public function testGetProvider() { $plugin = new Plugin(['provider' => 'example']); $this->assertEquals('example', $plugin->getProvider()); } /** * @covers ::setProvider */ public function testSetProvider() { $plugin = new Plugin([]); $plugin->setProvider('example'); $this->assertEquals('example', $plugin->getProvider()); } /** * @covers ::getId */ public function testGetId() { $plugin = new Plugin(['id' => 'example']); $this->assertEquals('example', $plugin->getId()); } /** * @covers ::getClass */ public function testGetClass() { $plugin = new Plugin(['class' => 'example']); $this->assertEquals('example', $plugin->getClass()); } /** * @covers ::setClass */ public function testSetClass() { $plugin = new Plugin([]); $plugin->setClass('example'); $this->assertEquals('example', $plugin->getClass()); } } /** * {@inheritdoc} */ class PluginStub extends Plugin { protected $defaultProperty = 'testvalue'; }