hayro_syntax/object/
bool.rs1use crate::object::Object;
4use crate::object::macros::object;
5use crate::reader::{Readable, Reader, ReaderContext, Skippable};
6
7impl Skippable for bool {
8 fn skip(r: &mut Reader<'_>, _: bool) -> Option<()> {
9 match r.peek_byte()? {
10 b't' => r.forward_tag(b"true"),
11 b'f' => r.forward_tag(b"false"),
12 _ => None,
13 }
14 }
15}
16
17impl Readable<'_> for bool {
18 fn read(r: &mut Reader<'_>, _: &ReaderContext) -> Option<Self> {
19 match r.skip_in_content_stream::<bool>()? {
20 b"true" => Some(true),
21 b"false" => Some(false),
22 _ => None,
23 }
24 }
25}
26
27object!(bool, Boolean);
28
29#[cfg(test)]
30mod tests {
31 use crate::reader::Reader;
32
33 #[test]
34 fn bool_true() {
35 assert!(
36 Reader::new("true".as_bytes())
37 .read_without_context::<bool>()
38 .unwrap()
39 );
40 }
41
42 #[test]
43 fn bool_false() {
44 assert!(
45 !Reader::new("false".as_bytes())
46 .read_without_context::<bool>()
47 .unwrap()
48 );
49 }
50
51 #[test]
52 fn bool_trailing() {
53 assert!(
54 Reader::new("trueabdf".as_bytes())
55 .read_without_context::<bool>()
56 .unwrap()
57 );
58 }
59}