insta/content/yaml/vendored/
mod.rs
1#![allow(unused)]
9
10pub mod emitter;
11pub mod parser;
12pub mod scanner;
13pub mod yaml;
14
15pub use self::yaml::Yaml;
16
17#[cfg(test)]
18mod tests {
19 use super::*;
20
21 use crate::content::yaml::vendored::emitter::YamlEmitter;
22 use crate::content::yaml::vendored::scanner::ScanError;
23 use crate::content::yaml::vendored::yaml::YamlLoader;
24
25 #[test]
26 fn test_api() {
27 let s = "
28# from yaml-cpp example
29- name: Ogre
30 position: [0, 5, 0]
31 powers:
32 - name: Club
33 damage: 10
34 - name: Fist
35 damage: 8
36- name: Dragon
37 position: [1, 0, 10]
38 powers:
39 - name: Fire Breath
40 damage: 25
41 - name: Claws
42 damage: 15
43- name: Wizard
44 position: [5, -3, 0]
45 powers:
46 - name: Acid Rain
47 damage: 50
48 - name: Staff
49 damage: 3
50";
51 let docs = YamlLoader::load_from_str(s).unwrap();
52 let doc = &docs[0];
53
54 assert_eq!(doc[0]["name"].as_str().unwrap(), "Ogre");
55
56 let mut writer = String::new();
57 {
58 let mut emitter = YamlEmitter::new(&mut writer);
59 emitter.dump(doc).unwrap();
60 }
61
62 assert!(!writer.is_empty());
63 }
64
65 fn try_fail(s: &str) -> Result<Vec<Yaml>, ScanError> {
66 let t = YamlLoader::load_from_str(s)?;
67 Ok(t)
68 }
69
70 #[test]
71 fn test_fail() {
72 let s = "
73# syntax error
74scalar
75key: [1, 2]]
76key1:a2
77";
78 assert!(YamlLoader::load_from_str(s).is_err());
79 assert!(try_fail(s).is_err());
80 }
81}