rustedbytes-tl 0.3.0

Fast HTML parser written in pure Rust
Documentation
use super::{hashmap::InlineHashMap, vec::InlineVec};

#[test]
fn vector_clone_and_remove_preserve_prefix() {
    let mut values = InlineVec::<_, 4>::new();
    values.push(10).unwrap();
    values.push(20).unwrap();
    values.push(30).unwrap();
    let cloned = values.clone();
    assert_eq!(values.remove(1), 20);
    assert_eq!(values.as_slice(), &[10, 30]);
    assert_eq!(cloned.as_slice(), &[10, 20, 30]);
}

#[test]
fn map_replacement_clone_and_remove() {
    let mut values = InlineHashMap::<_, _, 2>::new();
    values.insert(1, 10).unwrap();
    values.insert(1, 20).unwrap();
    assert_eq!(values.len(), 1);
    let cloned = values.clone();
    assert_eq!(values.remove(&1), Some(20));
    assert_eq!(cloned.get(&1), Some(&20));
}

#[cfg(not(feature = "std"))]
#[test]
fn capacity_errors_leave_existing_values_intact() {
    let mut vector = InlineVec::<_, 1>::new();
    vector.push(10).unwrap();
    assert_eq!(
        vector.push(20),
        Err(crate::ParseError::ChildCapacityExceeded)
    );
    assert_eq!(vector.as_slice(), &[10]);
    let mut map = InlineHashMap::<_, _, 1>::new();
    map.insert(1, 10).unwrap();
    assert_eq!(
        map.insert(2, 20),
        Err(crate::ParseError::AttributeCapacityExceeded)
    );
    map.insert(1, 30).unwrap();
    assert_eq!(map.get(&1), Some(&30));
    assert_eq!(map.len(), 1);
}