shardline_protocol/
text.rs1#[must_use]
3pub fn parse_bool(value: &str) -> Option<bool> {
4 match value {
5 "true" | "1" | "yes" | "on" => Some(true),
6 "false" | "0" | "no" | "off" => Some(false),
7 _other => None,
8 }
9}
10
11#[cfg(test)]
12mod tests {
13 #[test]
14 fn parse_true_strings() {
15 assert_eq!(super::parse_bool("true"), Some(true));
16 assert_eq!(super::parse_bool("1"), Some(true));
17 assert_eq!(super::parse_bool("yes"), Some(true));
18 assert_eq!(super::parse_bool("on"), Some(true));
19 }
20
21 #[test]
22 fn parse_false_strings() {
23 assert_eq!(super::parse_bool("false"), Some(false));
24 assert_eq!(super::parse_bool("0"), Some(false));
25 assert_eq!(super::parse_bool("no"), Some(false));
26 assert_eq!(super::parse_bool("off"), Some(false));
27 }
28
29 #[test]
30 fn case_sensitive_true() {
31 assert_eq!(super::parse_bool("True"), None);
32 }
33
34 #[test]
35 fn parse_empty() {
36 assert_eq!(super::parse_bool(""), None);
37 }
38
39 #[test]
40 fn parse_invalid() {
41 assert_eq!(super::parse_bool("invalid"), None);
42 }
43
44 #[test]
45 fn parse_trailing_whitespace() {
46 assert_eq!(super::parse_bool("yes "), None);
47 }
48}