* @copyright Meritoo * * @internal * @covers \Meritoo\Common\Exception\Reflection\ClassWithoutConstructorException */ class ClassWithoutConstructorExceptionTest extends BaseTestCase { public function testConstructor(): void { static::assertConstructorVisibilityAndArguments( ClassWithoutConstructorException::class, OopVisibilityType::IS_PUBLIC, 3 ); } /** * @param string $description Description of test case * @param string $className Fully-qualified name of class that hasn't constructor * @param string $expectedMessage Expected exception's message * * @dataProvider provideClassName */ public function testCreate(string $description, string $className, string $expectedMessage): void { $exception = ClassWithoutConstructorException::create($className); static::assertSame($expectedMessage, $exception->getMessage(), $description); } public function provideClassName(): Generator { $template = 'Oops, class \'%s\' hasn\'t constructor. Did you use proper class?'; yield[ 'An empty name of class', '', sprintf($template, ''), ]; yield[ 'The Arrays class', Arrays::class, sprintf($template, Arrays::class), ]; } }