tyson/
lib.rs

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}