use super::properties::PropertyAssignment;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SemanticBinding {
pub trait_tags: Vec<String>,
pub signal_tags: Vec<String>,
pub receiver_tags: Vec<String>,
pub property_defaults: Vec<PropertyAssignment>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn semantic_binding_default() {
let sb = SemanticBinding::default();
assert!(sb.trait_tags.is_empty());
}
#[test]
fn semantic_binding_serde() {
let sb = SemanticBinding {
trait_tags: vec!["isDebris".into(), "isStone".into()],
signal_tags: vec!["signal.fractured".into()],
receiver_tags: vec!["receive.force".into()],
property_defaults: vec![],
};
let json = serde_json::to_string(&sb).unwrap();
let restored: SemanticBinding = serde_json::from_str(&json).unwrap();
assert_eq!(restored.trait_tags.len(), 2);
}
}