getName()); self::assertSame($validName, (string) $name); } #[DataProvider('providerForTestValidNames')] public function testTryFromValueValidName(string $validName): void { $name = TriggerName::tryFrom($validName); self::assertNotNull($name); self::assertSame($validName, $name->getName()); self::assertSame($validName, (string) $name); } /** @return iterable */ public static function providerForTestValidNames(): iterable { yield ['name']; yield ['0']; yield [str_repeat('a', 64)]; } #[DataProvider('providerForTestInvalidNames')] public function testInvalidNames(mixed $name, string $exceptionMessage): void { self::assertNull(TriggerName::tryFrom($name)); $this->expectException(InvalidTriggerName::class); $this->expectExceptionMessage($exceptionMessage); TriggerName::from($name); } /** * @return iterable * @psalm-return iterable */ public static function providerForTestInvalidNames(): iterable { yield 'null' => [null, 'The trigger name must not be empty.']; yield 'integer' => [1, 'The trigger name must not be empty.']; yield 'array' => [['trigger_name'], 'The trigger name must not be empty.']; yield 'empty string' => ['', 'The trigger name must not be empty.']; yield 'too long name' => [str_repeat('a', 65), 'The trigger name cannot be longer than 64 characters.']; yield 'trailing space' => ['a ', 'The trigger name cannot end with a space character.']; } }