1pub mod de;
2pub mod se;
3pub mod value;
4pub mod errors;
5
6extern crate pest;
7#[macro_use]
8extern crate pest_derive;
9
10#[cfg(test)]
11mod tests {
12 use crate::de::deserialize;
13 use crate::se::serialize;
14 use crate::value::Primitive;
15 use crate::value::TySONValue;
16
17 #[test]
18 fn de_se() {
19 let data = r#"
20 l|123|: hash{|s|: s|100|; a:s|100|};
21 l|124|: hash{c|1|: s|100|, b|2|:s|100|},
22 l|123|: ll[d|1|, e|2|],
23 "#;
24
25 let des = deserialize(data.to_string()).unwrap();
26 println!("{:?}", des.items());
27 assert_eq!(*des.items(), vec![(Primitive("l".to_string(), "123".to_string()),
28 TySONValue::Map("hash".to_string(),
29 vec![(Primitive("".to_string(), "s".to_string()),
30 TySONValue::Primitive(Primitive("s".to_string(), "100".to_string()))),
31 (Primitive("a".to_string(), "".to_string()),
32 TySONValue::Primitive(Primitive("s".to_string(), "100".to_string())))])),
33 (Primitive("l".to_string(), "124".to_string()),
34 TySONValue::Map("hash".to_string(), vec![(Primitive("c".to_string(), "1".to_string()),
35 TySONValue::Primitive(Primitive("s".to_string(), "100".to_string()))),
36 (Primitive("b".to_string(), "2".to_string()),
37 TySONValue::Primitive(Primitive("s".to_string(), "100".to_string())))])),
38 (Primitive("l".to_string(), "123".to_string()),
39 TySONValue::Vector("ll".to_string(), vec![TySONValue::Primitive(Primitive("d".to_string(), "1".to_string())),
40 TySONValue::Primitive(Primitive("e".to_string(), "2".to_string()))]))]);
41 assert_eq!(serialize(&des), "l|123|:hash{|s|:s|100|,a:s|100|};l|124|:hash{c|1|:s|100|,b|2|:s|100|};l|123|:ll[d|1|,e|2|]".to_string())
42 }
43}