use crate::persistent_artrie_core::key_encoding::{CharKey, KeyEncoding};
pub use crate::persistent_artrie_core::overlay::flags;
pub type PersistentCharNode<V = ()> =
crate::persistent_artrie_core::overlay::OverlayNode<CharKey, V>;
pub type Child<V = ()> = crate::persistent_artrie_core::overlay::Child<CharKey, V>;
pub const MAX_PREFIX_LEN: usize = <CharKey as KeyEncoding>::MAX_PREFIX_LEN;
#[cfg(test)]
mod tests {
use super::*;
use crate::persistent_artrie::swizzled_ptr::SwizzledPtr;
use crate::persistent_artrie::NodeType;
type PersistentCharNode = super::PersistentCharNode<()>;
#[test]
fn alias_resolves_and_basic_ops_work() {
let node = PersistentCharNode::new();
assert_eq!(node.num_children(), 0);
assert!(!node.is_final());
let child = Child::OnDisk(SwizzledPtr::on_disk(1, 100, NodeType::CharNode4));
let node2 = node.with_child('a' as u32, child);
assert_eq!(node2.num_children(), 1);
assert!(node2.has_child('a' as u32));
assert_eq!(node.num_children(), 0);
}
#[test]
fn alias_max_prefix_len_is_char_value() {
assert_eq!(MAX_PREFIX_LEN, 6);
let prefix: Vec<u32> = "abcdefghi".chars().map(|c| c as u32).collect();
let node = PersistentCharNode::with_prefix(&prefix);
assert_eq!(node.prefix_len(), 6);
}
}