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
use nom::{branch::alt, character::complete::char, combinator::map, IResult};
#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub enum StatusMark {
Unmarked,
Pending,
Cleared,
}
pub(crate) fn status_mark(i: &str) -> IResult<&str, StatusMark> {
alt((
map(char('!'), |_| StatusMark::Pending),
map(char('*'), |_| StatusMark::Cleared),
))(i)
}
#[test]
fn it_should_parse_valid_status_marks() {
assert_eq!(status_mark("!"), Ok(("", StatusMark::Pending)));
assert_eq!(status_mark("*"), Ok(("", StatusMark::Cleared)));
}
#[test]
fn it_should_fail_otherwise() {
assert!(status_mark("").is_err());
assert!(status_mark("(").is_err());
}