Chris@13: assertInstanceOf('ReflectionFunction', $refl); Chris@13: Chris@13: $refl = Mirror::get('Psy\Test\Util\MirrorTest'); Chris@13: $this->assertInstanceOf('ReflectionClass', $refl); Chris@13: Chris@13: $refl = Mirror::get($this); Chris@13: $this->assertInstanceOf('ReflectionObject', $refl); Chris@13: Chris@13: $refl = Mirror::get($this, 'FOO'); Chris@17: if (\version_compare(PHP_VERSION, '7.1.0', '>=')) { Chris@16: $this->assertInstanceOf('ReflectionClassConstant', $refl); Chris@16: } else { Chris@16: $this->assertInstanceOf('Psy\Reflection\ReflectionClassConstant', $refl); Chris@16: } Chris@16: Chris@16: $refl = Mirror::get('PHP_VERSION'); Chris@16: $this->assertInstanceOf('Psy\Reflection\ReflectionConstant_', $refl); Chris@13: Chris@13: $refl = Mirror::get($this, 'bar'); Chris@13: $this->assertInstanceOf('ReflectionProperty', $refl); Chris@13: Chris@13: $refl = Mirror::get($this, 'baz'); Chris@13: $this->assertInstanceOf('ReflectionProperty', $refl); Chris@13: Chris@13: $refl = Mirror::get($this, 'aPublicMethod'); Chris@13: $this->assertInstanceOf('ReflectionMethod', $refl); Chris@13: Chris@13: $refl = Mirror::get($this, 'baz', Mirror::STATIC_PROPERTY); Chris@13: $this->assertInstanceOf('ReflectionProperty', $refl); Chris@13: } Chris@13: Chris@13: /** Chris@13: * @expectedException \RuntimeException Chris@13: */ Chris@13: public function testMirrorThrowsExceptions() Chris@13: { Chris@13: Mirror::get($this, 'notAMethod'); Chris@13: } Chris@13: Chris@13: /** Chris@13: * @expectedException \InvalidArgumentException Chris@13: * @dataProvider invalidArguments Chris@13: */ Chris@13: public function testMirrorThrowsInvalidArgumentExceptions($value) Chris@13: { Chris@13: Mirror::get($value); Chris@13: } Chris@13: Chris@13: public function invalidArguments() Chris@13: { Chris@13: return [ Chris@13: ['not_a_function_or_class'], Chris@13: [[]], Chris@13: [1], Chris@13: ]; Chris@13: } Chris@13: }