From 140af50536ebc32ae6461852daa2df0fc2d197ca Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Sun, 10 Nov 2024 17:57:05 +0000 Subject: implement reader testing --- src/reader.rs | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 116 insertions(+), 1 deletion(-) (limited to 'src/reader.rs') diff --git a/src/reader.rs b/src/reader.rs index b51489f..bca8edd 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -339,7 +339,7 @@ impl Reader { } } text.map(|text| content.push(Content::Text(text))); - todo!() + Ok(content) } } @@ -422,3 +422,118 @@ impl Reader { // todo!() // } // } + +#[cfg(test)] +mod test { + use tokio::io::AsyncRead; + + use super::Reader; + + struct MockAsyncReader<'s>(&'s str); + + impl<'s> MockAsyncReader<'s> { + fn new(data: &'s str) -> Self { + Self(data) + } + } + + impl<'s> AsyncRead for MockAsyncReader<'s> { + fn poll_read( + self: std::pin::Pin<&mut Self>, + _cx: &mut std::task::Context<'_>, + buf: &mut tokio::io::ReadBuf<'_>, + ) -> std::task::Poll> { + buf.put_slice(self.0.as_bytes()); + std::task::Poll::Ready(Ok(())) + } + } + + #[tokio::test] + async fn test_element_read() { + let mock = MockAsyncReader::new( + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + asdf +", + ); + let mut reader = Reader::new(mock); + let element = reader.read_element().await.unwrap(); + println!("{:#?}", element); + } +} -- cgit