use abin::{AnyBin, Bin, BinFactory, IntoSync, IntoUnSync, IntoUnSyncView, NewBin, NewSBin, SBin};
#[test]
fn convert_to_send_sync() {
let sync: SBin = NewSBin::copy_from_slice("Initially sync".as_bytes());
something_that_requires_binary_to_be_send_and_sync(sync, "Initially sync".as_bytes());
let non_sync_got_externally: Bin = NewBin::copy_from_slice("Something non-sync".as_bytes());
let converted_to_sync: SBin = non_sync_got_externally.into_sync();
something_that_requires_binary_to_be_send_and_sync(
converted_to_sync,
"Something non-sync".as_bytes(),
);
}
#[test]
fn convert_back_to_non_sync() {
let sync1: SBin = NewSBin::copy_from_slice("Initially sync 1".as_bytes());
let non_sync1 = sync1.un_sync();
assert_eq!("Initially sync 1".as_bytes(), non_sync1.as_slice());
let sync2: SBin = NewSBin::copy_from_slice("Initially sync 2".as_bytes());
let non_sync2 = sync2.un_sync_convert();
assert_eq!("Initially sync 2".as_bytes(), non_sync2.as_slice());
}
fn something_that_requires_binary_to_be_send_and_sync<T: AnyBin + Send + Sync>(
bin: T,
expected: &[u8],
) {
assert_eq!(expected, bin.as_slice());
}