vmf-forge 0.4.1

A parser for Valve Map Format (VMF) files
Documentation
#[cfg(test)]
mod tests {
    use pretty_assertions::assert_eq;
    use vmf_forge::errors::VmfError;
    use vmf_forge::parser::*;

    #[test]
    fn parse_vmf_valid_input() {
        let input = "\
        versioninfo\n\
        {\n\
        \t\"editorversion\" \"400\"\n\
        \t\"editorbuild\" \"8000\"\n\
        \t\"mapversion\" \"1\"\n\
        \t\"formatversion\" \"100\"\n\
        \t\"prefab\" \"0\"\n\
        }\n\
        world\n\
        {\n\
        \t\"classname\" \"worldspawn\"\n\
        }\n";
        let vmf = parse_vmf(input).unwrap();
        assert_eq!(vmf.versioninfo.editor_version, 400);
        assert_eq!(vmf.world.key_values.get("classname").unwrap(), "worldspawn");
    }
    #[test]
    fn parse_vmf_invalid_input() {
        let input = "\
        versioninfo\n\
        {\n\
        \t\"editorversion\" \"abc\"\n\
        \t\"editorbuild\" \"8000\"\n\
        \t\"mapversion\" \"1\"\n\
        \t\"formatversion\" \"100\"\n\
        \t\"prefab\" \"0\"\n\
        }\n\
        world\n\
        {\n\
        \t\"classname\" \"worldspawn\"\n\
        }\n";

        let result = parse_vmf(input);
        assert!(matches!(
            result,
            Err(VmfError::ParseInt { source: _, key: _ })
        ));
    }

    #[test]
    fn parse_vmf_empty_input() {
        let input = "";
        let vmf = parse_vmf(input).unwrap();
        assert_eq!(vmf.entities.len(), 0);
    }
}