1 use test_programs::keyvalue::wasi::keyvalue::{atomics, batch, store};
2 
3 fn main() {
4     let identifier = std::env::var_os("IDENTIFIER")
5         .unwrap()
6         .into_string()
7         .unwrap();
8     let bucket = store::open(&identifier).unwrap();
9 
10     if identifier != "" {
11         // for In-Memory provider, we have preset this data
12         assert_eq!(atomics::increment(&bucket, "atomics_key", 5).unwrap(), 5);
13     }
14     assert_eq!(atomics::increment(&bucket, "atomics_key", 1).unwrap(), 6);
15 
16     let resp = bucket.list_keys(None).unwrap();
17     assert_eq!(resp.keys, vec!["atomics_key".to_string()]);
18 
19     bucket.set("hello", "world".as_bytes()).unwrap();
20 
21     let v = bucket.get("hello").unwrap();
22     assert_eq!(String::from_utf8(v.unwrap()).unwrap(), "world");
23 
24     assert_eq!(bucket.exists("hello").unwrap(), true);
25     bucket.delete("hello").unwrap();
26     assert_eq!(bucket.exists("hello").unwrap(), false);
27 
28     batch::set_many(
29         &bucket,
30         &[
31             ("a1".to_string(), "v1".as_bytes().to_vec()),
32             ("b1".to_string(), "v1".as_bytes().to_vec()),
33             ("c1".to_string(), "v1".as_bytes().to_vec()),
34         ],
35     )
36     .unwrap();
37     batch::delete_many(&bucket, &["a1".to_string(), "c1".to_string()]).unwrap();
38     let values = batch::get_many(
39         &bucket,
40         &["a1".to_string(), "b1".to_string(), "c1".to_string()],
41     )
42     .unwrap();
43     assert_eq!(
44         values,
45         vec![
46             None,
47             Some(("b1".to_string(), "v1".as_bytes().to_vec())),
48             None
49         ]
50     );
51 }
52