mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-13 10:45:22 +00:00
62 lines
1.3 KiB
Rust
62 lines
1.3 KiB
Rust
//! Booleans.
|
|
|
|
use crate::object::Object;
|
|
use crate::object::macros::object;
|
|
use crate::reader::Reader;
|
|
use crate::reader::{Readable, ReaderContext, ReaderExt, Skippable};
|
|
|
|
impl Skippable for bool {
|
|
fn skip(r: &mut Reader<'_>, _: bool) -> Option<()> {
|
|
match r.peek_byte()? {
|
|
b't' => r.forward_tag(b"true"),
|
|
b'f' => r.forward_tag(b"false"),
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Readable<'_> for bool {
|
|
fn read(r: &mut Reader<'_>, _: &ReaderContext<'_>) -> Option<Self> {
|
|
match r.skip::<Self>(true)? {
|
|
b"true" => Some(true),
|
|
b"false" => Some(false),
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
object!(bool, Boolean);
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use crate::reader::Reader;
|
|
use crate::reader::ReaderExt;
|
|
|
|
#[test]
|
|
fn bool_true() {
|
|
assert!(
|
|
Reader::new("true".as_bytes())
|
|
.read_without_context::<bool>()
|
|
.unwrap()
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn bool_false() {
|
|
assert!(
|
|
!Reader::new("false".as_bytes())
|
|
.read_without_context::<bool>()
|
|
.unwrap()
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn bool_trailing() {
|
|
assert!(
|
|
Reader::new("trueabdf".as_bytes())
|
|
.read_without_context::<bool>()
|
|
.unwrap()
|
|
);
|
|
}
|
|
}
|