f Account for `KVStore::read` returning a `Vec<u8>`
[rust-lightning] / lightning-persister / src / test_utils.rs
1 use lightning::util::persist::KVStore;
2
3 use std::io::Cursor;
4
5 pub(crate) fn do_read_write_remove_list_persist<K: KVStore>(kv_store: &K) {
6         use lightning::util::ser::Readable;
7
8         let data = [42u8; 32];
9
10         let namespace = "testspace";
11         let key = "testkey";
12
13         // Test the basic KVStore operations.
14         kv_store.write(namespace, key, &data).unwrap();
15
16         // Test empty namespace is allowed, but not empty key.
17         kv_store.write("", key, &data).unwrap();
18         assert!(kv_store.write(namespace, "", &data).is_err());
19
20         let listed_keys = kv_store.list(namespace).unwrap();
21         assert_eq!(listed_keys.len(), 1);
22         assert_eq!(listed_keys[0], key);
23
24         let mut reader = Cursor::new(kv_store.read(namespace, key).unwrap());
25         let read_data: [u8; 32] = Readable::read(&mut reader).unwrap();
26         assert_eq!(data, read_data);
27
28         kv_store.remove(namespace, key).unwrap();
29
30         let listed_keys = kv_store.list(namespace).unwrap();
31         assert_eq!(listed_keys.len(), 0);
32 }