$rulesFactory */ #[DataProvider('providerForTestRules')] public function testRules(callable $rulesFactory): void { $rules = $rulesFactory(); self::assertNotEmpty($rules); foreach ($rules as $rule) { self::assertArrayHasKey('id', $rule); self::assertArrayHasKey('name', $rule); self::assertArrayHasKey('formula', $rule); self::assertArrayHasKey('test', $rule); self::assertArrayHasKey('issue', $rule); self::assertArrayHasKey('recommendation', $rule); self::assertArrayHasKey('justification', $rule); self::assertContainsOnlyString($rule); } } /** * @return array * @psalm-return array}> */ public static function providerForTestRules(): iterable { return [ 'generic rules' => [ Rules::getGeneric(...), ], 'rules before MySQL 8.0.3' => [ Rules::getBeforeMySql80003(...), ], ]; } }