1
0
Fork 0
mirror of https://gitlab.com/famedly/conduit.git synced 2025-07-02 16:38:36 +00:00

test:add replace test and refactor for reduce specific test boilerplate

This commit is contained in:
Tglman 2022-01-22 13:55:58 +00:00
parent e770de3d3d
commit 326c345811

View file

@ -1,4 +1,6 @@
use crate::database::{abstraction::Tree, Config}; use crate::database::{abstraction::{DatabaseEngine, Tree}, Config};
use std::sync::Arc;
use tempfile::{Builder, TempDir};
fn insert_get(tree: &dyn Tree) { fn insert_get(tree: &dyn Tree) {
let key = "key".as_bytes(); let key = "key".as_bytes();
@ -8,6 +10,19 @@ fn insert_get(tree: &dyn Tree) {
assert_eq!(read, Some(value.to_owned())); assert_eq!(read, Some(value.to_owned()));
} }
fn insert_get_replace(tree: &dyn Tree) {
let key = "key".as_bytes();
let value = "value".as_bytes();
tree.insert(key, value).unwrap();
let read = tree.get(key).unwrap();
assert_eq!(read, Some(value.to_owned()));
let value1 = "value1".as_bytes();
tree.insert(key, value1).unwrap();
let read = tree.get(key).unwrap();
assert_eq!(read, Some(value1.to_owned()));
}
fn insert_get_remove(tree: &dyn Tree) { fn insert_get_remove(tree: &dyn Tree) {
let key = "key".as_bytes(); let key = "key".as_bytes();
let value = "value".as_bytes(); let value = "value".as_bytes();
@ -153,69 +168,75 @@ database_path = "{}"
.unwrap() .unwrap()
} }
/// Make sure to keep the reference of the tree returned values for
/// the length of the test, to avoid early cleanups that may create test issues
fn open_tree<T>(test_name: &str) -> (Arc<dyn Tree>, impl DatabaseEngine, TempDir)
where Arc<T>: DatabaseEngine
{
let db_folder = Builder::new().prefix(test_name).tempdir().unwrap();
let config = empty_config(db_folder.path().to_str().unwrap());
let instance = Arc::<T>::open(&config).unwrap();
let tree = instance.open_tree("test").unwrap();
(tree, instance, db_folder)
}
#[cfg(feature = "sqlite")] #[cfg(feature = "sqlite")]
mod sqlite { mod sqlite {
use super::*; use super::*;
use crate::database::abstraction::{DatabaseEngine, Tree}; use crate::database::abstraction::sqlite::Engine;
use std::sync::Arc;
use tempfile::{Builder, TempDir};
/// Make sure to keep the reference of the tree returned values for
/// the length of the test, to avoid early cleanups that may create test issues
fn open_tree(test_name: &str) -> (Arc<dyn Tree>, impl DatabaseEngine, TempDir) {
let db_folder = Builder::new().prefix(test_name).tempdir().unwrap();
let config = empty_config(db_folder.path().to_str().unwrap());
let instance = Arc::<crate::database::abstraction::sqlite::Engine>::open(&config).unwrap();
let tree = instance.open_tree("test").unwrap();
(tree, instance, db_folder)
}
#[test] #[test]
fn sqlite_insert_get() { fn sqlite_insert_get() {
let (tree, _inst, _temp_dir) = open_tree("insert_get"); let (tree, _inst, _temp_dir) = open_tree::<Engine>("sqlite_insert_get");
insert_get(&*tree) insert_get(&*tree)
} }
#[test]
fn sqlite_insert_replace_get() {
let (tree, _inst, _temp_dir) = open_tree::<Engine>("sqlite_insert_get_replace");
insert_get_replace(&*tree)
}
#[test] #[test]
fn sqlite_insert_get_remove() { fn sqlite_insert_get_remove() {
let (tree, _inst, _temp_dir) = open_tree("insert_get_remove"); let (tree, _inst, _temp_dir) = open_tree::<Engine>("sqlite_insert_get_remove");
insert_get_remove(&*tree) insert_get_remove(&*tree)
} }
#[test] #[test]
fn sqlite_batch_insert_get() { fn sqlite_batch_insert_get() {
let (tree, _inst, _temp_dir) = open_tree("batch_insert_get"); let (tree, _inst, _temp_dir) = open_tree::<Engine>("sqlite_batch_insert_get");
batch_insert_get(&*tree) batch_insert_get(&*tree)
} }
#[test] #[test]
fn sqlite_insert_iter() { fn sqlite_insert_iter() {
let (tree, _inst, _temp_dir) = open_tree("insert_iter"); let (tree, _inst, _temp_dir) = open_tree::<Engine>("sqlite_insert_iter");
insert_iter(&*tree) insert_iter(&*tree)
} }
#[test] #[test]
fn sqlite_insert_iter_from() { fn sqlite_insert_iter_from() {
let (tree, _inst, _temp_dir) = open_tree("insert_iter_from"); let (tree, _inst, _temp_dir) = open_tree::<Engine>("sqlite_insert_iter_from");
insert_iter_from(&*tree) insert_iter_from(&*tree)
} }
#[test] #[test]
fn sqlite_insert_iter_prefix() { fn sqlite_insert_iter_prefix() {
let (tree, _inst, _temp_dir) = open_tree("insert_iter_prefix"); let (tree, _inst, _temp_dir) = open_tree::<Engine>("sqlite_insert_iter_prefix");
insert_iter_prefix(&*tree) insert_iter_prefix(&*tree)
} }
#[test] #[test]
fn sqlite_insert_clear() { fn sqlite_insert_clear() {
let (tree, _inst, _temp_dir) = open_tree("insert_iter_prefix"); let (tree, _inst, _temp_dir) = open_tree::<Engine>("sqlite_insert_iter_prefix");
insert_clear(&*tree) insert_clear(&*tree)
} }
#[test] #[test]
fn sqlite_increment() { fn sqlite_increment() {
let (tree, _inst, _temp_dir) = open_tree("increment"); let (tree, _inst, _temp_dir) = open_tree::<Engine>("sqlite_increment");
increment(&*tree) increment(&*tree)
} }