@@ -162,7 +162,7 @@ public async Task MonoBehaviourFactoryWithArgsTest()
162162 var instance = await factory . CreateAsync ( ) ;
163163 Assert . That ( instance , Is . TypeOf < TestMonoBehaviour > ( ) ) ;
164164 Assert . That ( ( instance as TestMonoBehaviour ) ? . gameObject , Is . EqualTo ( gameObject ) ) ;
165- Assert . That ( ( instance as TestMonoBehaviour ) ? . InjectedObject , Is . EqualTo ( injectedObject ) ) ;
165+ Assert . That ( ( instance as TestMonoBehaviour ) ? . InjectedObjects [ 0 ] , Is . EqualTo ( injectedObject ) ) ;
166166 }
167167
168168 [ Test ]
@@ -197,7 +197,95 @@ public async Task PrefabFactoryWithArgsTest()
197197
198198 var factory = await container . ResolveAsync < Factory < TestMonoBehaviour > > ( ) ;
199199 var instance = await factory . CreateAsync ( ) ;
200- Assert . That ( instance . InjectedObject , Is . EqualTo ( injectedInstance ) ) ;
200+ Assert . That ( instance . InjectedObjects [ 0 ] , Is . EqualTo ( injectedInstance ) ) ;
201+ Assert . That ( instance . InjectedObjects [ 1 ] , Is . Null ) ;
202+ Assert . That ( instance . InjectedObjects [ 2 ] , Is . Null ) ;
203+ Assert . That ( instance . InjectedObjects [ 3 ] , Is . Null ) ;
204+ }
205+
206+ [ Test ]
207+ public async Task PrefabFactoryWithMultiArgsTest ( )
208+ {
209+ const string prefabGuid = "b1f3d745bc6e3624b852543a31febb12" ;
210+ var prefabPath = AssetDatabase . GUIDToAssetPath ( prefabGuid ) ;
211+ var prefab = AssetDatabase . LoadAssetAtPath < TestMonoBehaviour > ( prefabPath ) ;
212+
213+ var injectedInstances = new [ ] { new InjectedObject ( ) , new InjectedObject ( ) , new InjectedObject ( ) , new InjectedObject ( ) } ;
214+ container
215+ . BindPrefab < TestMonoBehaviour > ( prefab )
216+ . Args ( injectedInstances [ 0 ] , injectedInstances [ 1 ] , injectedInstances [ 2 ] , injectedInstances [ 3 ] )
217+ . AsFactory ( ) ;
218+
219+ var factory = await container . ResolveAsync < Factory < TestMonoBehaviour > > ( ) ;
220+ var instance = await factory . CreateAsync ( ) ;
221+ Assert . That ( instance . InjectedObjects [ 0 ] , Is . EqualTo ( injectedInstances [ 0 ] ) ) ;
222+ Assert . That ( instance . InjectedObjects [ 1 ] , Is . EqualTo ( injectedInstances [ 1 ] ) ) ;
223+ Assert . That ( instance . InjectedObjects [ 2 ] , Is . EqualTo ( injectedInstances [ 2 ] ) ) ;
224+ Assert . That ( instance . InjectedObjects [ 3 ] , Is . EqualTo ( injectedInstances [ 3 ] ) ) ;
225+ }
226+
227+ [ Test ]
228+ public async Task SingleArgsPrefabFactoryTest ( )
229+ {
230+ const string prefabGuid = "b1f3d745bc6e3624b852543a31febb12" ;
231+ var prefabPath = AssetDatabase . GUIDToAssetPath ( prefabGuid ) ;
232+ var prefab = AssetDatabase . LoadAssetAtPath < TestMonoBehaviour > ( prefabPath ) ;
233+
234+ var injectedInstance = new InjectedObject ( ) ;
235+
236+ container
237+ . BindPrefab < TestMonoBehaviour > ( prefab )
238+ . AsFactory < InjectedObject > ( ) ;
239+
240+ var factory = await container . ResolveAsync < Factory < InjectedObject , TestMonoBehaviour > > ( ) ;
241+ var instance = await factory . CreateAsync ( injectedInstance ) ;
242+ Assert . That ( instance . InjectedObjects [ 0 ] , Is . EqualTo ( injectedInstance ) ) ;
243+ Assert . That ( instance . InjectedObjects [ 1 ] , Is . Null ) ;
244+ Assert . That ( instance . InjectedObjects [ 2 ] , Is . Null ) ;
245+ Assert . That ( instance . InjectedObjects [ 3 ] , Is . Null ) ;
246+ }
247+
248+ [ Test ]
249+ public async Task MultiArgsPrefabFactoryTest ( )
250+ {
251+ const string prefabGuid = "b1f3d745bc6e3624b852543a31febb12" ;
252+ var prefabPath = AssetDatabase . GUIDToAssetPath ( prefabGuid ) ;
253+ var prefab = AssetDatabase . LoadAssetAtPath < TestMonoBehaviour > ( prefabPath ) ;
254+
255+ var injectedInstances = new [ ] { new InjectedObject ( ) , new InjectedObject ( ) , new InjectedObject ( ) , new InjectedObject ( ) } ;
256+
257+ container
258+ . BindPrefab < TestMonoBehaviour > ( prefab )
259+ . AsFactory < InjectedObject , InjectedObject , InjectedObject , InjectedObject > ( ) ;
260+
261+ var factory = await container . ResolveAsync < Factory < InjectedObject , InjectedObject , InjectedObject , InjectedObject , TestMonoBehaviour > > ( ) ;
262+ var instance = await factory . CreateAsync ( injectedInstances [ 0 ] , injectedInstances [ 1 ] , injectedInstances [ 2 ] , injectedInstances [ 3 ] ) ;
263+ Assert . That ( instance . InjectedObjects [ 0 ] , Is . EqualTo ( injectedInstances [ 0 ] ) ) ;
264+ Assert . That ( instance . InjectedObjects [ 1 ] , Is . EqualTo ( injectedInstances [ 1 ] ) ) ;
265+ Assert . That ( instance . InjectedObjects [ 2 ] , Is . EqualTo ( injectedInstances [ 2 ] ) ) ;
266+ Assert . That ( instance . InjectedObjects [ 3 ] , Is . EqualTo ( injectedInstances [ 3 ] ) ) ;
267+ }
268+
269+ [ Test ]
270+ public async Task MixedArgsPrefabFactoryTest ( )
271+ {
272+ const string prefabGuid = "b1f3d745bc6e3624b852543a31febb12" ;
273+ var prefabPath = AssetDatabase . GUIDToAssetPath ( prefabGuid ) ;
274+ var prefab = AssetDatabase . LoadAssetAtPath < TestMonoBehaviour > ( prefabPath ) ;
275+
276+ var injectedInstances = new [ ] { new InjectedObject ( ) , new InjectedObject ( ) , new InjectedObject ( ) , new InjectedObject ( ) } ;
277+
278+ container
279+ . BindPrefab < TestMonoBehaviour > ( prefab )
280+ . Args ( injectedInstances [ 0 ] )
281+ . AsFactory < InjectedObject , InjectedObject , InjectedObject > ( ) ;
282+
283+ var factory = await container . ResolveAsync < Factory < InjectedObject , InjectedObject , InjectedObject , TestMonoBehaviour > > ( ) ;
284+ var instance = await factory . CreateAsync ( injectedInstances [ 1 ] , injectedInstances [ 2 ] , injectedInstances [ 3 ] ) ;
285+ Assert . That ( instance . InjectedObjects [ 0 ] , Is . EqualTo ( injectedInstances [ 0 ] ) ) ;
286+ Assert . That ( instance . InjectedObjects [ 1 ] , Is . EqualTo ( injectedInstances [ 1 ] ) ) ;
287+ Assert . That ( instance . InjectedObjects [ 2 ] , Is . EqualTo ( injectedInstances [ 2 ] ) ) ;
288+ Assert . That ( instance . InjectedObjects [ 3 ] , Is . EqualTo ( injectedInstances [ 3 ] ) ) ;
201289 }
202290
203291 [ TestCase ( 9 ) ]
0 commit comments