1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
#[macro_use] extern crate serde_derive; pub mod spec; #[cfg(test)] mod tests { use crate::spec::*; use glob::glob; use serde_json; use std::fs::File; #[test] fn config_good() { let mut count = 0; for entry in glob("../runtime-spec/schema/test/config/good/*.json").unwrap() { let entry = entry.unwrap(); let msg = format!("good file {}", &entry.display()); let json = File::open(&entry).expect(&format!("opening {}", &msg)); let _config: ConfigSchema = serde_json::from_reader(&json).expect(&format!("parsing {:?}", &msg)); count += 1; } assert_eq!(4, count); } #[test] fn config_bad() { let mut count = 0; for entry in glob("../runtime-spec/schema/test/config/bad/*.json").unwrap() { let entry = entry.unwrap(); let msg = format!("bad file {}", &entry.display()); let json = File::open(&entry).expect(&format!("opening {}", &msg)); let res: Result<ConfigSchema, serde_json::Error> = serde_json::from_reader(&json); res.expect_err(&format!("should not parse {:?}", &msg)); count += 1; } assert_eq!(2, count); } #[test] fn state_good() { let mut count = 0; for entry in glob("../runtime-spec/schema/test/state/good/*.json").unwrap() { let entry = entry.unwrap(); let msg = format!("good file {}", &entry.display()); let json = File::open(&entry).expect(&format!("opening {}", &msg)); let _state: StateSchema = serde_json::from_reader(&json).expect(&format!("parsing {:?}", &msg)); count += 1; } assert_eq!(1, count); } #[test] fn state_bad() { let mut count = 0; for entry in glob("../runtime-spec/schema/test/state/bad/*.json").unwrap() { let entry = entry.unwrap(); let msg = format!("bad file {}", &entry.display()); let json = File::open(&entry).expect(&format!("opening {}", &msg)); let res: Result<StateSchema, serde_json::Error> = serde_json::from_reader(&json); res.expect_err(&format!("should not parse {:?}", &msg)); count += 1; } assert_eq!(1, count); } }