extern crate fastobo_graphs; extern crate serde_json; extern crate serde_yaml; use std::fs::File; use std::path::PathBuf; pub mod parse { use super::*; macro_rules! test_impl { ($case:ident) => { #[test] #[allow(non_snake_case)] fn $case() { let basename = PathBuf::from(env!("CARGO_MANIFEST_DIR")) .join("obographs") .join("examples") .join(stringify!($case)); let yamlfile = File::open(basename.with_extension("yaml")).unwrap(); let jsonfile = File::open(basename.with_extension("json")).unwrap(); let jsongraph: fastobo_graphs::model::GraphDocument = serde_json::from_reader(jsonfile).unwrap(); let yamlgraph: fastobo_graphs::model::GraphDocument = serde_yaml::from_reader(yamlfile).unwrap(); assert_eq!(jsongraph, yamlgraph, "graphs do not match!") } }; } test_impl!(abox); test_impl!(basic); test_impl!(equivNodeSetTest); test_impl!(logicalDefinitionTest); test_impl!(nucleus); test_impl!(obsoletion_example); // test_impl!(ro); } pub mod convert { use super::*; use fastobo_graphs::FromGraph; macro_rules! test_impl { ($case:ident) => { #[test] #[allow(non_snake_case)] fn $case() { let yaml = PathBuf::from(env!("CARGO_MANIFEST_DIR")) .join("obographs") .join("examples") .join(stringify!($case)) .with_extension("yaml"); let yamlfile = File::open(yaml).unwrap(); let yamlgraphs: fastobo_graphs::model::GraphDocument = serde_yaml::from_reader(yamlfile).unwrap(); let graph = yamlgraphs.graphs.into_iter().next().unwrap(); if let Err(e) = fastobo::ast::OboDoc::from_graph(graph) { panic!("could not convert {} to OBO: {}", stringify!($case), e); } } }; } test_impl!(abox); test_impl!(basic); test_impl!(equivNodeSetTest); test_impl!(logicalDefinitionTest); test_impl!(nucleus); test_impl!(obsoletion_example); // test_impl!(ro); }