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 test_impl(store: impl Store) {
fn leveldb_can_store_and_retrieve() {
let dir = tempdir().unwrap();
let path = dir.path();
let store = LevelDB::open(&path).unwrap();
let key = Hash256::random(); let key = Hash256::random();
let item = StorableThing { a: 1, b: 42 }; let item = StorableThing { a: 1, b: 42 };
assert_eq!(store.exists::<StorableThing>(&key), Ok(false));
store.put(&key, &item).unwrap(); 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); 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] #[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 store = MemoryDB::open();
let key = Hash256::random(); test_impl(store);
let item = StorableThing { a: 1, b: 42 };
store.put(&key, &item).unwrap();
let retrieved = store.get(&key).unwrap().unwrap();
assert_eq!(item, retrieved);
} }
#[test] #[test]