use dbx_core::Database;
use dbx_core::engine::TablePersistence;
use tempfile::tempdir;
#[test]
fn test_00_per_table_persistence_set_and_query() {
let dir = tempdir().unwrap();
let path = dir.path();
let db = Database::open(path).unwrap();
db.set_table_persistence("temp", TablePersistence::Memory)
.unwrap();
db.set_table_persistence("persistent", TablePersistence::File)
.unwrap();
assert_eq!(db.table_persistence("temp"), Some(TablePersistence::Memory));
assert_eq!(
db.table_persistence("persistent"),
Some(TablePersistence::File)
);
assert_eq!(db.table_persistence("unknown"), None);
db.insert("temp", b"k", b"v1").unwrap();
db.insert("persistent", b"k", b"v2").unwrap();
assert_eq!(db.get("temp", b"k").unwrap(), Some(b"v1".to_vec()));
assert_eq!(db.get("persistent", b"k").unwrap(), Some(b"v2".to_vec()));
}
#[test]
fn test_per_table_persistence_open_in_memory_insert_get() {
let db = Database::open_in_memory().unwrap();
db.insert("t", b"k", b"v").unwrap();
assert_eq!(db.get("t", b"k").unwrap(), Some(b"v".to_vec()));
}
#[test]
fn test_open_in_memory_has_no_file_persistence() {
let db = Database::open_in_memory().unwrap();
let err = db
.set_table_persistence("t", TablePersistence::File)
.unwrap_err();
assert!(err.to_string().contains("file-backed") || err.to_string().contains("path"));
}