use std::sync::Mutex;
use super::platform::TEST_PLATFORM;
use remdb::*;
const DEFAULT_TEST_MEMORY_SIZE: usize = 1024 * 1024;
static TEST_DB_MEMORY: Mutex<Option<Box<[u8]>>> = Mutex::new(None);
pub fn setup_test_db_with_memory(size: usize) {
let old_pool = TEST_DB_MEMORY.lock().unwrap().take();
remdb::platform::init_platform(&TEST_PLATFORM);
remdb::reset_global_db();
drop(old_pool);
let mut db_memory = vec![0u8; size].into_boxed_slice();
let ptr = db_memory.as_mut_ptr();
unsafe {
remdb::memory::allocator::init_global_allocator(ptr, db_memory.len()).unwrap();
}
*TEST_DB_MEMORY.lock().unwrap() = Some(db_memory);
}
pub fn setup_test_db() {
setup_test_db_with_memory(DEFAULT_TEST_MEMORY_SIZE)
}
pub fn cleanup_test_db() {
remdb::reset_global_db();
}
#[cfg(feature = "posix")]
pub fn setup_test_db_with_posix_platform(size: usize) -> Box<Vec<u8>> {
use remdb::platform::posix;
static mut DB_MEMORY: [u8; 1024 * 1024] = [0u8; 1024 * 1024];
remdb::platform::init_platform(posix::get_posix_platform());
remdb::reset_global_db();
unsafe {
remdb::memory::allocator::init_global_allocator(DB_MEMORY.as_mut_ptr(), DB_MEMORY.len())
.unwrap();
}
Box::new(Vec::new())
}
#[cfg(feature = "posix")]
pub fn setup_test_db_with_posix() -> Box<Vec<u8>> {
setup_test_db_with_posix_platform(DEFAULT_TEST_MEMORY_SIZE)
}