#[cfg(test)]
mod tests {
use crate::plugins::collisions::Collisions;
use crate::plugins::scene_tree::Groups;
use crate::plugins::transforms::{
GodotTransformConfig, TransformSyncMetadata, TransformSyncMode,
};
use bevy::reflect::{Reflect, ReflectRef, TypeRegistry};
#[test]
fn test_collisions_reflection() {
let mut registry = TypeRegistry::default();
registry.register::<Collisions>();
assert!(
registry
.get_type_info(std::any::TypeId::of::<Collisions>())
.is_some()
);
let collisions = Collisions::default();
let reflected = collisions.as_reflect();
let type_info = reflected.get_represented_type_info().unwrap();
assert!(type_info.type_path().contains("Collisions"));
if let ReflectRef::Struct(struct_ref) = reflected.reflect_ref() {
assert_eq!(struct_ref.field_len(), 2);
assert!(struct_ref.field("colliding_entities").is_some());
assert!(struct_ref.field("recent_collisions").is_some());
} else {
panic!("Expected Struct reflection");
}
let _cloned = reflected.reflect_clone();
}
#[test]
fn test_groups_reflection() {
let mut registry = TypeRegistry::default();
registry.register::<Groups>();
assert!(
registry
.get_type_info(std::any::TypeId::of::<Groups>())
.is_some()
);
}
#[test]
fn test_transform_config_reflection() {
let mut registry = TypeRegistry::default();
registry.register::<GodotTransformConfig>();
registry.register::<TransformSyncMode>();
assert!(
registry
.get_type_info(std::any::TypeId::of::<GodotTransformConfig>())
.is_some()
);
assert!(
registry
.get_type_info(std::any::TypeId::of::<TransformSyncMode>())
.is_some()
);
let config = GodotTransformConfig::default();
let reflected = config.as_reflect();
let type_info = reflected.get_represented_type_info().unwrap();
assert!(type_info.type_path().contains("GodotTransformConfig"));
if let ReflectRef::Struct(struct_ref) = reflected.reflect_ref() {
assert!(struct_ref.field("sync_mode").is_some());
} else {
panic!("Expected Struct reflection");
}
let mode = TransformSyncMode::TwoWay;
let mode_reflected = mode.as_reflect();
let mode_info = mode_reflected.get_represented_type_info().unwrap();
assert!(mode_info.type_path().contains("TransformSyncMode"));
}
#[test]
fn test_scene_tree_config_reflection() {
use crate::plugins::scene_tree::SceneTreeConfig;
let mut registry = TypeRegistry::default();
registry.register::<SceneTreeConfig>();
assert!(
registry
.get_type_info(std::any::TypeId::of::<SceneTreeConfig>())
.is_some()
);
let config = SceneTreeConfig {
add_child_relationship: false,
};
let reflected = config.as_reflect();
let type_info = reflected.get_represented_type_info().unwrap();
assert!(type_info.type_path().contains("SceneTreeConfig"));
if let ReflectRef::Struct(struct_ref) = reflected.reflect_ref() {
assert!(struct_ref.field("add_child_relationship").is_some());
} else {
panic!("Expected Struct reflection");
}
}
#[test]
fn test_transform_sync_metadata_reflection() {
let mut registry = TypeRegistry::default();
registry.register::<TransformSyncMetadata>();
assert!(
registry
.get_type_info(std::any::TypeId::of::<TransformSyncMetadata>())
.is_some()
);
let metadata = TransformSyncMetadata::default();
let reflected = metadata.as_reflect();
let type_info = reflected.get_represented_type_info().unwrap();
assert!(type_info.type_path().contains("TransformSyncMetadata"));
if let ReflectRef::Struct(struct_ref) = reflected.reflect_ref() {
assert_eq!(struct_ref.field_len(), 0);
assert!(struct_ref.field("last_sync_tick").is_none());
} else {
panic!("Expected Struct reflection");
}
}
}