Skip to content

Commit f0cc64f

Browse files
committed
Add test_utils
We add a utility function needed by upcoming `KVStore` implementation tests.
1 parent 2751355 commit f0cc64f

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

lightning-storage/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,6 @@
88
#![deny(unsafe_code)]
99

1010
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
11+
12+
#[cfg(test)]
13+
mod test_utils;

lightning-storage/src/test_utils.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
use lightning::util::persist::KVStore;
2+
3+
use rand::{thread_rng, RngCore};
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 mut data = [0; 32];
9+
thread_rng().fill_bytes(&mut data);
10+
11+
12+
let namespace = "testspace";
13+
let key = "testkey";
14+
15+
// Test the basic KVStore operations.
16+
kv_store.write(namespace, key, &data).unwrap();
17+
18+
// Test empty namespace is allowed, but not empty key.
19+
kv_store.write("", key, &data).unwrap();
20+
assert!(kv_store.write(namespace, "", &data).is_err());
21+
22+
let listed_keys = kv_store.list(namespace).unwrap();
23+
assert_eq!(listed_keys.len(), 1);
24+
assert_eq!(listed_keys[0], key);
25+
26+
let mut reader = kv_store.read(namespace, key).unwrap();
27+
let read_data: [u8; 32] = Readable::read(&mut reader).unwrap();
28+
assert_eq!(data, read_data);
29+
30+
kv_store.remove(namespace, key).unwrap();
31+
32+
let listed_keys = kv_store.list(namespace).unwrap();
33+
assert_eq!(listed_keys.len(), 0);
34+
}

0 commit comments

Comments
 (0)