zerodds_types/dynamic/
factory.rs1use super::data::DynamicData;
6use super::error::DynamicError;
7use super::type_::DynamicType;
8
9pub struct DynamicDataFactory;
15
16impl DynamicDataFactory {
17 pub fn create_data(type_: &DynamicType) -> Result<DynamicData, DynamicError> {
22 type_.is_consistent()?;
23 Ok(DynamicData::new(type_.clone()))
24 }
25
26 pub fn delete_data(_data: DynamicData) {
28 }
30}
31
32#[cfg(test)]
33#[allow(clippy::unwrap_used)]
34mod tests {
35 use super::*;
36 use crate::dynamic::DynamicTypeBuilderFactory;
37 use crate::dynamic::descriptor::{TypeDescriptor, TypeKind};
38
39 #[test]
40 fn factory_create_data_returns_empty_instance() {
41 let mut b = DynamicTypeBuilderFactory::create_struct("::S");
42 b.add_struct_member("x", 1, TypeDescriptor::primitive(TypeKind::Int32, "int32"))
43 .unwrap();
44 let t = b.build().unwrap();
45 let d = DynamicDataFactory::create_data(&t).unwrap();
46 assert_eq!(d.item_count(), 0);
47 assert_eq!(d.dynamic_type().name(), "::S");
48 }
49
50 #[test]
51 fn factory_delete_data_is_noop() {
52 let t = DynamicTypeBuilderFactory::get_primitive_type(TypeKind::Int32).unwrap();
53 let d = DynamicDataFactory::create_data(&t).unwrap();
54 DynamicDataFactory::delete_data(d);
55 }
56}