Skip to content

Commit 2c2ae96

Browse files
committed
f DRY up test code
1 parent 3dc1ad2 commit 2c2ae96

File tree

3 files changed

+38
-58
lines changed

3 files changed

+38
-58
lines changed

src/io/fs_store.rs

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#[cfg(target_os = "windows")]
22
extern crate winapi;
33

4-
use super::{get_namespace_and_key_from_prefixed, KVStore};
4+
use super::*;
55

66
use std::collections::HashMap;
77
use std::fs;
@@ -257,8 +257,6 @@ impl KVStorePersister for FilesystemStore {
257257
mod tests {
258258
use super::*;
259259
use crate::test::utils::random_storage_path;
260-
use lightning::util::persist::KVStorePersister;
261-
use lightning::util::ser::Readable;
262260

263261
use proptest::prelude::*;
264262
proptest! {
@@ -267,31 +265,8 @@ mod tests {
267265
let rand_dir = random_storage_path();
268266

269267
let fs_store = FilesystemStore::new(rand_dir.into());
270-
let namespace = "testspace";
271-
let key = "testkey";
272268

273-
// Test the basic KVStore operations.
274-
fs_store.write(namespace, key, &data).unwrap();
275-
276-
let listed_keys = fs_store.list(namespace).unwrap();
277-
assert_eq!(listed_keys.len(), 1);
278-
assert_eq!(listed_keys[0], "testkey");
279-
280-
let mut reader = fs_store.read(namespace, key).unwrap();
281-
let read_data: [u8; 32] = Readable::read(&mut reader).unwrap();
282-
assert_eq!(data, read_data);
283-
284-
fs_store.remove(namespace, key).unwrap();
285-
286-
let listed_keys = fs_store.list(namespace).unwrap();
287-
assert_eq!(listed_keys.len(), 0);
288-
289-
// Test KVStorePersister
290-
let prefixed_key = format!("{}/{}", namespace, key);
291-
fs_store.persist(&prefixed_key, &data).unwrap();
292-
let mut reader = fs_store.read(namespace, key).unwrap();
293-
let read_data: [u8; 32] = Readable::read(&mut reader).unwrap();
294-
assert_eq!(data, read_data);
269+
do_read_write_remove_list_persist(&data, &fs_store);
295270
}
296271
}
297272
}

src/io/mod.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,38 @@ fn get_namespace_and_key_from_prefixed(
9999

100100
Ok((namespace, key))
101101
}
102+
103+
#[cfg(test)]
104+
fn do_read_write_remove_list_persist<K: KVStore>(data: &[u8; 32], kv_store: &K) {
105+
use lightning::util::ser::Readable;
106+
107+
let namespace = "testspace";
108+
let key = "testkey";
109+
110+
// Test the basic KVStore operations.
111+
kv_store.write(namespace, key, data).unwrap();
112+
113+
// Test empty namespace is allowed, but not empty key.
114+
kv_store.write("", key, data).unwrap();
115+
assert!(kv_store.write(namespace, "", data).is_err());
116+
117+
let listed_keys = kv_store.list(namespace).unwrap();
118+
assert_eq!(listed_keys.len(), 1);
119+
assert_eq!(listed_keys[0], key);
120+
121+
let mut reader = kv_store.read(namespace, key).unwrap();
122+
let read_data: [u8; 32] = Readable::read(&mut reader).unwrap();
123+
assert_eq!(*data, read_data);
124+
125+
kv_store.remove(namespace, key).unwrap();
126+
127+
let listed_keys = kv_store.list(namespace).unwrap();
128+
assert_eq!(listed_keys.len(), 0);
129+
130+
// Test KVStorePersister
131+
let prefixed_key = format!("{}/{}", namespace, key);
132+
kv_store.persist(&prefixed_key, &data).unwrap();
133+
let mut reader = kv_store.read(namespace, key).unwrap();
134+
let read_data: [u8; 32] = Readable::read(&mut reader).unwrap();
135+
assert_eq!(*data, read_data);
136+
}

src/io/sqlite_store.rs

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -169,45 +169,15 @@ impl KVStorePersister for SqliteStore {
169169
mod tests {
170170
use super::*;
171171
use crate::test::utils::random_storage_path;
172-
use lightning::util::persist::KVStorePersister;
173-
use lightning::util::ser::Readable;
174172

175173
use proptest::prelude::*;
176174
proptest! {
177175
#[test]
178176
fn read_write_remove_list_persist(data in any::<[u8; 32]>()) {
179177
let rand_dir = random_storage_path();
180-
181178
let sqlite_store = SqliteStore::new(rand_dir.into());
182-
let namespace = "testspace";
183-
let key = "testkey";
184-
185-
// Test the basic KVStore operations.
186-
sqlite_store.write(namespace, key, &data).unwrap();
187-
188-
// Test empty namespace is allowed, but not empty key.
189-
sqlite_store.write("", key, &data).unwrap();
190-
assert!(sqlite_store.write(namespace, "", &data).is_err());
191-
192-
let listed_keys = sqlite_store.list(namespace).unwrap();
193-
assert_eq!(listed_keys.len(), 1);
194-
assert_eq!(listed_keys[0], key);
195-
196-
let mut reader = sqlite_store.read(namespace, key).unwrap();
197-
let read_data: [u8; 32] = Readable::read(&mut reader).unwrap();
198-
assert_eq!(data, read_data);
199-
200-
sqlite_store.remove(namespace, key).unwrap();
201-
202-
let listed_keys = sqlite_store.list(namespace).unwrap();
203-
assert_eq!(listed_keys.len(), 0);
204179

205-
// Test KVStorePersister
206-
let prefixed_key = format!("{}/{}", namespace, key);
207-
sqlite_store.persist(&prefixed_key, &data).unwrap();
208-
let mut reader = sqlite_store.read(namespace, key).unwrap();
209-
let read_data: [u8; 32] = Readable::read(&mut reader).unwrap();
210-
assert_eq!(data, read_data);
180+
do_read_write_remove_list_persist(&data, &sqlite_store);
211181
}
212182
}
213183
}

0 commit comments

Comments
 (0)