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