#[macro_use]
extern crate pretty_assertions;
extern crate fastobo_graphs;
extern crate serde_json;
extern crate serde_yaml;
use std::fs::File;
use std::path::PathBuf;
use fastobo_graphs::model::GraphDocument;
use fastobo_graphs::FromGraph;
use fastobo_graphs::IntoGraph;
macro_rules! test_impl {
($($name:ident,)*) => (
pub mod into_graph {
use super::*;
macro_rules! test_impl {
($case:ident) => {
#[test]
#[ignore]
#[allow(non_snake_case)]
fn $case() {
let basename = PathBuf::from(env!("CARGO_MANIFEST_DIR"))
.join("tests")
.join("convert")
.join(stringify!($case));
let obofile = basename.with_extension("obo");
let jsonfile = File::open(basename.with_extension("json")).unwrap();
let obo = fastobo::from_file(obofile).unwrap();
let expected: GraphDocument = serde_json::from_reader(jsonfile).unwrap();
let actual = obo.into_graph().unwrap();
assert_eq!(expected, actual, "graphs do not match!")
}
}
}
$(test_impl!($name);)*
}
pub mod from_graph {
use super::*;
macro_rules! test_impl {
($case:ident) => {
#[test]
#[ignore]
#[allow(non_snake_case)]
fn $case() {
let basename = PathBuf::from(env!("CARGO_MANIFEST_DIR"))
.join("tests")
.join("convert")
.join(stringify!($case));
let obofile = basename.with_extension("obo");
let jsonfile = File::open(basename.with_extension("json")).unwrap();
let expected = fastobo::from_file(obofile).unwrap();
let doc: GraphDocument = serde_json::from_reader(jsonfile).unwrap();
let graph = doc.graphs.into_iter().next().unwrap();
let actual = fastobo::ast::OboDoc::from_graph(graph).unwrap();
assert_eq!(expected, actual, "graphs do not match!")
}
}
}
$(test_impl!($name);)*
}
)
}
test_impl!(
header_data_version,
header_date,
header_default_namespace,
header_format_version,
header_namespace_id_rule,
header_remark,
header_saved_by,
header_subsetdef,
header_synonymtypedef,
);