1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
mod parser; pub use parser::{BenParser, BenItem}; #[cfg(test)] mod tests { use super::*; #[test] fn test1() { let bs = "d3:blai-42e4:porti4711e1:rd2:id20:abcdefghij01234567895:token8:aoeusnth6:valuesl6:axje.u6:idhtnmee1:t2:aa1:y1:re".as_bytes(); let mut parser = BenParser::new(); let mut root = parser.parse(bs); assert_eq!(root.get("y").bytes(), Some("r".as_bytes())); assert_eq!(root.get("port").number(), Some(4711)); assert_eq!(root.get("t").bytes(), Some("aa".as_bytes())); assert_eq!(root.get("unknown_key"), BenItem::Error); assert_eq!(root.get("y").number(), None); assert_eq!(root.get("bla").number(), Some(-42)); let mut resp = root.get("r"); assert_eq!(resp.get("id").bytes(), Some("abcdefghij0123456789".as_bytes())); assert_eq!(resp.get("token").bytes(), Some("aoeusnth".as_bytes())); let mut values = Vec::new(); let values_el = resp.get("values"); values.extend(values_el.iter_bytes()); assert_eq!(values[0], "axje.u".as_bytes()); assert_eq!(values[1], "idhtnm".as_bytes()); } #[test] fn test2() { let mut parser = BenParser::new(); for bs in vec!["i123", "20:", "-44:", "dl4:ping0:e", "l1:12:223:33340:1231", "d4:ping4:pongttgve", "lllli30elleed3:hey3:yayee"].iter() { assert_eq!(parser.parse(bs.as_bytes()), BenItem::Error); } } }