Skip to content

Commit f4e2b35

Browse files
committed
fixed bevy_scene tests
1 parent 94c3e1b commit f4e2b35

File tree

5 files changed

+68
-18
lines changed

5 files changed

+68
-18
lines changed

crates/bevy_app/src/app.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1488,7 +1488,7 @@ mod tests {
14881488
event::{BufferedEvent, Event, EventWriter, Events},
14891489
lifecycle::RemovedComponents,
14901490
query::With,
1491-
resource::{IsResource, Resource},
1491+
resource::Resource,
14921492
schedule::{IntoScheduleConfigs, ScheduleLabel},
14931493
system::{Commands, Query},
14941494
world::{FromWorld, World},

crates/bevy_ecs/src/resource.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
//! Resources are unique, singleton-like data types that can be accessed from systems and stored in the [`World`](crate::world::World).
22
33
use crate::prelude::Component;
4+
use crate::prelude::ReflectComponent;
5+
use bevy_reflect::prelude::ReflectDefault;
6+
use bevy_reflect::Reflect;
47
// The derive macro for the `Resource` trait
58
pub use bevy_ecs_macros::Resource;
69
use core::marker::PhantomData;
@@ -88,7 +91,8 @@ pub trait Resource: Send + Sync + 'static {}
8891
/// adding this component to an entity (or spawning an entity with this component) will despawn any other entity with this component.
8992
#[derive(Component, Debug)]
9093
#[require(IsResource)]
91-
pub struct ResourceEntity<R: Resource>(PhantomData<R>);
94+
#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(Component, Default))]
95+
pub struct ResourceEntity<R: Resource>(#[reflect(ignore)] PhantomData<R>);
9296

9397
impl<R: Resource> Default for ResourceEntity<R> {
9498
fn default() -> Self {
@@ -100,6 +104,11 @@ impl<R: Resource> Default for ResourceEntity<R> {
100104
///
101105
/// By contrast, the [`ResourceEntity<R>`] component is used to find the entity that stores a particular resource.
102106
/// This component is required by the [`ResourceEntity<R>`] component, and will automatically be added.
107+
#[cfg_attr(
108+
feature = "bevy_reflect",
109+
derive(Reflect),
110+
reflect(Component, Default, Debug)
111+
)]
103112
#[derive(Component, Default, Debug)]
104113
pub struct IsResource;
105114

crates/bevy_scene/src/lib.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,13 @@ pub mod prelude {
4949
use bevy_app::prelude::*;
5050

5151
#[cfg(feature = "serialize")]
52-
use {bevy_asset::AssetApp, bevy_ecs::schedule::IntoScheduleConfigs};
52+
use {
53+
bevy_asset::AssetApp,
54+
bevy_ecs::schedule::IntoScheduleConfigs,
55+
bevy_ecs::{
56+
entity_disabling::DefaultQueryFilters, resource::IsResource, resource::ResourceEntity,
57+
},
58+
};
5359

5460
/// Plugin that provides scene functionality to an [`App`].
5561
#[derive(Default)]
@@ -64,6 +70,8 @@ impl Plugin for ScenePlugin {
6470
.init_resource::<SceneSpawner>()
6571
.register_type::<SceneRoot>()
6672
.register_type::<DynamicSceneRoot>()
73+
.register_type::<IsResource>()
74+
.register_type::<ResourceEntity<DefaultQueryFilters>>()
6775
.add_systems(SpawnScene, (scene_spawner, scene_spawner_system).chain());
6876

6977
// Register component hooks for DynamicSceneRoot

crates/bevy_scene/src/scene_spawner.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ mod tests {
609609
assert_eq!(scene_component_a.y, 4.0);
610610
assert_eq!(
611611
app.world().entity(entity).get::<Children>().unwrap().len(),
612-
1
612+
3 // two resources-as-entities are also counted
613613
);
614614

615615
// let's try to delete the scene

crates/bevy_scene/src/serde.rs

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -516,9 +516,11 @@ mod tests {
516516
};
517517
use bevy_ecs::{
518518
entity::{Entity, EntityHashMap},
519+
entity_disabling::DefaultQueryFilters,
519520
prelude::{Component, ReflectComponent, ReflectResource, Resource, World},
520521
query::{With, Without},
521522
reflect::AppTypeRegistry,
523+
resource::{IsResource, ResourceEntity},
522524
world::FromWorld,
523525
};
524526
use bevy_reflect::{Reflect, ReflectDeserialize, ReflectSerialize};
@@ -611,6 +613,8 @@ mod tests {
611613
registry.register::<MyEntityRef>();
612614
registry.register::<Entity>();
613615
registry.register::<MyResource>();
616+
registry.register::<IsResource>();
617+
registry.register::<ResourceEntity<DefaultQueryFilters>>();
614618
}
615619
world.insert_resource(registry);
616620
world
@@ -638,20 +642,20 @@ mod tests {
638642
),
639643
},
640644
entities: {
641-
4294967293: (
645+
4294967291: (
642646
components: {
643647
"bevy_scene::serde::tests::Bar": (345),
644648
"bevy_scene::serde::tests::Baz": (789),
645649
"bevy_scene::serde::tests::Foo": (123),
646650
},
647651
),
648-
4294967294: (
652+
4294967292: (
649653
components: {
650654
"bevy_scene::serde::tests::Bar": (345),
651655
"bevy_scene::serde::tests::Foo": (123),
652656
},
653657
),
654-
4294967295: (
658+
4294967293: (
655659
components: {
656660
"bevy_scene::serde::tests::Foo": (123),
657661
},
@@ -757,7 +761,7 @@ mod tests {
757761
.write_to_world(&mut dst_world, &mut map)
758762
.unwrap();
759763

760-
assert_eq!(2, deserialized_scene.entities.len());
764+
assert_eq!(4, deserialized_scene.entities.len());
761765
assert_scene_eq(&scene, &deserialized_scene);
762766

763767
let bar_to_foo = dst_world
@@ -785,7 +789,7 @@ mod tests {
785789

786790
let (scene, deserialized_scene) = roundtrip_ron(&world);
787791

788-
assert_eq!(1, deserialized_scene.entities.len());
792+
assert_eq!(3, deserialized_scene.entities.len());
789793
assert_scene_eq(&scene, &deserialized_scene);
790794

791795
let mut world = create_world();
@@ -815,10 +819,19 @@ mod tests {
815819

816820
assert_eq!(
817821
vec![
818-
0, 1, 255, 255, 255, 255, 15, 1, 37, 98, 101, 118, 121, 95, 115, 99, 101, 110, 101,
822+
0, 3, 253, 255, 255, 255, 15, 1, 37, 98, 101, 118, 121, 95, 115, 99, 101, 110, 101,
819823
58, 58, 115, 101, 114, 100, 101, 58, 58, 116, 101, 115, 116, 115, 58, 58, 77, 121,
820824
67, 111, 109, 112, 111, 110, 101, 110, 116, 1, 2, 3, 102, 102, 166, 63, 205, 204,
821-
108, 64, 1, 12, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33
825+
108, 64, 1, 12, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 254, 255,
826+
255, 255, 15, 1, 30, 98, 101, 118, 121, 95, 101, 99, 115, 58, 58, 114, 101, 115,
827+
111, 117, 114, 99, 101, 58, 58, 73, 115, 82, 101, 115, 111, 117, 114, 99, 101, 255,
828+
255, 255, 255, 15, 2, 30, 98, 101, 118, 121, 95, 101, 99, 115, 58, 58, 114, 101,
829+
115, 111, 117, 114, 99, 101, 58, 58, 73, 115, 82, 101, 115, 111, 117, 114, 99, 101,
830+
83, 98, 101, 118, 121, 95, 101, 99, 115, 58, 58, 114, 101, 115, 111, 117, 114, 99,
831+
101, 58, 58, 82, 101, 115, 111, 117, 114, 99, 101, 69, 110, 116, 105, 116, 121, 60,
832+
98, 101, 118, 121, 95, 101, 99, 115, 58, 58, 101, 110, 116, 105, 116, 121, 95, 100,
833+
105, 115, 97, 98, 108, 105, 110, 103, 58, 58, 68, 101, 102, 97, 117, 108, 116, 81,
834+
117, 101, 114, 121, 70, 105, 108, 116, 101, 114, 115, 62
822835
],
823836
serialized_scene
824837
);
@@ -830,7 +843,7 @@ mod tests {
830843
.deserialize(&mut postcard::Deserializer::from_bytes(&serialized_scene))
831844
.unwrap();
832845

833-
assert_eq!(1, deserialized_scene.entities.len());
846+
assert_eq!(3, deserialized_scene.entities.len());
834847
assert_scene_eq(&scene, &deserialized_scene);
835848
}
836849

@@ -856,11 +869,21 @@ mod tests {
856869

857870
assert_eq!(
858871
vec![
859-
146, 128, 129, 206, 255, 255, 255, 255, 145, 129, 217, 37, 98, 101, 118, 121, 95,
872+
146, 128, 131, 206, 255, 255, 255, 253, 145, 129, 217, 37, 98, 101, 118, 121, 95,
860873
115, 99, 101, 110, 101, 58, 58, 115, 101, 114, 100, 101, 58, 58, 116, 101, 115,
861874
116, 115, 58, 58, 77, 121, 67, 111, 109, 112, 111, 110, 101, 110, 116, 147, 147, 1,
862875
2, 3, 146, 202, 63, 166, 102, 102, 202, 64, 108, 204, 205, 129, 165, 84, 117, 112,
863-
108, 101, 172, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33
876+
108, 101, 172, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 206, 255,
877+
255, 255, 254, 145, 129, 190, 98, 101, 118, 121, 95, 101, 99, 115, 58, 58, 114,
878+
101, 115, 111, 117, 114, 99, 101, 58, 58, 73, 115, 82, 101, 115, 111, 117, 114, 99,
879+
101, 144, 206, 255, 255, 255, 255, 145, 130, 190, 98, 101, 118, 121, 95, 101, 99,
880+
115, 58, 58, 114, 101, 115, 111, 117, 114, 99, 101, 58, 58, 73, 115, 82, 101, 115,
881+
111, 117, 114, 99, 101, 144, 217, 83, 98, 101, 118, 121, 95, 101, 99, 115, 58, 58,
882+
114, 101, 115, 111, 117, 114, 99, 101, 58, 58, 82, 101, 115, 111, 117, 114, 99,
883+
101, 69, 110, 116, 105, 116, 121, 60, 98, 101, 118, 121, 95, 101, 99, 115, 58, 58,
884+
101, 110, 116, 105, 116, 121, 95, 100, 105, 115, 97, 98, 108, 105, 110, 103, 58,
885+
58, 68, 101, 102, 97, 117, 108, 116, 81, 117, 101, 114, 121, 70, 105, 108, 116,
886+
101, 114, 115, 62, 144
864887
],
865888
buf
866889
);
@@ -874,7 +897,7 @@ mod tests {
874897
.deserialize(&mut rmp_serde::Deserializer::new(&mut reader))
875898
.unwrap();
876899

877-
assert_eq!(1, deserialized_scene.entities.len());
900+
assert_eq!(3, deserialized_scene.entities.len());
878901
assert_scene_eq(&scene, &deserialized_scene);
879902
}
880903

@@ -899,13 +922,23 @@ mod tests {
899922

900923
assert_eq!(
901924
vec![
902-
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 1,
925+
0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 253, 255, 255, 255, 0, 0, 0, 0, 1,
903926
0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 98, 101, 118, 121, 95, 115, 99, 101,
904927
110, 101, 58, 58, 115, 101, 114, 100, 101, 58, 58, 116, 101, 115, 116, 115, 58, 58,
905928
77, 121, 67, 111, 109, 112, 111, 110, 101, 110, 116, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0,
906929
0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 102, 102, 166, 63, 205, 204, 108, 64, 1,
907930
0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108,
908-
100, 33
931+
100, 33, 254, 255, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0,
932+
0, 0, 98, 101, 118, 121, 95, 101, 99, 115, 58, 58, 114, 101, 115, 111, 117, 114,
933+
99, 101, 58, 58, 73, 115, 82, 101, 115, 111, 117, 114, 99, 101, 255, 255, 255, 255,
934+
0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 98, 101, 118, 121, 95,
935+
101, 99, 115, 58, 58, 114, 101, 115, 111, 117, 114, 99, 101, 58, 58, 73, 115, 82,
936+
101, 115, 111, 117, 114, 99, 101, 83, 0, 0, 0, 0, 0, 0, 0, 98, 101, 118, 121, 95,
937+
101, 99, 115, 58, 58, 114, 101, 115, 111, 117, 114, 99, 101, 58, 58, 82, 101, 115,
938+
111, 117, 114, 99, 101, 69, 110, 116, 105, 116, 121, 60, 98, 101, 118, 121, 95,
939+
101, 99, 115, 58, 58, 101, 110, 116, 105, 116, 121, 95, 100, 105, 115, 97, 98, 108,
940+
105, 110, 103, 58, 58, 68, 101, 102, 97, 117, 108, 116, 81, 117, 101, 114, 121, 70,
941+
105, 108, 116, 101, 114, 115, 62
909942
],
910943
serialized_scene
911944
);
@@ -918,7 +951,7 @@ mod tests {
918951
bincode::serde::seed_decode_from_slice(scene_deserializer, &serialized_scene, config)
919952
.unwrap();
920953

921-
assert_eq!(1, deserialized_scene.entities.len());
954+
assert_eq!(3, deserialized_scene.entities.len());
922955
assert_scene_eq(&scene, &deserialized_scene);
923956
}
924957

0 commit comments

Comments
 (0)