From 83a57e7ada53cd7ab7cebfb6e59c0b713402ef5b Mon Sep 17 00:00:00 2001 From: Yuheng Chen Date: Sun, 31 May 2015 17:02:22 +0800 Subject: [PATCH] Export API --- saphyr/src/emitter.rs | 1 - saphyr/src/lib.rs | 64 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 62 insertions(+), 3 deletions(-) diff --git a/saphyr/src/emitter.rs b/saphyr/src/emitter.rs index 650d921..4601ba2 100644 --- a/saphyr/src/emitter.rs +++ b/saphyr/src/emitter.rs @@ -233,7 +233,6 @@ a7: 你好 let docs_new = YamlLoader::load_from_str(&s).unwrap(); let doc_new = &docs_new[0]; - println!("{}", writer); assert_eq!(doc, doc_new); } } diff --git a/saphyr/src/lib.rs b/saphyr/src/lib.rs index 09a6542..120adb2 100644 --- a/saphyr/src/lib.rs +++ b/saphyr/src/lib.rs @@ -3,6 +3,66 @@ pub mod scanner; pub mod parser; pub mod emitter; -#[test] -fn it_works() { +// reexport key APIs +pub use scanner::ScanError; +pub use parser::Event; +pub use yaml::{Yaml, YamlLoader}; +pub use emitter::{YamlEmitter, EmitError}; + +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn test_api() { + let s = +" +# from yaml-cpp example +- name: Ogre + position: [0, 5, 0] + powers: + - name: Club + damage: 10 + - name: Fist + damage: 8 +- name: Dragon + position: [1, 0, 10] + powers: + - name: Fire Breath + damage: 25 + - name: Claws + damage: 15 +- name: Wizard + position: [5, -3, 0] + powers: + - name: Acid Rain + damage: 50 + - name: Staff + damage: 3 +"; + let docs = YamlLoader::load_from_str(s).unwrap(); + let doc = &docs[0]; + + assert_eq!(doc[0]["name"].as_str().unwrap(), "Ogre"); + + let mut writer = String::new(); + { + let mut emitter = YamlEmitter::new(&mut writer); + emitter.dump(doc).unwrap(); + } + + assert!(writer.len() > 0); + } + + #[test] + fn test_fail() { + let s = +" +# syntax error +scalar +key: [1, 2]] +key1:a2 +"; + assert!(YamlLoader::load_from_str(s).is_err()); + } + }