use aerospike::{
as_bin, as_blob, as_geo, as_key, as_list, as_map, as_val, Bins, ReadPolicy, WritePolicy,
};
use crate::common;
#[aerospike_macro::test]
async fn serialize() {
let client = common::client().await;
let namespace: &str = common::namespace();
let set_name = &common::rand_str(10);
let policy = ReadPolicy::default();
let wpolicy = WritePolicy::default();
let key = as_key!(namespace, set_name, -1);
client.delete(&wpolicy, &key).await.unwrap();
let bins = [
as_bin!("bin999", "test string"),
as_bin!("bin vec![int]", as_list![1u32, 2u32, 3u32]),
as_bin!("bin vec![u8]", as_blob!(vec![1u8, 2u8, 3u8])),
as_bin!("bin map", as_map!(1 => 1, 2 => 2, 3 => "hi!")),
as_bin!("bin f64", 1.64f64),
as_bin!("bin Nil", None), as_bin!(
"bin Geo",
as_geo!(format!(
r#"{{ "type": "Point", "coordinates": [{}, {}] }}"#,
17.119_381, 19.45612
))
),
as_bin!("bin-name-len-15", "max. bin name length is 15 chars"),
];
client.put(&wpolicy, &key, &bins).await.unwrap();
let record = client.get(&policy, &key, Bins::All).await.unwrap();
let json = serde_json::to_string(&record);
if json.is_err() {
assert!(false, "JSON Parsing of the Record was not successful")
}
let json = serde_json::to_string(&record.bins.get("bin999"));
assert_eq!(
json.unwrap(),
"\"test string\"",
"The Parsed JSON value for bin999 did not match"
);
client.close().await.unwrap();
}