From c5e302c9b05ff3ff91fe1cbba2fe42a903c1abaf Mon Sep 17 00:00:00 2001 From: Nathan Fisher Date: Fri, 10 Jan 2025 23:56:18 -0500 Subject: [PATCH] Finish documentation and tests --- README.md | 3 +-- src/decode.rs | 34 ++++++++++++++---------- src/encode.rs | 19 +++++++++++-- {src/testdata => testdata}/lorem.txt | 0 {src/testdata => testdata}/lorem_b64.txt | 0 5 files changed, 38 insertions(+), 18 deletions(-) rename {src/testdata => testdata}/lorem.txt (100%) rename {src/testdata => testdata}/lorem_b64.txt (100%) diff --git a/README.md b/README.md index 70a3d0a..6f62caf 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,6 @@ use { fn main() { let mut decoder = Decoder::new("SGVsbG8sIFdvcmxkIQ==".as_bytes(), vec![], None, false); - let output = decoder.decode().unwrap(); - assert_eq!(&output, b"Hello, World!"); + assert_eq!(decoder.decode().unwrap(), b"Hello, World!"); } ``` diff --git a/src/decode.rs b/src/decode.rs index 7b7950d..777b290 100644 --- a/src/decode.rs +++ b/src/decode.rs @@ -4,6 +4,18 @@ use { }; /// Decodes b64 encoded data +/// # Exammple +/// ``` +/// # use { +/// # std::io::Read, +/// # b64::Decoder, +/// # }; +/// # +/// # fn main() { +/// let mut decoder = Decoder::new("SGVsbG8sIFdvcmxkIQ==".as_bytes(), vec![], None, false); +/// assert_eq!(decoder.decode().unwrap(), b"Hello, World!"); +/// # } +/// ``` pub struct Decoder { reader: R, writer: W, @@ -107,31 +119,25 @@ mod tests { #[test] fn decode() { let mut decoder = Decoder::new("SGVsbG8sIFdvcmxk".as_bytes(), vec![], None, false); - let mut output = decoder.decode().unwrap(); - assert_eq!(output.clone(), b"Hello, World"); - output.clear(); - decoder = Decoder::new("SGVsbG8sIFdvcmxkIQ==".as_bytes(), output, None, false); - output = decoder.decode().unwrap(); - assert_eq!(output.clone(), b"Hello, World!"); - output.clear(); - decoder = Decoder::new("SGVsbG8sIFdvcmxkIQo=".as_bytes(), output, None, false); - output = decoder.decode().unwrap(); - assert_eq!(output, b"Hello, World!\n"); + assert_eq!(decoder.decode().unwrap(), b"Hello, World"); + decoder = Decoder::new("SGVsbG8sIFdvcmxkIQ==".as_bytes(), vec![], None, false); + assert_eq!(decoder.decode().unwrap(), b"Hello, World!"); + decoder = Decoder::new("SGVsbG8sIFdvcmxkIQo=".as_bytes(), vec![], None, false); + assert_eq!(decoder.decode().unwrap(), b"Hello, World!\n"); } #[test] fn ignore_whitespace() { let decoder = Decoder::new(" SG\tVsbG8sIFdvcmxkIQ==".as_bytes(), vec![], None, true); - let output = decoder.decode().unwrap(); - assert_eq!(output, b"Hello, World!"); + assert_eq!(decoder.decode().unwrap(), b"Hello, World!"); } #[test] fn decode_wrapped() { - let infile = File::open("src/testdata/lorem_b64.txt").unwrap(); + let infile = File::open("testdata/lorem_b64.txt").unwrap(); let reader = BufReader::new(infile); let mut outfile = vec![]; - File::open("src/testdata/lorem.txt") + File::open("testdata/lorem.txt") .unwrap() .read_to_end(&mut outfile) .unwrap(); diff --git a/src/encode.rs b/src/encode.rs index f2bcc2d..7293373 100644 --- a/src/encode.rs +++ b/src/encode.rs @@ -4,6 +4,20 @@ use { }; /// Encodes arbitraty data as b64 encoded ASCII text +/// # Example +/// +/// ``` +/// # use { +/// # std::io::Read, +/// # b64::Encoder, +/// # }; +/// # +/// # fn main() { +/// let mut encoder = Encoder::new("Hello, World!".as_bytes(), vec![], None, Some(76)); +/// encoder.encode().unwrap(); +/// assert_eq!(encoder.output(), b"SGVsbG8sIFdvcmxkIQ=="); +/// # } +/// ``` pub struct Encoder { reader: R, writer: W, @@ -82,6 +96,7 @@ impl Encoder { break; } } + self.writer.flush()?; Ok(()) } } @@ -114,9 +129,9 @@ mod tests { #[test] fn wrapping() { - let infile = File::open("src/testdata/lorem.txt").unwrap(); + let infile = File::open("testdata/lorem.txt").unwrap(); let reader = BufReader::new(infile); - let outfile = fs::read_to_string("src/testdata/lorem_b64.txt").unwrap(); + let outfile = fs::read_to_string("testdata/lorem_b64.txt").unwrap(); let mut encoder = Encoder::new(reader, vec![], None, Some(76)); encoder.encode().unwrap(); assert_eq!(encoder.writer, outfile.as_bytes()); diff --git a/src/testdata/lorem.txt b/testdata/lorem.txt similarity index 100% rename from src/testdata/lorem.txt rename to testdata/lorem.txt diff --git a/src/testdata/lorem_b64.txt b/testdata/lorem_b64.txt similarity index 100% rename from src/testdata/lorem_b64.txt rename to testdata/lorem_b64.txt