1 use super::streaming::*;
2 use crate::error::ErrorKind;
3 use crate::internal::{Err, IResult};
4 
5 #[test]
one_of_test()6 fn one_of_test() {
7   fn f(i: &[u8]) -> IResult<&[u8], char> {
8     one_of("ab")(i)
9   }
10 
11   let a = &b"abcd"[..];
12   assert_eq!(f(a), Ok((&b"bcd"[..], 'a')));
13 
14   let b = &b"cde"[..];
15   assert_eq!(f(b), Err(Err::Error(error_position!(b, ErrorKind::OneOf))));
16 
17   fn utf8(i: &str) -> IResult<&str, char> {
18     one_of("+\u{FF0B}")(i)
19   }
20 
21   assert!(utf8("+").is_ok());
22   assert!(utf8("\u{FF0B}").is_ok());
23 }
24 
25 #[test]
none_of_test()26 fn none_of_test() {
27   fn f(i: &[u8]) -> IResult<&[u8], char> {
28     none_of("ab")(i)
29   }
30 
31   let a = &b"abcd"[..];
32   assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::NoneOf))));
33 
34   let b = &b"cde"[..];
35   assert_eq!(f(b), Ok((&b"de"[..], 'c')));
36 }
37 
38 #[test]
char_byteslice()39 fn char_byteslice() {
40   fn f(i: &[u8]) -> IResult<&[u8], char> {
41     char('c')(i)
42   }
43 
44   let a = &b"abcd"[..];
45   assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::Char))));
46 
47   let b = &b"cde"[..];
48   assert_eq!(f(b), Ok((&b"de"[..], 'c')));
49 }
50 
51 #[test]
char_str()52 fn char_str() {
53   fn f(i: &str) -> IResult<&str, char> {
54     char('c')(i)
55   }
56 
57   let a = &"abcd"[..];
58   assert_eq!(f(a), Err(Err::Error(error_position!(a, ErrorKind::Char))));
59 
60   let b = &"cde"[..];
61   assert_eq!(f(b), Ok((&"de"[..], 'c')));
62 }
63