Documentation
use std::io::{BufReader, Read};

use rb64::Base64Encoder;

#[test]
fn reader() {
    let buf = "abcdefg";
    let expected = "YWJjZGVmZw==";
    let mut reader = Base64Encoder::new(buf.as_bytes());

    let mut out = [0_u8; 5];
    let mut i = 0;
    while let Ok(n) = reader.read(&mut out) {
        if n == 0 {
            return;
        }
        assert_eq!(&expected.as_bytes()[i..i + n], &out[0..n]);
        i += n;
    }
}

#[test]
fn reader_huge() {
    let buf = b"a0bcdefghi".repeat(1000);
    let mut reader = Base64Encoder::new(BufReader::new(buf.as_slice()));

    let expected = rb64::encode(buf.as_slice());

    let mut out = Vec::new();
    reader.read_to_end(&mut out).unwrap();

    let out = String::from_utf8(out).unwrap();

    assert_eq!(expected.len(), out.len());
    assert_eq!(expected, &out[..]);
}