|
30 | 30 |
|
31 | 31 | class PropertyInfoToTypeInfoHelperTest extends TestCase |
32 | 32 | { |
33 | | - /** |
34 | | - * @param list<LegacyType>|null $legacyTypes |
35 | | - */ |
36 | | - #[\PHPUnit\Framework\Attributes\DataProvider('convertLegacyTypesToTypeDataProvider')] |
37 | | - public function testConvertLegacyTypesToType(?Type $type, ?array $legacyTypes): void |
| 33 | + public function testConvertLegacyTypesToType(): void |
38 | 34 | { |
39 | | - $this->assertEquals($type, PropertyInfoToTypeInfoHelper::convertLegacyTypesToType($legacyTypes)); |
40 | | - } |
41 | | - |
42 | | - /** |
43 | | - * @return iterable<array{0: ?Type, 1: list<LegacyType>|null}> |
44 | | - */ |
45 | | - public static function convertLegacyTypesToTypeDataProvider(): iterable |
46 | | - { |
47 | | - yield [null, null]; |
48 | | - yield [Type::null(), [new LegacyType('null')]]; |
49 | | - // yield [Type::void(), [new LegacyType('void')]]; |
50 | | - yield [Type::int(), [new LegacyType('int')]]; |
51 | | - yield [Type::object(\stdClass::class), [new LegacyType('object', false, \stdClass::class)]]; |
52 | | - yield [ |
53 | | - Type::generic(Type::object(\stdClass::class), Type::string(), Type::int()), |
54 | | - [new LegacyType('object', false, 'stdClass', false, [new LegacyType('string')], new LegacyType('int'))], |
55 | | - ]; |
56 | | - yield [Type::nullable(Type::int()), [new LegacyType('int', true)]]; |
57 | | - yield [Type::union(Type::int(), Type::string()), [new LegacyType('int'), new LegacyType('string')]]; |
58 | | - yield [ |
59 | | - Type::union(Type::int(), Type::string(), Type::null()), |
60 | | - [new LegacyType('int', true), new LegacyType('string', true)], |
61 | | - ]; |
| 35 | + if (!class_exists(LegacyType::class)) { |
| 36 | + $this->markTestSkipped(); |
| 37 | + } |
62 | 38 |
|
63 | 39 | $type = Type::collection(Type::builtin(TypeIdentifier::ARRAY), Type::int(), Type::string()); // @phpstan-ignore-line |
64 | | - yield [$type, [new LegacyType('array', false, null, true, [new LegacyType('string')], new LegacyType('int'))]]; |
65 | | - } |
66 | | - |
67 | | - /** |
68 | | - * @param list<LegacyType>|null $legacyTypes |
69 | | - */ |
70 | | - #[\PHPUnit\Framework\Attributes\DataProvider('convertTypeToLegacyTypesDataProvider')] |
71 | | - public function testConvertTypeToLegacyTypes(?array $legacyTypes, ?Type $type): void |
72 | | - { |
73 | | - $this->assertEquals($legacyTypes, PropertyInfoToTypeInfoHelper::convertTypeToLegacyTypes($type)); |
74 | | - } |
75 | 40 |
|
76 | | - /** |
77 | | - * @return iterable<array{0: list<LegacyType>|null, 1: ?Type, 2?: bool}> |
78 | | - */ |
79 | | - public static function convertTypeToLegacyTypesDataProvider(): iterable |
80 | | - { |
81 | | - yield [null, null]; |
82 | | - yield [null, Type::mixed()]; |
83 | | - yield [null, Type::never()]; |
84 | | - yield [[new LegacyType('null')], Type::null()]; |
85 | | - yield [[new LegacyType('null')], Type::void()]; |
86 | | - yield [[new LegacyType('int')], Type::int()]; |
87 | | - yield [[new LegacyType('object', false, \stdClass::class)], Type::object(\stdClass::class)]; |
88 | | - yield [ |
89 | | - [new LegacyType('object', false, \Traversable::class, true, null, new LegacyType('int'))], |
90 | | - Type::generic(Type::object(\Traversable::class), Type::int()), |
91 | | - ]; |
92 | | - yield [ |
93 | | - [new LegacyType('array', false, null, true, new LegacyType('int'), new LegacyType('string'))], |
94 | | - Type::generic(Type::builtin(TypeIdentifier::ARRAY), Type::int(), Type::string()), // @phpstan-ignore-line |
| 41 | + $tests = [ |
| 42 | + [null, null], |
| 43 | + [Type::null(), [new LegacyType('null')]], |
| 44 | + // [Type::void(), [new LegacyType('void')]], |
| 45 | + [Type::int(), [new LegacyType('int')]], |
| 46 | + [Type::object(\stdClass::class), [new LegacyType('object', false, \stdClass::class)]], |
| 47 | + [ |
| 48 | + Type::generic(Type::object(\stdClass::class), Type::string(), Type::int()), |
| 49 | + [new LegacyType('object', false, 'stdClass', false, [new LegacyType('string')], new LegacyType('int'))], |
| 50 | + ], |
| 51 | + [Type::nullable(Type::int()), [new LegacyType('int', true)]], |
| 52 | + [Type::union(Type::int(), Type::string()), [new LegacyType('int'), new LegacyType('string')]], |
| 53 | + [ |
| 54 | + Type::union(Type::int(), Type::string(), Type::null()), |
| 55 | + [new LegacyType('int', true), new LegacyType('string', true)], |
| 56 | + ], |
| 57 | + [$type, [new LegacyType('array', false, null, true, [new LegacyType('string')], new LegacyType('int'))]], |
95 | 58 | ]; |
96 | | - yield [ |
97 | | - [new LegacyType('array', false, null, true, new LegacyType('int'), new LegacyType('string'))], |
98 | | - Type::collection(Type::builtin(TypeIdentifier::ARRAY), Type::string(), Type::int()), // @phpstan-ignore-line |
99 | | - ]; |
100 | | - yield [[new LegacyType('int', true)], Type::nullable(Type::int())]; |
101 | | - yield [[new LegacyType('int'), new LegacyType('string')], Type::union(Type::int(), Type::string())]; |
102 | | - yield [ |
103 | | - [new LegacyType('int', true), new LegacyType('string', true)], |
104 | | - Type::union(Type::int(), Type::string(), Type::null()), |
105 | | - ]; |
106 | | - yield [[new LegacyType('object', false, \Stringable::class), new LegacyType('object', false, \Traversable::class)], Type::intersection(Type::object(\Traversable::class), Type::object(\Stringable::class))]; |
| 59 | + |
| 60 | + foreach ($tests as [$expected, $legacyTypes]) { |
| 61 | + $this->assertEquals($expected, PropertyInfoToTypeInfoHelper::convertLegacyTypesToType($legacyTypes)); |
| 62 | + } |
107 | 63 | } |
108 | 64 |
|
109 | | - protected function setUp(): void |
| 65 | + public function testConvertTypeToLegacyTypes(): void |
110 | 66 | { |
111 | 67 | if (!class_exists(LegacyType::class)) { |
112 | 68 | $this->markTestSkipped(); |
113 | 69 | } |
| 70 | + |
| 71 | + $tests = [ |
| 72 | + [null, null], |
| 73 | + [null, Type::mixed()], |
| 74 | + [null, Type::never()], |
| 75 | + [[new LegacyType('null')], Type::null()], |
| 76 | + [[new LegacyType('null')], Type::void()], |
| 77 | + [[new LegacyType('int')], Type::int()], |
| 78 | + [[new LegacyType('object', false, \stdClass::class)], Type::object(\stdClass::class)], |
| 79 | + [ |
| 80 | + [new LegacyType('object', false, \Traversable::class, true, null, new LegacyType('int'))], |
| 81 | + Type::generic(Type::object(\Traversable::class), Type::int()), |
| 82 | + ], |
| 83 | + [ |
| 84 | + [new LegacyType('array', false, null, true, new LegacyType('int'), new LegacyType('string'))], |
| 85 | + Type::generic(Type::builtin(TypeIdentifier::ARRAY), Type::int(), Type::string()), // @phpstan-ignore-line |
| 86 | + ], |
| 87 | + [ |
| 88 | + [new LegacyType('array', false, null, true, new LegacyType('int'), new LegacyType('string'))], |
| 89 | + Type::collection(Type::builtin(TypeIdentifier::ARRAY), Type::string(), Type::int()), // @phpstan-ignore-line |
| 90 | + ], |
| 91 | + [[new LegacyType('int', true)], Type::nullable(Type::int())], |
| 92 | + [[new LegacyType('int'), new LegacyType('string')], Type::union(Type::int(), Type::string())], |
| 93 | + [ |
| 94 | + [new LegacyType('int', true), new LegacyType('string', true)], |
| 95 | + Type::union(Type::int(), Type::string(), Type::null()), |
| 96 | + ], |
| 97 | + [[new LegacyType('object', false, \Stringable::class), new LegacyType('object', false, \Traversable::class)], Type::intersection(Type::object(\Traversable::class), Type::object(\Stringable::class))], |
| 98 | + ]; |
| 99 | + |
| 100 | + foreach ($tests as [$expected, $type]) { |
| 101 | + $this->assertEquals($expected, PropertyInfoToTypeInfoHelper::convertTypeToLegacyTypes($type)); |
| 102 | + } |
114 | 103 | } |
115 | 104 | } |
0 commit comments