@@ -226,15 +226,15 @@ mod tests {
226
226
let child1 = child1. expect ( "child1 should exist" ) ;
227
227
let child2 = child2. expect ( "child2 should exist" ) ;
228
228
let child3 = child3. expect ( "child3 should exist" ) ;
229
- let expected_children: SmallVec < [ Entity ; 8 ] > = smallvec ! [ child1, child2, child3] ;
229
+ let expected_children = vec ! [ child1, child2, child3] ;
230
230
231
231
assert_eq ! (
232
232
world
233
233
. get:: <Children >( parent)
234
234
. unwrap( )
235
235
. iter( )
236
- . cloned ( )
237
- . collect:: <SmallVec < [ Entity ; 8 ] >>( ) ,
236
+ . copied ( )
237
+ . collect:: <Vec <_ >>( ) ,
238
238
expected_children
239
239
) ;
240
240
assert_eq ! ( * world. get:: <Parent >( child1) . unwrap( ) , Parent ( parent) ) ;
@@ -250,110 +250,117 @@ mod tests {
250
250
) ;
251
251
}
252
252
253
- #[ test]
254
- fn push_and_insert_children ( ) {
253
+ fn setup ( ) -> ( World , Resources , Commands , Vec < Entity > , Entity ) {
255
254
let mut world = World :: default ( ) ;
256
- let mut resources = Resources :: default ( ) ;
257
- let mut commands = Commands :: default ( ) ;
255
+ let resources = Resources :: default ( ) ;
256
+ let commands = Commands :: default ( ) ;
258
257
let entities = world
259
- . spawn_batch ( vec ! [ ( 1 , ) , ( 2 , ) , ( 3 , ) , ( 4 , ) , ( 5 , ) ] )
258
+ . spawn_batch ( vec ! [ ( 0 , ) , ( 1 , ) , ( 2 , ) , ( 3 , ) , ( 4 , ) ] )
260
259
. collect :: < Vec < Entity > > ( ) ;
260
+ let parent = entities[ 0 ] ;
261
+ ( world, resources, commands, entities, parent)
262
+ }
261
263
262
- commands. push_children ( entities[ 0 ] , & entities[ 1 ..3 ] ) ;
264
+ #[ test]
265
+ fn push_children_adds_parent_component ( ) {
266
+ let ( mut world, mut resources, mut commands, child, parent) = setup ( ) ;
267
+ commands. push_children ( parent, & child[ 1 ..=2 ] ) ;
263
268
commands. apply ( & mut world, & mut resources) ;
269
+ assert_eq ! ( world. get:: <Parent >( child[ 2 ] ) . unwrap( ) , & Parent ( parent) ) ;
270
+ }
264
271
265
- let parent = entities[ 0 ] ;
266
- let child1 = entities[ 1 ] ;
267
- let child2 = entities[ 2 ] ;
268
- let child3 = entities[ 3 ] ;
269
- let child4 = entities[ 4 ] ;
270
-
271
- let expected_children: SmallVec < [ Entity ; 8 ] > = smallvec ! [ child1, child2] ;
272
+ #[ test]
273
+ fn push_children_adds_previous_parent_component ( ) {
274
+ let ( mut world, mut resources, mut commands, child, parent) = setup ( ) ;
275
+ commands. push_children ( parent, & child[ 1 ..=2 ] ) ;
276
+ commands. apply ( & mut world, & mut resources) ;
272
277
assert_eq ! (
273
- world
274
- . get:: <Children >( parent)
275
- . unwrap( )
276
- . iter( )
277
- . cloned( )
278
- . collect:: <SmallVec <[ Entity ; 8 ] >>( ) ,
279
- expected_children
278
+ world. get:: <PreviousParent >( child[ 2 ] ) . unwrap( ) ,
279
+ & PreviousParent ( parent)
280
280
) ;
281
- assert_eq ! ( * world. get:: <Parent >( child1) . unwrap( ) , Parent ( parent) ) ;
282
- assert_eq ! ( * world. get:: <Parent >( child2) . unwrap( ) , Parent ( parent) ) ;
281
+ }
283
282
283
+ #[ test]
284
+ fn push_children_adds_children_component ( ) {
285
+ let ( mut world, mut resources, mut commands, child, parent) = setup ( ) ;
286
+ commands. push_children ( parent, & child[ 1 ..=2 ] ) ;
287
+ commands. apply ( & mut world, & mut resources) ;
284
288
assert_eq ! (
285
- * world. get:: <PreviousParent > ( child1 ) . unwrap( ) ,
286
- PreviousParent ( parent )
289
+ world. get:: <Children > ( parent ) . unwrap( ) ,
290
+ & Children :: with ( & child [ 1 ..= 2 ] )
287
291
) ;
292
+ }
293
+
294
+ #[ test]
295
+ fn push_children_keeps_children_unique ( ) {
296
+ let ( mut world, mut resources, mut commands, child, parent) = setup ( ) ;
297
+ commands. push_children ( parent, & child[ 1 ..=2 ] ) ;
298
+ commands. apply ( & mut world, & mut resources) ;
299
+ commands. push_children ( parent, & child[ 1 ..=2 ] ) ;
300
+ commands. apply ( & mut world, & mut resources) ;
288
301
assert_eq ! (
289
- * world. get:: <PreviousParent > ( child2 ) . unwrap( ) ,
290
- PreviousParent ( parent )
302
+ world. get:: <Children > ( parent ) . unwrap( ) ,
303
+ & Children :: with ( & child [ 1 ..= 2 ] )
291
304
) ;
305
+ }
292
306
293
- commands. insert_children ( parent, 1 , & entities[ 3 ..] ) ;
307
+ #[ test]
308
+ fn insert_children_adds_parent_component ( ) {
309
+ let ( mut world, mut resources, mut commands, child, parent) = setup ( ) ;
310
+ commands. insert_children ( parent, 0 , & child[ 1 ..=2 ] ) ;
294
311
commands. apply ( & mut world, & mut resources) ;
312
+ assert_eq ! ( world. get:: <Parent >( child[ 2 ] ) . unwrap( ) , & Parent ( parent) ) ;
313
+ }
295
314
296
- let expected_children: SmallVec < [ Entity ; 8 ] > = smallvec ! [ child1, child3, child4, child2] ;
315
+ #[ test]
316
+ fn insert_children_adds_previous_parent_component ( ) {
317
+ let ( mut world, mut resources, mut commands, child, parent) = setup ( ) ;
318
+ commands. insert_children ( parent, 0 , & child[ 1 ..=2 ] ) ;
319
+ commands. apply ( & mut world, & mut resources) ;
297
320
assert_eq ! (
298
- world
299
- . get:: <Children >( parent)
300
- . unwrap( )
301
- . iter( )
302
- . cloned( )
303
- . collect:: <SmallVec <[ Entity ; 8 ] >>( ) ,
304
- expected_children
321
+ world. get:: <PreviousParent >( child[ 2 ] ) . unwrap( ) ,
322
+ & PreviousParent ( parent)
305
323
) ;
306
- assert_eq ! ( * world. get:: <Parent >( child3) . unwrap( ) , Parent ( parent) ) ;
307
- assert_eq ! ( * world. get:: <Parent >( child4) . unwrap( ) , Parent ( parent) ) ;
324
+ }
325
+
326
+ #[ test]
327
+ fn insert_children_adds_children_component ( ) {
328
+ let ( mut world, mut resources, mut commands, child, parent) = setup ( ) ;
329
+ commands. insert_children ( parent, 0 , & child[ 1 ..=2 ] ) ;
330
+ commands. apply ( & mut world, & mut resources) ;
308
331
assert_eq ! (
309
- * world. get:: <PreviousParent > ( child3 ) . unwrap( ) ,
310
- PreviousParent ( parent )
332
+ world. get:: <Children > ( parent ) . unwrap( ) ,
333
+ & Children :: with ( & child [ 1 ..= 2 ] )
311
334
) ;
335
+ }
336
+
337
+ #[ test]
338
+ fn insert_children_keeps_children_unique ( ) {
339
+ let ( mut world, mut resources, mut commands, child, parent) = setup ( ) ;
340
+ commands. insert_children ( parent, 0 , & child[ 1 ..=2 ] ) ;
341
+ commands. apply ( & mut world, & mut resources) ;
342
+ commands. insert_children ( parent, 1 , & child[ 1 ..=2 ] ) ;
343
+ commands. apply ( & mut world, & mut resources) ;
312
344
assert_eq ! (
313
- * world. get:: <PreviousParent > ( child4 ) . unwrap( ) ,
314
- PreviousParent ( parent )
345
+ world. get:: <Children > ( parent ) . unwrap( ) ,
346
+ & Children :: with ( & child [ 1 ..= 2 ] )
315
347
) ;
316
348
}
317
349
318
350
#[ test]
319
- fn push_duplicate_children ( ) {
320
- let mut world = World :: default ( ) ;
321
- let mut resources = Resources :: default ( ) ;
322
- let mut commands = Commands :: default ( ) ;
323
- let entities = world
324
- . spawn_batch ( vec ! [ ( 1 , ) , ( 2 , ) , ( 3 , ) ] )
325
- . collect :: < Vec < Entity > > ( ) ;
326
-
327
- let parent = entities[ 0 ] ;
328
- let child1 = entities[ 1 ] ;
329
- let child2 = entities[ 2 ] ;
330
-
331
- commands. push_children ( parent, & [ child1, child1, child2, child1] ) ;
351
+ fn insert_children_keeps_children_order ( ) {
352
+ let ( mut world, mut resources, mut commands, child, parent) = setup ( ) ;
353
+ commands. insert_children ( parent, 0 , & child[ 1 ..=2 ] ) ;
332
354
commands. apply ( & mut world, & mut resources) ;
333
-
334
- let expected_children: SmallVec < [ Entity ; 8 ] > = smallvec ! [ child2, child1] ;
335
355
assert_eq ! (
336
- world
337
- . get:: <Children >( parent)
338
- . unwrap( )
339
- . iter( )
340
- . cloned( )
341
- . collect:: <SmallVec <[ Entity ; 8 ] >>( ) ,
342
- expected_children
356
+ world. get:: <Children >( parent) . unwrap( ) ,
357
+ & Children :: with( & [ child[ 1 ] , child[ 2 ] ] )
343
358
) ;
344
-
345
- commands. push_children ( parent, & [ child2] ) ;
359
+ commands. insert_children ( parent, 1 , & child[ 3 ..=4 ] ) ;
346
360
commands. apply ( & mut world, & mut resources) ;
347
-
348
- let expected_children: SmallVec < [ Entity ; 8 ] > = smallvec ! [ child1, child2] ;
349
361
assert_eq ! (
350
- world
351
- . get:: <Children >( parent)
352
- . unwrap( )
353
- . iter( )
354
- . cloned( )
355
- . collect:: <SmallVec <[ Entity ; 8 ] >>( ) ,
356
- expected_children
362
+ world. get:: <Children >( parent) . unwrap( ) ,
363
+ & Children :: with( & [ child[ 1 ] , child[ 3 ] , child[ 4 ] , child[ 2 ] ] )
357
364
) ;
358
365
}
359
366
}
0 commit comments