keyvalues-parser 0.2.3

A parser/renderer for vdf text
Documentation
use keyvalues_parser::{Obj, Value, Vdf};

use std::{borrow::Cow, collections::BTreeMap};

#[test]
fn simple_vdfs_iteration() {
    let inner = BTreeMap::new();
    let obj = Obj(inner);
    let mut vdfs_iter = obj.into_vdfs();

    assert_eq!(vdfs_iter.next(), None);
}

#[test]
fn complex_vdfs_iteration() {
    let key1 = Cow::from("key1");
    let key4 = Cow::from("key4");
    let val1 = Value::Str(Cow::from("val1"));
    let val2 = Value::Str(Cow::from("val2"));
    let empty_obj = Value::Obj(Obj::new());

    let pairs = vec![
        (key1.clone(), vec![val1.clone(), val2.clone()]),
        (Cow::from("key2"), Vec::new()),
        (Cow::from("key3"), Vec::new()),
        (key4.clone(), vec![empty_obj.clone()]),
    ];

    let obj: Obj = pairs.into_iter().collect();
    let vdfs: Vec<_> = obj.into_vdfs().collect();

    assert_eq!(
        vdfs,
        vec![
            Vdf::new(key1.clone(), val1),
            Vdf::new(key1, val2),
            Vdf::new(key4, empty_obj),
        ]
    );
}