146 lines
3.9 KiB
Rust
146 lines
3.9 KiB
Rust
#[allow(unused)]
|
|
macro_rules! set_insert_deser_assert_macro [
|
|
|
|
[$set: ident, $data: ident, $($key: expr),*] => [
|
|
$($set.insert($key));*
|
|
;
|
|
|
|
let $data = borsh::to_vec(&$set).unwrap();
|
|
#[cfg(feature = "std")]
|
|
insta::assert_debug_snapshot!($data);
|
|
]
|
|
];
|
|
|
|
#[allow(unused)]
|
|
macro_rules! map_insert_deser_assert_macro [
|
|
|
|
[$map: ident, $data: ident, $($key: expr => $value: expr),*] => [
|
|
$($map.insert($key, $value));*
|
|
;
|
|
|
|
let $data = borsh::to_vec(&$map).unwrap();
|
|
#[cfg(feature = "std")]
|
|
insta::assert_debug_snapshot!($data);
|
|
]
|
|
];
|
|
|
|
#[allow(unused)]
|
|
macro_rules! set_wrong_order_test [
|
|
|
|
[$test_name: ident, $set_type: ty] => [
|
|
|
|
#[test]
|
|
fn $test_name() {
|
|
let mut data = vec![];
|
|
let arr_key = ["various".to_string(), "foo".to_string(), "many".to_string()];
|
|
let len = arr_key.len() as u32;
|
|
u32::serialize(&len, &mut data).expect("no error");
|
|
|
|
for key in &arr_key {
|
|
key.serialize(&mut data).expect("no error");
|
|
}
|
|
|
|
let result = from_slice::<$set_type>(&data);
|
|
|
|
#[cfg(not(feature = "de_strict_order"))]
|
|
{
|
|
let result = result.unwrap();
|
|
assert_eq!(result.len(), arr_key.len());
|
|
for key in &arr_key {
|
|
assert!(result.contains(key));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#[cfg(feature = "de_strict_order")]
|
|
{
|
|
assert!(result.is_err());
|
|
|
|
assert_eq!(result.unwrap_err().to_string(), ERROR_WRONG_ORDER_OF_KEYS);
|
|
}
|
|
}
|
|
]
|
|
];
|
|
|
|
#[allow(unused)]
|
|
macro_rules! map_wrong_order_test [
|
|
|
|
[$test_name: ident, $map_type: ty] => [
|
|
|
|
#[test]
|
|
fn $test_name() {
|
|
let mut data = vec![];
|
|
let arr_key = ["various".to_string(), "foo".to_string(), "many".to_string()];
|
|
let arr_val = [
|
|
"value".to_string(),
|
|
"different".to_string(),
|
|
"unexp".to_string(),
|
|
];
|
|
let len = arr_key.len() as u32;
|
|
u32::serialize(&len, &mut data).expect("no error");
|
|
|
|
let entries = IntoIterator::into_iter(arr_key.clone())
|
|
.zip(IntoIterator::into_iter(arr_val))
|
|
.collect::<Vec<_>>();
|
|
|
|
for (key, value) in entries.clone() {
|
|
key.serialize(&mut data).expect("no error");
|
|
value.serialize(&mut data).expect("no error");
|
|
}
|
|
|
|
let result = from_slice::<$map_type>(&data);
|
|
|
|
#[cfg(not(feature = "de_strict_order"))]
|
|
{
|
|
let result = result.unwrap();
|
|
assert_eq!(result.len(), arr_key.len());
|
|
for (key, value) in entries {
|
|
assert_eq!(result.get(&key), Some(&value));
|
|
}
|
|
}
|
|
|
|
#[cfg(feature = "de_strict_order")]
|
|
{
|
|
assert!(result.is_err());
|
|
|
|
assert_eq!(result.unwrap_err().to_string(), ERROR_WRONG_ORDER_OF_KEYS);
|
|
}
|
|
}
|
|
]
|
|
];
|
|
|
|
#[allow(unused)]
|
|
macro_rules! schema_map(
|
|
() => { BTreeMap::new() };
|
|
{ $($key:expr => $value:expr),+ } => {
|
|
{
|
|
let mut m = BTreeMap::new();
|
|
$(
|
|
m.insert($key.to_string(), $value);
|
|
)+
|
|
m
|
|
}
|
|
};
|
|
);
|
|
|
|
#[allow(unused)]
|
|
#[cfg(feature = "unstable__schema")]
|
|
pub mod schema_imports {
|
|
extern crate alloc;
|
|
pub use alloc::{
|
|
boxed::Box,
|
|
collections::BTreeMap,
|
|
format,
|
|
string::{String, ToString},
|
|
vec,
|
|
vec::Vec,
|
|
};
|
|
|
|
pub use borsh::schema::{
|
|
add_definition, BorshSchemaContainer, Declaration, Definition, Fields,
|
|
SchemaContainerValidateError, SchemaMaxSerializedSizeError,
|
|
};
|
|
pub use borsh::{schema_container_of, BorshSchema};
|
|
}
|