edn-rs 0.19.0

[DEPRECATED]: Crate to parse and emit EDN
Documentation
#[cfg(feature = "sets")]
#[cfg(test)]
mod tests {
    extern crate alloc;

    use alloc::collections::{BTreeMap, BTreeSet};

    use edn_rs::{Edn, List, Map, Set, Vector, edn, set};

    #[test]
    fn parse_empty_structures() {
        assert_eq!(edn!([]), Edn::Vector(Vector::new(Vec::new())));
        assert_eq!(edn!(()), Edn::List(List::new(Vec::new())));
        assert_eq!(edn!(#{}), Edn::Set(Set::new(BTreeSet::new())));
        assert_eq!(edn!({}), Edn::Map(Map::new(BTreeMap::new())));
    }

    #[test]
    fn parse_simple_set() {
        let expected = Edn::Set(Set::new(set! {
            Edn::Int(1),
            Edn::Double(1.2.into()),
            Edn::Int(3),
            Edn::Bool(false),
            Edn::Key(":f".to_string()),
            Edn::Nil,
            Edn::Rational("3/4".to_string())
        }));

        assert_eq!(edn!(#{1 1.2 3 false :f nil 3/4}), expected);
    }

    #[test]
    fn parse_complex_set() {
        let expected = Edn::Set(Set::new(set! {
            Edn::Int(1),
            Edn::Double(1.2.into()),
            Edn::Int(3),
            Edn::List(
                List::new( vec![
                    Edn::Bool(false),
                    Edn::Key(":f".to_string()),
                    Edn::Nil,
                    Edn::Rational("3/4".to_string())
            ])),
            Edn::Vector(
                Vector::new( vec![
                    Edn::Bool(true),
                    Edn::Key(":b".to_string()),
                    Edn::Rational("12/5".to_string())
            ]))
        }));

        assert_eq!(
            edn!(#{ 1 1.2 3 (false :f nil 3/4) [true :b 12/5]}),
            expected
        );
    }
}