1*25ea52abSXinzhao Xu use test_programs::wasi::keyvalue::{atomics, batch, store};
2dfc4358dSXinzhao Xu 
main()3dfc4358dSXinzhao Xu fn main() {
4bfc10d96SXinzhao Xu     let bucket = store::open("").unwrap();
5dfc4358dSXinzhao Xu 
6bfc10d96SXinzhao Xu     // we have preset this `atomics_key` with value 5
7dfc4358dSXinzhao Xu     assert_eq!(atomics::increment(&bucket, "atomics_key", 1).unwrap(), 6);
8dfc4358dSXinzhao Xu 
9dfc4358dSXinzhao Xu     let resp = bucket.list_keys(None).unwrap();
10dfc4358dSXinzhao Xu     assert_eq!(resp.keys, vec!["atomics_key".to_string()]);
11dfc4358dSXinzhao Xu 
12dfc4358dSXinzhao Xu     bucket.set("hello", "world".as_bytes()).unwrap();
13dfc4358dSXinzhao Xu 
14dfc4358dSXinzhao Xu     let v = bucket.get("hello").unwrap();
15dfc4358dSXinzhao Xu     assert_eq!(String::from_utf8(v.unwrap()).unwrap(), "world");
16dfc4358dSXinzhao Xu 
17dfc4358dSXinzhao Xu     assert_eq!(bucket.exists("hello").unwrap(), true);
18dfc4358dSXinzhao Xu     bucket.delete("hello").unwrap();
19dfc4358dSXinzhao Xu     assert_eq!(bucket.exists("hello").unwrap(), false);
20dfc4358dSXinzhao Xu 
21dfc4358dSXinzhao Xu     batch::set_many(
22dfc4358dSXinzhao Xu         &bucket,
23dfc4358dSXinzhao Xu         &[
24dfc4358dSXinzhao Xu             ("a1".to_string(), "v1".as_bytes().to_vec()),
25dfc4358dSXinzhao Xu             ("b1".to_string(), "v1".as_bytes().to_vec()),
26dfc4358dSXinzhao Xu             ("c1".to_string(), "v1".as_bytes().to_vec()),
27dfc4358dSXinzhao Xu         ],
28dfc4358dSXinzhao Xu     )
29dfc4358dSXinzhao Xu     .unwrap();
30dfc4358dSXinzhao Xu     batch::delete_many(&bucket, &["a1".to_string(), "c1".to_string()]).unwrap();
31dfc4358dSXinzhao Xu     let values = batch::get_many(
32dfc4358dSXinzhao Xu         &bucket,
33dfc4358dSXinzhao Xu         &["a1".to_string(), "b1".to_string(), "c1".to_string()],
34dfc4358dSXinzhao Xu     )
35dfc4358dSXinzhao Xu     .unwrap();
36dfc4358dSXinzhao Xu     assert_eq!(
37dfc4358dSXinzhao Xu         values,
38dfc4358dSXinzhao Xu         vec![
39dfc4358dSXinzhao Xu             None,
40dfc4358dSXinzhao Xu             Some(("b1".to_string(), "v1".as_bytes().to_vec())),
41dfc4358dSXinzhao Xu             None
42dfc4358dSXinzhao Xu         ]
43dfc4358dSXinzhao Xu     );
44dfc4358dSXinzhao Xu }
45