| use super::streaming::*; |
| use crate::error::ErrorKind; |
| use crate::internal::{Err, IResult}; |
| |
| #[test] |
| fn one_of_test() { |
| fn f(i: &[u8]) -> IResult<&[u8], char> { |
| one_of("ab")(i) |
| } |
| |
| let a = &b"abcd"[..]; |
| assert_eq!(f(a), Ok((&b"bcd"[..], 'a'))); |
| |
| let b = &b"cde"[..]; |
| assert_eq!(f(b), Err(Err::Error(error_position!(b, ErrorKind::OneOf)))); |
| |
| fn utf8(i: &str) -> IResult<&str, char> { |
| one_of("+\u{FF0B}")(i) |
| } |
| |
| assert!(utf8("+").is_ok()); |
| assert!(utf8("\u{FF0B}").is_ok()); |
| } |
| |
| #[test] |
| fn none_of_test() { |
| fn f(i: &[u8]) -> IResult<&[u8], char> { |
| none_of("ab")(i) |
| } |
| |
| let a = &b"abcd"[..]; |
| assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::NoneOf)))); |
| |
| let b = &b"cde"[..]; |
| assert_eq!(f(b), Ok((&b"de"[..], 'c'))); |
| } |
| |
| #[test] |
| fn char_byteslice() { |
| fn f(i: &[u8]) -> IResult<&[u8], char> { |
| char('c')(i) |
| } |
| |
| let a = &b"abcd"[..]; |
| assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::Char)))); |
| |
| let b = &b"cde"[..]; |
| assert_eq!(f(b), Ok((&b"de"[..], 'c'))); |
| } |
| |
| #[test] |
| fn char_str() { |
| fn f(i: &str) -> IResult<&str, char> { |
| char('c')(i) |
| } |
| |
| let a = &"abcd"[..]; |
| assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::Char)))); |
| |
| let b = &"cde"[..]; |
| assert_eq!(f(b), Ok((&"de"[..], 'c'))); |
| } |