use nodedb_lite::{LiteConfig, NodeDbLite, PagedbStorageMem};
#[tokio::test]
async fn open_rejects_incoherent_engine_percentages() {
let storage = PagedbStorageMem::open_in_memory()
.await
.expect("open storage");
let config = LiteConfig {
hnsw_percent: 40,
csr_percent: 25,
loro_percent: 25,
query_percent: 15, ..LiteConfig::default()
};
match NodeDbLite::open_with_config(storage, config).await {
Ok(_) => panic!("engine percentages summing to 105% must be rejected at open"),
Err(e) => {
let msg = e.to_string();
assert!(
msg.contains("percentage"),
"the error must name the offending setting, got: {msg}"
);
}
}
}
#[tokio::test]
async fn open_rejects_percentage_over_one_hundred() {
let storage = PagedbStorageMem::open_in_memory()
.await
.expect("open storage");
let config = LiteConfig {
hnsw_percent: 101,
csr_percent: 0,
loro_percent: 0,
query_percent: 0,
..LiteConfig::default()
};
match NodeDbLite::open_with_config(storage, config).await {
Ok(_) => panic!("hnsw_percent of 101 must be rejected at open"),
Err(e) => {
let msg = e.to_string();
assert!(
msg.contains("hnsw_percent"),
"the error must name the offending field, got: {msg}"
);
}
}
}
#[tokio::test]
async fn open_rejects_zero_kv_cache_capacity() {
let storage = PagedbStorageMem::open_in_memory()
.await
.expect("open storage");
let config = LiteConfig {
kv_cache_capacity: 0,
..LiteConfig::default()
};
match NodeDbLite::open_with_config(storage, config).await {
Ok(_) => panic!("kv_cache_capacity of 0 must be rejected at open"),
Err(e) => {
let msg = e.to_string();
assert!(
msg.contains("kv_cache_capacity"),
"the error must name the offending field, got: {msg}"
);
}
}
}