use aletheiadb::{AletheiaDB, NodeId, PropertyMapBuilder};
#[test]
fn test_with_node_api_coverage() {
let db = AletheiaDB::new().expect("Failed to open DB");
let props = PropertyMapBuilder::new().insert("name", "Alice").build();
let node_id = db
.create_node("Person", props)
.expect("Failed to create node");
let name_len = db
.with_node(node_id, |n| {
n.properties
.get("name")
.map(|v| v.as_str().unwrap_or("").len())
.unwrap_or(0)
})
.expect("with_node failed");
assert_eq!(name_len, 5);
let non_existent = NodeId::new(9999).unwrap();
let result = db.with_node(non_existent, |_| 0);
assert!(result.is_err());
let err = result.unwrap_err();
assert!(format!("{}", err).contains("not found"));
}
#[test]
fn test_get_node_vector_failure_coverage() {
let db = AletheiaDB::new().expect("Failed to open DB");
use aletheiadb::index::vector::{DistanceMetric, HnswConfig};
let config = HnswConfig::new(2, DistanceMetric::Cosine);
db.enable_vector_index("embedding", config)
.expect("Failed to enable index");
let non_existent = NodeId::new(9999).unwrap();
let result = db.find_similar(non_existent, 1);
assert!(result.is_err());
let err = result.unwrap_err();
let err_msg = format!("{}", err);
assert!(err_msg.contains("not found"), "Actual error: {}", err_msg);
let props = PropertyMapBuilder::new().insert("name", "Bob").build();
let node_id = db.create_node("Person", props).expect("Created node");
let result = db.find_similar(node_id, 1);
assert!(result.is_err());
let err = result.unwrap_err();
let err_msg = format!("{}", err);
assert!(
err_msg.contains("Property") && err_msg.contains("not found"),
"Actual error: {}",
err_msg
);
let props_invalid = PropertyMapBuilder::new()
.insert("embedding", "not a vector")
.build();
let node_id_invalid = db
.create_node("Person", props_invalid)
.expect("Created node");
let result = db.find_similar(node_id_invalid, 1);
assert!(result.is_err());
let err = result.unwrap_err();
let err_msg = format!("{}", err);
assert!(
err_msg.contains("Property is not a vector"),
"Actual error: {}",
err_msg
);
}