Improve testing for Store impls

This commit is contained in:
Paul Hauner 2019-05-21 16:37:15 +10:00
parent b3a94de086
commit 54f28df5b1
No known key found for this signature in database
GPG Key ID: 5E2CFF9B75FA63DF

View File

@ -130,35 +130,40 @@ mod tests {
}
}
#[test]
fn leveldb_can_store_and_retrieve() {
let dir = tempdir().unwrap();
let path = dir.path();
let store = LevelDB::open(&path).unwrap();
fn test_impl(store: impl Store) {
let key = Hash256::random();
let item = StorableThing { a: 1, b: 42 };
assert_eq!(store.exists::<StorableThing>(&key), Ok(false));
store.put(&key, &item).unwrap();
let retrieved = store.get(&key).unwrap().unwrap();
assert_eq!(store.exists::<StorableThing>(&key), Ok(true));
let retrieved = store.get(&key).unwrap().unwrap();
assert_eq!(item, retrieved);
store.delete::<StorableThing>(&key).unwrap();
assert_eq!(store.exists::<StorableThing>(&key), Ok(false));
assert_eq!(store.get::<StorableThing>(&key), Ok(None));
}
#[test]
fn memorydb_can_store_and_retrieve() {
fn leveldb() {
let dir = tempdir().unwrap();
let path = dir.path();
let store = LevelDB::open(&path).unwrap();
test_impl(store);
}
#[test]
fn memorydb() {
let store = MemoryDB::open();
let key = Hash256::random();
let item = StorableThing { a: 1, b: 42 };
store.put(&key, &item).unwrap();
let retrieved = store.get(&key).unwrap().unwrap();
assert_eq!(item, retrieved);
test_impl(store);
}
#[test]