Skip to content

Commit c46f911

Browse files
committed
refactor: Also move tests to world::reflect
1 parent bb54563 commit c46f911

File tree

2 files changed

+91
-91
lines changed

2 files changed

+91
-91
lines changed

crates/bevy_ecs/src/world/mod.rs

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -3335,95 +3335,4 @@ mod tests {
33353335
])
33363336
.is_err());
33373337
}
3338-
3339-
#[cfg(all(test, feature = "bevy_reflect"))]
3340-
mod reflect_tests {
3341-
use std::any::TypeId;
3342-
3343-
use bevy_reflect::Reflect;
3344-
3345-
use crate::{
3346-
// For bevy_ecs_macros
3347-
self as bevy_ecs,
3348-
prelude::{AppTypeRegistry, Component, DetectChanges, World},
3349-
};
3350-
3351-
#[derive(Component, Reflect)]
3352-
struct RFoo(i32);
3353-
3354-
#[derive(Component)]
3355-
struct Bar;
3356-
3357-
#[test]
3358-
fn get_component_as_reflect() {
3359-
let mut world = World::new();
3360-
world.init_resource::<AppTypeRegistry>();
3361-
3362-
let app_type_registry = world.get_resource_mut::<AppTypeRegistry>().unwrap();
3363-
app_type_registry.write().register::<RFoo>();
3364-
3365-
{
3366-
let entity_with_rfoo = world.spawn(RFoo(42)).id();
3367-
let comp_reflect = world
3368-
.get_reflect(entity_with_rfoo, TypeId::of::<RFoo>())
3369-
.expect("Reflection of RFoo-component failed");
3370-
3371-
assert!(comp_reflect.is::<RFoo>());
3372-
}
3373-
3374-
{
3375-
let entity_without_rfoo = world.spawn_empty().id();
3376-
let reflect_opt = world.get_reflect(entity_without_rfoo, TypeId::of::<RFoo>());
3377-
3378-
assert!(reflect_opt.is_err());
3379-
}
3380-
3381-
{
3382-
let entity_with_bar = world.spawn(Bar).id();
3383-
let reflect_opt = world.get_reflect(entity_with_bar, TypeId::of::<Bar>());
3384-
3385-
assert!(reflect_opt.is_err());
3386-
}
3387-
}
3388-
3389-
#[test]
3390-
fn get_component_as_mut_reflect() {
3391-
let mut world = World::new();
3392-
world.init_resource::<AppTypeRegistry>();
3393-
3394-
let app_type_registry = world.get_resource_mut::<AppTypeRegistry>().unwrap();
3395-
app_type_registry.write().register::<RFoo>();
3396-
3397-
{
3398-
let entity_with_rfoo = world.spawn(RFoo(42)).id();
3399-
let mut comp_reflect = world
3400-
.get_reflect_mut(entity_with_rfoo, TypeId::of::<RFoo>())
3401-
.expect("Mutable reflection of RFoo-component failed");
3402-
3403-
let comp_rfoo_reflected = comp_reflect
3404-
.downcast_mut::<RFoo>()
3405-
.expect("Wrong type reflected (expected RFoo)");
3406-
assert_eq!(comp_rfoo_reflected.0, 42);
3407-
comp_rfoo_reflected.0 = 1337;
3408-
3409-
let rfoo_ref = world.entity(entity_with_rfoo).get_ref::<RFoo>().unwrap();
3410-
assert!(rfoo_ref.is_changed());
3411-
assert_eq!(rfoo_ref.0, 1337);
3412-
}
3413-
3414-
{
3415-
let entity_without_rfoo = world.spawn_empty().id();
3416-
let reflect_opt = world.get_reflect_mut(entity_without_rfoo, TypeId::of::<RFoo>());
3417-
3418-
assert!(reflect_opt.is_err());
3419-
}
3420-
3421-
{
3422-
let entity_with_bar = world.spawn(Bar).id();
3423-
let reflect_opt = world.get_reflect_mut(entity_with_bar, TypeId::of::<Bar>());
3424-
3425-
assert!(reflect_opt.is_err());
3426-
}
3427-
}
3428-
}
34293338
}

crates/bevy_ecs/src/world/reflect.rs

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,3 +251,94 @@ pub enum GetComponentReflectError {
251251
#[error("The `World`'s `TypeRegistry` did not contain `TypeData` for `ReflectFromPtr` for the given {0:?} (did you call `App::register_type()`?)")]
252252
MissingReflectFromPtrTypeData(TypeId),
253253
}
254+
255+
#[cfg(test)]
256+
mod tests {
257+
use std::any::TypeId;
258+
259+
use bevy_reflect::Reflect;
260+
261+
use crate::{
262+
// For bevy_ecs_macros
263+
self as bevy_ecs,
264+
prelude::{AppTypeRegistry, Component, DetectChanges, World},
265+
};
266+
267+
#[derive(Component, Reflect)]
268+
struct RFoo(i32);
269+
270+
#[derive(Component)]
271+
struct Bar;
272+
273+
#[test]
274+
fn get_component_as_reflect() {
275+
let mut world = World::new();
276+
world.init_resource::<AppTypeRegistry>();
277+
278+
let app_type_registry = world.get_resource_mut::<AppTypeRegistry>().unwrap();
279+
app_type_registry.write().register::<RFoo>();
280+
281+
{
282+
let entity_with_rfoo = world.spawn(RFoo(42)).id();
283+
let comp_reflect = world
284+
.get_reflect(entity_with_rfoo, TypeId::of::<RFoo>())
285+
.expect("Reflection of RFoo-component failed");
286+
287+
assert!(comp_reflect.is::<RFoo>());
288+
}
289+
290+
{
291+
let entity_without_rfoo = world.spawn_empty().id();
292+
let reflect_opt = world.get_reflect(entity_without_rfoo, TypeId::of::<RFoo>());
293+
294+
assert!(reflect_opt.is_err());
295+
}
296+
297+
{
298+
let entity_with_bar = world.spawn(Bar).id();
299+
let reflect_opt = world.get_reflect(entity_with_bar, TypeId::of::<Bar>());
300+
301+
assert!(reflect_opt.is_err());
302+
}
303+
}
304+
305+
#[test]
306+
fn get_component_as_mut_reflect() {
307+
let mut world = World::new();
308+
world.init_resource::<AppTypeRegistry>();
309+
310+
let app_type_registry = world.get_resource_mut::<AppTypeRegistry>().unwrap();
311+
app_type_registry.write().register::<RFoo>();
312+
313+
{
314+
let entity_with_rfoo = world.spawn(RFoo(42)).id();
315+
let mut comp_reflect = world
316+
.get_reflect_mut(entity_with_rfoo, TypeId::of::<RFoo>())
317+
.expect("Mutable reflection of RFoo-component failed");
318+
319+
let comp_rfoo_reflected = comp_reflect
320+
.downcast_mut::<RFoo>()
321+
.expect("Wrong type reflected (expected RFoo)");
322+
assert_eq!(comp_rfoo_reflected.0, 42);
323+
comp_rfoo_reflected.0 = 1337;
324+
325+
let rfoo_ref = world.entity(entity_with_rfoo).get_ref::<RFoo>().unwrap();
326+
assert!(rfoo_ref.is_changed());
327+
assert_eq!(rfoo_ref.0, 1337);
328+
}
329+
330+
{
331+
let entity_without_rfoo = world.spawn_empty().id();
332+
let reflect_opt = world.get_reflect_mut(entity_without_rfoo, TypeId::of::<RFoo>());
333+
334+
assert!(reflect_opt.is_err());
335+
}
336+
337+
{
338+
let entity_with_bar = world.spawn(Bar).id();
339+
let reflect_opt = world.get_reflect_mut(entity_with_bar, TypeId::of::<Bar>());
340+
341+
assert!(reflect_opt.is_err());
342+
}
343+
}
344+
}

0 commit comments

Comments
 (0)