Merge pull request #112 from xfix/add-testing-input-output-identity-in-quickcheck

Add testing whether load(dump(x)) is an identity in quickcheck
This commit is contained in:
David Tolnay 2018-09-15 12:23:08 -07:00 committed by GitHub
commit ec00203abb

View file

@ -9,13 +9,14 @@ use yaml_rust::{Yaml, YamlEmitter, YamlLoader};
quickcheck! { quickcheck! {
fn test_check_weird_keys(xs: Vec<String>) -> TestResult { fn test_check_weird_keys(xs: Vec<String>) -> TestResult {
let mut out_str = String::new(); let mut out_str = String::new();
let input = Yaml::Array(xs.into_iter().map(Yaml::String).collect());
{ {
let mut emitter = YamlEmitter::new(&mut out_str); let mut emitter = YamlEmitter::new(&mut out_str);
emitter.dump(&Yaml::Array(xs.into_iter().map(Yaml::String).collect())).unwrap(); emitter.dump(&input).unwrap();
} }
if let Err(err) = YamlLoader::load_from_str(&out_str) { match YamlLoader::load_from_str(&out_str) {
return TestResult::error(err.description()); Ok(output) => TestResult::from_bool(output.len() == 1 && input == output[0]),
Err(err) => TestResult::error(err.description()),
} }
TestResult::passed()
} }
} }