use gvas::cursor_ext::ReadExt;
use gvas::properties::{name_property::NameProperty, PropertyOptions, PropertyTrait};
use gvas::types::map::HashableIndexMap;
use std::collections::HashMap;
use std::io::Cursor;
#[test]
fn name_property_with_array_index() {
let data = vec![
0x0d, 0x00, 0x00, 0x00, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
0x79, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
0x51, 0x55, 0x39, 0x31, 0x5f, 0x49, 0x6e, 0x76, 0x65, 0x73, 0x74, 0x69, 0x67, 0x61, 0x74,
0x65, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x42, 0x32, 0x00,
];
let mut cursor = Cursor::new(data);
let property_type = cursor.read_fstring().expect("Failed to read property type");
assert_eq!(Some(String::from("NameProperty")), property_type);
let prop = NameProperty::read(&mut cursor, true).expect("Failed to read NameProperty");
assert_eq!(
NameProperty {
array_index: 1,
value: Some("QU91_InvestigateTower_B2".into()),
},
prop
);
let mut options = PropertyOptions {
hints: &HashMap::new(),
properties_stack: &mut Vec::new(),
custom_versions: &HashableIndexMap::new(),
};
let mut writer = Cursor::new(Vec::new());
prop.write(&mut writer, true, &mut options)
.expect("Failed to serialize gvas file");
assert_eq!(cursor.get_ref(), writer.get_ref());
}