rsip 0.4.0

SIP Rust library, parser & generator of SIP
Documentation
use rsip::common::uri::param::{Maddr, Param, Tokenizer};
use std::convert::TryInto;

mod display {
    use super::*;

    #[test]
    fn display1() {
        assert_eq!(
            Param::Maddr(Maddr::new("255.255.255.0")).to_string(),
            String::from(";maddr=255.255.255.0")
        );
    }
}

mod parser {
    use super::*;

    #[test]
    fn parser1() {
        assert_eq!(
            Tokenizer::from(("maddr".as_bytes(), Some("255.255.255.0".as_bytes()))).try_into(),
            Ok(Param::Maddr(Maddr::new("255.255.255.0")))
        );
    }

    #[test]
    fn parser2() {
        assert_eq!(
            Tokenizer::from(("maddr".as_bytes(), None,)).try_into(),
            Ok(Param::Other("maddr".into(), None))
        );
    }
}

mod tokenizer {
    use super::*;

    #[test]
    fn tokenizer1_u8() {
        assert_eq!(
            Tokenizer::tokenize(";maddr=255.255.255.255;something".as_bytes()),
            Ok((
                ";something".as_bytes(),
                ("maddr".as_bytes(), Some("255.255.255.255".as_bytes())).into()
            )),
        );
    }

    #[test]
    fn tokenizer1_str() {
        assert_eq!(
            Tokenizer::tokenize(";maddr=255.255.255.255;something"),
            Ok((";something", ("maddr", Some("255.255.255.255")).into())),
        );
    }

    #[test]
    fn tokenizer2_u8() {
        assert_eq!(
            Tokenizer::tokenize(";maddr=255.255.255.255;something".as_bytes()),
            Ok((
                ";something".as_bytes(),
                ("maddr".as_bytes(), Some("255.255.255.255".as_bytes())).into()
            )),
        );
    }

    #[test]
    fn errors1() {
        assert_eq!(
            Tokenizer::tokenize("hello".as_bytes()),
            Err(nom::Err::Error(rsip::TokenizerError::from(
                "failed to tokenize uri param: hello"
            ))),
        );
    }
}