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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
named_attr!(
#[doc="
Recognize all whitespaces.
# Examples
```
# extern crate tagua_parser;
use tagua_parser::Result;
use tagua_parser::rules::whitespaces::whitespace;
# fn main () {
assert_eq!(whitespace(b\"\\n \\r\\tabc\"), Result::Done(&b\"abc\"[..], &b\"\\n \\r\\t\"[..]));
# }
```
"],
pub whitespace,
is_a!(" \t\n\r")
);
#[cfg(test)]
mod tests {
use super::super::super::internal::{
Error,
ErrorKind,
Result
};
use super::whitespace;
#[test]
fn case_whitespace_space() {
assert_eq!(whitespace(b" "), Result::Done(&b""[..], &b" "[..]));
}
#[test]
fn case_whitespace_horizontal_tabulation() {
assert_eq!(whitespace(b"\t\t\t"), Result::Done(&b""[..], &b"\t\t\t"[..]));
}
#[test]
fn case_whitespace_carriage_return_line_feed() {
assert_eq!(whitespace(b"\r\n\r\n\r\n"), Result::Done(&b""[..], &b"\r\n\r\n\r\n"[..]));
}
#[test]
fn case_whitespace_carriage_return() {
assert_eq!(whitespace(b"\r\r\r"), Result::Done(&b""[..], &b"\r\r\r"[..]));
}
#[test]
fn case_whitespace_line_feed() {
assert_eq!(whitespace(b"\n\n\n"), Result::Done(&b""[..], &b"\n\n\n"[..]));
}
#[test]
fn case_whitespace_mixed() {
assert_eq!(whitespace(b"\n \n \r\t \t\r\n\t \t\t"), Result::Done(&b""[..], &b"\n \n \r\t \t\r\n\t \t\t"[..]));
}
#[test]
fn case_whitespace_with_a_tail() {
assert_eq!(whitespace(b"\n \n \r\t \t\r\n\t \t\tabc "), Result::Done(&b"abc "[..], &b"\n \n \r\t \t\r\n\t \t\t"[..]));
}
#[test]
fn case_whitespace_too_short() {
assert_eq!(whitespace(b""), Result::Done(&b""[..], &b""[..]));
}
#[test]
fn case_invalid_whitespace_not_a_valid_whitespace() {
assert_eq!(whitespace(b"\xa0 "), Result::Error(Error::Position(ErrorKind::IsA, &b"\xa0 "[..])));
}
#[test]
fn case_invalid_whitespace_not_a_valid_character() {
assert_eq!(whitespace(b"abc\n \t"), Result::Error(Error::Position(ErrorKind::IsA, &b"abc\n \t"[..])));
}
}