Finish documentation and tests
This commit is contained in:
parent
bd8cb8200b
commit
c5e302c9b0
@ -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!");
|
||||
}
|
||||
```
|
||||
|
@ -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<R: Read, W: Write> {
|
||||
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();
|
||||
|
@ -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<R: Read, W: Write> {
|
||||
reader: R,
|
||||
writer: W,
|
||||
@ -82,6 +96,7 @@ impl<R: Read, W: Write> Encoder<R, W> {
|
||||
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());
|
||||
|
Loading…
Reference in New Issue
Block a user