Add `test_utils`
authorElias Rohrer <dev@tnull.de>
Fri, 4 Aug 2023 08:09:55 +0000 (10:09 +0200)
committerElias Rohrer <dev@tnull.de>
Wed, 23 Aug 2023 10:00:34 +0000 (12:00 +0200)
We add a utility function needed by upcoming `KVStore` implementation
tests.

lightning-persister/src/lib.rs
lightning-persister/src/test_utils.rs [new file with mode: 0644]

index dc205feba4e822949798d6e2491ecc4da6b38160..0a667e4216f70678cb9edcc4f19526dde1801a59 100644 (file)
@@ -10,6 +10,9 @@
 
 #[cfg(ldk_bench)] extern crate criterion;
 
+#[cfg(test)]
+mod test_utils;
+
 mod util;
 
 extern crate lightning;
diff --git a/lightning-persister/src/test_utils.rs b/lightning-persister/src/test_utils.rs
new file mode 100644 (file)
index 0000000..daf6f5e
--- /dev/null
@@ -0,0 +1,30 @@
+use lightning::util::persist::KVStore;
+
+pub(crate) fn do_read_write_remove_list_persist<K: KVStore>(kv_store: &K) {
+       use lightning::util::ser::Readable;
+
+       let data = [42u8; 32];
+
+       let namespace = "testspace";
+       let key = "testkey";
+
+       // Test the basic KVStore operations.
+       kv_store.write(namespace, key, &data).unwrap();
+
+       // Test empty namespace is allowed, but not empty key.
+       kv_store.write("", key, &data).unwrap();
+       assert!(kv_store.write(namespace, "", &data).is_err());
+
+       let listed_keys = kv_store.list(namespace).unwrap();
+       assert_eq!(listed_keys.len(), 1);
+       assert_eq!(listed_keys[0], key);
+
+       let mut reader = kv_store.read(namespace, key).unwrap();
+       let read_data: [u8; 32] = Readable::read(&mut reader).unwrap();
+       assert_eq!(data, read_data);
+
+       kv_store.remove(namespace, key).unwrap();
+
+       let listed_keys = kv_store.list(namespace).unwrap();
+       assert_eq!(listed_keys.len(), 0);
+}