15
15
16
16
use phpDocumentor \Reflection \Fqsen ;
17
17
use phpDocumentor \Reflection \FqsenResolver ;
18
+ use phpDocumentor \Reflection \PseudoTypes \ConstExpression ;
19
+ use phpDocumentor \Reflection \PseudoTypes \FloatValue ;
18
20
use phpDocumentor \Reflection \PseudoTypes \IntegerRange ;
21
+ use phpDocumentor \Reflection \PseudoTypes \IntegerValue ;
19
22
use phpDocumentor \Reflection \PseudoTypes \List_ ;
23
+ use phpDocumentor \Reflection \PseudoTypes \StringValue ;
24
+ use phpDocumentor \Reflection \PseudoTypes \True_ ;
20
25
use phpDocumentor \Reflection \Type ;
21
26
use phpDocumentor \Reflection \TypeResolver ;
22
27
use phpDocumentor \Reflection \Types \Array_ ;
@@ -50,6 +55,8 @@ final class TypeFactoryTest extends TestCase
50
55
* @dataProvider typeProvider
51
56
* @dataProvider genericsProvider
52
57
* @dataProvider callableProvider
58
+ * @dataProvider constExpressions
59
+ * @testdox create type from $type
53
60
*/
54
61
public function testTypeBuilding (string $ type , Type $ expected ): void
55
62
{
@@ -58,8 +65,9 @@ public function testTypeBuilding(string $type, Type $expected): void
58
65
$ constParser = new ConstExprParser ();
59
66
$ parser = new TypeParser ($ constParser );
60
67
$ ast = $ parser ->parse (new TokenIterator ($ tokens ));
68
+ $ fqsenResolver = new FqsenResolver ();
61
69
62
- $ factory = new TypeFactory (new TypeResolver (new FqsenResolver ()) );
70
+ $ factory = new TypeFactory (new TypeResolver ($ fqsenResolver ), $ fqsenResolver );
63
71
$ actual = $ factory ->createType ($ ast , new Context ('phpDocumentor ' ));
64
72
65
73
self ::assertEquals ($ expected , $ actual );
@@ -219,72 +227,29 @@ public function callableProvider(): array
219
227
public function constExpressions (): array
220
228
{
221
229
return [
222
- ['Foo::FOO_CONSTANT ' ],
223
230
[
224
231
'123 ' ,
225
- // new ConstTypeNode(new ConstExprIntegerNode(' 123') ),
232
+ new IntegerValue ( 123 ),
226
233
],
227
234
[
228
- '123.2 ' ,
229
- //new ConstTypeNode(new ConstExprFloatNode('123.2')),
230
- ],
231
- [
232
- '"bar" ' ,
233
- //new ConstTypeNode(new ConstExprStringNode('bar')),
234
- ],
235
- [
236
- 'Foo::FOO_* ' ,
237
- //new ConstTypeNode(new ConstFetchNode('Foo', 'FOO_*')),
238
- ],
239
- [
240
- 'Foo::FOO_*BAR ' ,
241
- //new ConstTypeNode(new ConstFetchNode('Foo', 'FOO_*BAR')),
242
- ],
243
- [
244
- 'Foo::*FOO* ' ,
245
- //new ConstTypeNode(new ConstFetchNode('Foo', '*FOO*')),
235
+ 'true ' ,
236
+ new True_ (),
246
237
],
247
238
[
248
- 'Foo::A*B*C ' ,
249
- //new ConstTypeNode(new ConstFetchNode('Foo', 'A*B*C')),
250
- ],
251
- [
252
- 'self::*BAR ' ,
253
- //new ConstTypeNode(new ConstFetchNode('self', '*BAR')),
254
- ],
255
- [
256
- 'Foo::* ' ,
257
- //new ConstTypeNode(new ConstFetchNode('Foo', '*')),
258
- ],
259
- [
260
- 'Foo::** ' ,
261
- //new ConstTypeNode(new ConstFetchNode('Foo', '*')), // fails later in PhpDocParser
262
- //Lexer::TOKEN_WILDCARD,
263
- ],
264
- [
265
- 'Foo::*a ' ,
266
- //new ConstTypeNode(new ConstFetchNode('Foo', '*a')),
239
+ '123.2 ' ,
240
+ new FloatValue (123.2 ),
267
241
],
268
242
[
269
- '( "foo" | Foo::FOO_* ) ' ,
270
- // new UnionTypeNode([
271
- // new ConstTypeNode(new ConstExprStringNode('foo')),
272
- // new ConstTypeNode(new ConstFetchNode('Foo', 'FOO_*')),
273
- // ]),
243
+ '"bar" ' ,
244
+ new StringValue ('bar ' ),
274
245
],
275
246
[
276
- 'DateTimeImmutable::*|DateTime::* ' ,
277
- // new UnionTypeNode([
278
- // new ConstTypeNode(new ConstFetchNode('DateTimeImmutable', '*')),
279
- // new ConstTypeNode(new ConstFetchNode('DateTime', '*')),
280
- // ]),
247
+ 'Foo::FOO_CONSTANT ' ,
248
+ new ConstExpression (new Fqsen ('\\phpDocumentor \\Foo ' ), 'FOO_CONSTANT ' ),
281
249
],
282
250
[
283
- 'ParameterTier::*|null ' ,
284
- // new UnionTypeNode([
285
- // new ConstTypeNode(new ConstFetchNode('ParameterTier', '*')),
286
- // new IdentifierTypeNode('null'),
287
- // ]),
251
+ 'Foo::FOO_* ' ,
252
+ new ConstExpression (new Fqsen ('\\phpDocumentor \\Foo ' ), 'FOO_* ' ),
288
253
],
289
254
];
290
255
}
0 commit comments