Files
space-game/engine/prefabs/src/tests.rs
Amatsugu 2616e32674
Some checks failed
CI / Tests (push) Successful in 4m6s
CI / Bevy lints (push) Failing after 4m50s
CI / Clippy lints (push) Failing after 14m16s
WIP loading meshes for prefabs
2025-07-22 22:57:49 -04:00

54 lines
1.2 KiB
Rust

use bevy::prelude::*;
use serde::{Deserialize, Serialize};
use crate::prefab::{ComponentBuilder, PrefabAsset};
#[derive(Component, Serialize, Deserialize, Clone)]
struct Name {
pub name: String,
}
#[typetag::serde]
impl ComponentBuilder for Name {
fn build(&self, _entity: &mut EntityCommands, _: &AssetServer) {
assert_eq!(self.name, "Test".to_string(), "Name");
}
}
#[derive(Component, Serialize, Deserialize, Clone)]
struct Position {
pub pos: Vec3,
}
#[typetag::serde]
impl ComponentBuilder for Position {
fn build(&self, _entity: &mut EntityCommands, _: &AssetServer) {
assert_eq!(self.pos, Vec3::X, "Position");
}
}
#[test]
fn round_trip_test() {
let prefab = PrefabAsset {
components: vec![
Box::new(Position { pos: Vec3::X }),
Box::new(Name {
name: "Test".to_string(),
}),
],
..default()
};
let serialized = ron::to_string(&prefab);
assert!(serialized.is_ok(), "Failed to serialzied");
let deserialize = ron::from_str::<PrefabAsset>(&serialized.unwrap());
assert!(deserialize.is_ok(), "Failed to deserialize");
let loaded_asset = deserialize.unwrap();
assert_eq!(
loaded_asset.components.len(),
prefab.components.len(),
"Prefab's components count do not match"
);
}