fastobo 0.8.4

Faultless AST for Open Biomedical Ontologies.
Documentation
extern crate pretty_assertions;

extern crate fastobo;

use std::fs::read_to_string;
use std::path::PathBuf;

use pretty_assertions::assert_eq;

macro_rules! roundtriptest {
    ($name:ident) => {
        #[test]
        fn $name() {
            let dir = {
                let mut p = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
                p.push("tests");
                p.push("data");
                p.push("roundtrip");
                p
            };

            let input = dir.join(format!("{}.obo", stringify!($name)));
            let txt = read_to_string(&input).expect("could not read file");
            let doc = fastobo::from_str(&txt).expect("could not parse file");

            for (i, (l, r)) in doc.to_string().split('\n').zip(txt.split('\n')).enumerate() {
                assert_eq!(l, r, "line {} differs", i);
            }
        }
    };
}

roundtriptest!(msterm);
roundtriptest!(mslite);