@@ -79,6 +79,87 @@ public function testRejectsInvalidTypeString(string $typeString)
79
79
TypeGenerator::fromTypeString ($ typeString );
80
80
}
81
81
82
+ /**
83
+ * @dataProvider validTypeArrayProvider
84
+ *
85
+ * @param string $typeArray
86
+ * @param string $expectedReturnType
87
+ */
88
+ public function testFromValidStringAlias (array $ typeArray , string $ expectedReturnType )
89
+ {
90
+ $ generator = TypeGenerator::fromTypeString ($ typeArray ['name ' ], $ typeArray ['alias ' ]);
91
+
92
+ self ::assertSame ($ expectedReturnType , $ generator ->generate ());
93
+ }
94
+
95
+ public function validTypeArrayProvider ()
96
+ {
97
+ return [
98
+ [['name ' => 'foo ' , 'alias ' => true ], 'foo ' ],
99
+ [['name ' => 'foo ' , 'alias ' => false ], '\\foo ' ],
100
+ [['name ' => '\\foo ' , 'alias ' => false ], '\\foo ' ],
101
+ [['name ' => '\\foo ' , 'alias ' => true ], 'foo ' ],
102
+ [['name ' => 'a \\b \\c ' , 'alias ' => false ], '\\a \\b \\c ' ],
103
+ [['name ' => 'a \\b \\c ' , 'alias ' => true ], 'a \\b \\c ' ],
104
+ [['name ' => 'array ' , 'alias ' => false ], 'array ' ],
105
+ [['name ' => 'array ' , 'alias ' => true ], 'array ' ],
106
+ [['name ' => 'Array ' , 'alias ' => false ], 'array ' ],
107
+ [['name ' => 'Array ' , 'alias ' => true ], 'array ' ],
108
+ [['name ' => 'ARRAY ' , 'alias ' => false ], 'array ' ],
109
+ [['name ' => 'ARRAY ' , 'alias ' => true ], 'array ' ],
110
+ [['name ' => 'callable ' , 'alias ' => false ], 'callable ' ],
111
+ [['name ' => 'callable ' , 'alias ' => true ], 'callable ' ],
112
+ [['name ' => 'Callable ' , 'alias ' => false ], 'callable ' ],
113
+ [['name ' => 'Callable ' , 'alias ' => true ], 'callable ' ],
114
+ [['name ' => 'CALLABLE ' , 'alias ' => false ], 'callable ' ],
115
+ [['name ' => 'CALLABLE ' , 'alias ' => true ], 'callable ' ],
116
+ [['name ' => 'string ' , 'alias ' => false ], 'string ' ],
117
+ [['name ' => 'string ' , 'alias ' => true ], 'string ' ],
118
+ [['name ' => 'String ' , 'alias ' => false ], 'string ' ],
119
+ [['name ' => 'String ' , 'alias ' => true ], 'string ' ],
120
+ [['name ' => 'STRING ' , 'alias ' => false ], 'string ' ],
121
+ [['name ' => 'STRING ' , 'alias ' => true ], 'string ' ],
122
+ [['name ' => 'int ' , 'alias ' => false ], 'int ' ],
123
+ [['name ' => 'int ' , 'alias ' => true ], 'int ' ],
124
+ [['name ' => 'Int ' , 'alias ' => false ], 'int ' ],
125
+ [['name ' => 'Int ' , 'alias ' => true ], 'int ' ],
126
+ [['name ' => 'INT ' , 'alias ' => false ], 'int ' ],
127
+ [['name ' => 'INT ' , 'alias ' => true ], 'int ' ],
128
+ [['name ' => 'float ' , 'alias ' => false ], 'float ' ],
129
+ [['name ' => 'float ' , 'alias ' => true ], 'float ' ],
130
+ [['name ' => 'Float ' , 'alias ' => false ], 'float ' ],
131
+ [['name ' => 'Float ' , 'alias ' => true ], 'float ' ],
132
+ [['name ' => 'FLOAT ' , 'alias ' => false ], 'float ' ],
133
+ [['name ' => 'FLOAT ' , 'alias ' => true ], 'float ' ],
134
+ [['name ' => 'bool ' , 'alias ' => false ], 'bool ' ],
135
+ [['name ' => 'bool ' , 'alias ' => true ], 'bool ' ],
136
+ [['name ' => 'Bool ' , 'alias ' => false ], 'bool ' ],
137
+ [['name ' => 'Bool ' , 'alias ' => true ], 'bool ' ],
138
+ [['name ' => 'BOOL ' , 'alias ' => false ], 'bool ' ],
139
+ [['name ' => 'BOOL ' , 'alias ' => true ], 'bool ' ],
140
+ [['name ' => 'object ' , 'alias ' => false ], '\\object ' ],
141
+ [['name ' => 'object ' , 'alias ' => true ], 'object ' ],
142
+ [['name ' => 'Object ' , 'alias ' => false ], '\\Object ' ],
143
+ [['name ' => 'Object ' , 'alias ' => true ], 'Object ' ],
144
+ [['name ' => 'OBJECT ' , 'alias ' => false ], '\\OBJECT ' ],
145
+ [['name ' => 'OBJECT ' , 'alias ' => true ], 'OBJECT ' ],
146
+ [['name ' => 'mixed ' , 'alias ' => false ], '\\mixed ' ],
147
+ [['name ' => 'mixed ' , 'alias ' => true ], 'mixed ' ],
148
+ [['name ' => 'Mixed ' , 'alias ' => false ], '\\Mixed ' ],
149
+ [['name ' => 'Mixed ' , 'alias ' => true ], 'Mixed ' ],
150
+ [['name ' => 'MIXED ' , 'alias ' => false ], '\\MIXED ' ],
151
+ [['name ' => 'MIXED ' , 'alias ' => true ], 'MIXED ' ],
152
+ [['name ' => 'resource ' , 'alias ' => false ], '\\resource ' ],
153
+ [['name ' => 'resource ' , 'alias ' => true ], 'resource ' ],
154
+ [['name ' => 'Resource ' , 'alias ' => false ], '\\Resource ' ],
155
+ [['name ' => 'Resource ' , 'alias ' => true ], 'Resource ' ],
156
+ [['name ' => 'RESOURCE ' , 'alias ' => false ], '\\RESOURCE ' ],
157
+ [['name ' => 'RESOURCE ' , 'alias ' => true ], 'RESOURCE ' ],
158
+ [['name ' => 'foo_bar ' , 'alias ' => false ], '\\foo_bar ' ],
159
+ [['name ' => 'foo_bar ' , 'alias ' => true ], 'foo_bar ' ],
160
+ ];
161
+ }
162
+
82
163
/**
83
164
* @return string[][]
84
165
*/
0 commit comments