1111use Doctrine \Tests \Models \TypedProperties \UserTyped ;
1212use Doctrine \Tests \ORM \Mapping \TypedFieldMapper \CustomIntAsStringTypedFieldMapper ;
1313use Doctrine \Tests \OrmTestCase ;
14+ use Generator ;
1415use PHPUnit \Framework \Attributes \DataProvider ;
1516use PHPUnit \Framework \Attributes \Group ;
1617use ReflectionClass ;
1718
19+ use function defined ;
20+
1821#[Group('GH10313 ' )]
1922class TypedFieldMapperTest extends OrmTestCase
2023{
@@ -36,36 +39,38 @@ private static function chainTypedFieldMapper(): ChainTypedFieldMapper
3639 /**
3740 * Data Provider for NamingStrategy#classToTableName
3841 *
39- * @return array <
42+ * @return Generator <
4043 * array{
4144 * TypedFieldMapper,
4245 * ReflectionClass,
4346 * array{fieldName: string, enumType?: string, type?: mixed},
4447 * array{fieldName: string, enumType?: string, type?: mixed}
4548 * }>
4649 */
47- public static function dataFieldToMappedField (): array
50+ public static function dataFieldToMappedField (): Generator
4851 {
4952 $ reflectionClass = new ReflectionClass (UserTyped::class);
5053
51- return [
52- // DefaultTypedFieldMapper
53- [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'id ' ], ['fieldName ' => 'id ' , 'type ' => Types::INTEGER ]],
54- [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'username ' ], ['fieldName ' => 'username ' , 'type ' => Types::STRING ]],
55- [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'dateInterval ' ], ['fieldName ' => 'dateInterval ' , 'type ' => Types::DATEINTERVAL ]],
56- [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'dateTime ' ], ['fieldName ' => 'dateTime ' , 'type ' => Types::DATETIME_MUTABLE ]],
57- [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'dateTimeImmutable ' ], ['fieldName ' => 'dateTimeImmutable ' , 'type ' => Types::DATETIME_IMMUTABLE ]],
58- [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'array ' ], ['fieldName ' => 'array ' , 'type ' => Types::JSON ]],
59- [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'boolean ' ], ['fieldName ' => 'boolean ' , 'type ' => Types::BOOLEAN ]],
60- [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'float ' ], ['fieldName ' => 'float ' , 'type ' => Types::FLOAT ]],
54+ // DefaultTypedFieldMapper
55+ yield [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'id ' ], ['fieldName ' => 'id ' , 'type ' => Types::INTEGER ]];
56+ yield [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'username ' ], ['fieldName ' => 'username ' , 'type ' => Types::STRING ]];
57+ yield [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'dateInterval ' ], ['fieldName ' => 'dateInterval ' , 'type ' => Types::DATEINTERVAL ]];
58+ yield [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'dateTime ' ], ['fieldName ' => 'dateTime ' , 'type ' => Types::DATETIME_MUTABLE ]];
59+ yield [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'dateTimeImmutable ' ], ['fieldName ' => 'dateTimeImmutable ' , 'type ' => Types::DATETIME_IMMUTABLE ]];
60+ yield [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'array ' ], ['fieldName ' => 'array ' , 'type ' => Types::JSON ]];
61+ yield [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'boolean ' ], ['fieldName ' => 'boolean ' , 'type ' => Types::BOOLEAN ]];
62+ yield [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'float ' ], ['fieldName ' => 'float ' , 'type ' => Types::FLOAT ]];
63+
64+ if (defined (Types::class . '::NUMBER ' )) {
65+ yield [self ::defaultTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'bodyHeight ' ], ['fieldName ' => 'bodyHeight ' , 'type ' => Types::NUMBER ]];
66+ }
6167
62- // CustomIntAsStringTypedFieldMapper
63- [self ::customTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'id ' ], ['fieldName ' => 'id ' , 'type ' => Types::STRING ]],
68+ // CustomIntAsStringTypedFieldMapper
69+ yield [self ::customTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'id ' ], ['fieldName ' => 'id ' , 'type ' => Types::STRING ]];
6470
65- // ChainTypedFieldMapper
66- [self ::chainTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'id ' ], ['fieldName ' => 'id ' , 'type ' => Types::STRING ]],
67- [self ::chainTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'username ' ], ['fieldName ' => 'username ' , 'type ' => Types::STRING ]],
68- ];
71+ // ChainTypedFieldMapper
72+ yield [self ::chainTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'id ' ], ['fieldName ' => 'id ' , 'type ' => Types::STRING ]];
73+ yield [self ::chainTypedFieldMapper (), $ reflectionClass , ['fieldName ' => 'username ' ], ['fieldName ' => 'username ' , 'type ' => Types::STRING ]];
6974 }
7075
7176 /**
0 commit comments