Overall code cleanup
This commit is contained in:
parent
26f0e5ed4a
commit
bd8cb8200b
@ -72,16 +72,15 @@ impl<R: Read, W: Write> Decoder<R, W> {
|
||||
}
|
||||
let mut bytes = 0;
|
||||
for (i, &c) in in_buf.iter().enumerate() {
|
||||
let c = c.into();
|
||||
num <<= 6;
|
||||
if c == char::from(self.alphabet.pad()) {
|
||||
if c == self.alphabet.pad() {
|
||||
continue;
|
||||
}
|
||||
if i != bytes {
|
||||
return Err(Error::IllegalChar(c));
|
||||
return Err(Error::IllegalChar(c.into()));
|
||||
}
|
||||
let Some(idx) = self.alphabet.get(c) else {
|
||||
return Err(Error::IllegalChar(c));
|
||||
return Err(Error::IllegalChar(c.into()));
|
||||
};
|
||||
num |= u32::try_from(idx)?;
|
||||
bytes += 1;
|
||||
@ -109,22 +108,22 @@ mod tests {
|
||||
fn decode() {
|
||||
let mut decoder = Decoder::new("SGVsbG8sIFdvcmxk".as_bytes(), vec![], None, false);
|
||||
let mut output = decoder.decode().unwrap();
|
||||
assert_eq!(String::from_utf8(output.clone()).unwrap(), "Hello, World");
|
||||
assert_eq!(output.clone(), b"Hello, World");
|
||||
output.clear();
|
||||
decoder = Decoder::new("SGVsbG8sIFdvcmxkIQ==".as_bytes(), output, None, false);
|
||||
output = decoder.decode().unwrap();
|
||||
assert_eq!(String::from_utf8(output.clone()).unwrap(), "Hello, World!");
|
||||
assert_eq!(output.clone(), b"Hello, World!");
|
||||
output.clear();
|
||||
decoder = Decoder::new("SGVsbG8sIFdvcmxkIQo=".as_bytes(), output, None, false);
|
||||
output = decoder.decode().unwrap();
|
||||
assert_eq!(String::from_utf8(output).unwrap(), "Hello, World!\n");
|
||||
assert_eq!(output, 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!(String::from_utf8(output.clone()).unwrap(), "Hello, World!");
|
||||
assert_eq!(output, b"Hello, World!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -69,21 +69,14 @@ impl<R: Read, W: Write> Encoder<R, W> {
|
||||
}
|
||||
if let Some(wrap) = self.wrap {
|
||||
for idx in 0..=3 {
|
||||
write!(self.writer, "{}", char::from(obuf[idx]))?;
|
||||
self.writer.write_all(&[obuf[idx]])?;
|
||||
total += 1;
|
||||
if total % wrap == 0 {
|
||||
writeln!(self.writer)?;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
write!(
|
||||
self.writer,
|
||||
"{}{}{}{}",
|
||||
char::from(obuf[0]),
|
||||
char::from(obuf[1]),
|
||||
char::from(obuf[2]),
|
||||
char::from(obuf[3])
|
||||
)?;
|
||||
self.writer.write_all(&obuf)?;
|
||||
}
|
||||
if outlen < 4 {
|
||||
break;
|
||||
@ -105,7 +98,7 @@ mod tests {
|
||||
fn encode() {
|
||||
let mut encoder = Encoder::new("Hello, World".as_bytes(), vec![], None, None);
|
||||
encoder.encode().unwrap();
|
||||
assert_eq!(encoder.writer, "SGVsbG8sIFdvcmxk".as_bytes());
|
||||
assert_eq!(encoder.writer, b"SGVsbG8sIFdvcmxk");
|
||||
encoder = Encoder {
|
||||
reader: "Hello, World!".as_bytes(),
|
||||
writer: vec![],
|
||||
@ -113,10 +106,10 @@ mod tests {
|
||||
wrap: None,
|
||||
};
|
||||
encoder.encode().unwrap();
|
||||
assert_eq!(encoder.writer, "SGVsbG8sIFdvcmxkIQ==".as_bytes());
|
||||
assert_eq!(encoder.writer, b"SGVsbG8sIFdvcmxkIQ==");
|
||||
encoder = Encoder::new("Hello, World!\n".as_bytes(), vec![], None, None);
|
||||
encoder.encode().unwrap();
|
||||
assert_eq!(encoder.writer, "SGVsbG8sIFdvcmxkIQo=".as_bytes());
|
||||
assert_eq!(encoder.writer, b"SGVsbG8sIFdvcmxkIQo=");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -33,9 +33,9 @@ impl Default for B64Alphabet {
|
||||
}
|
||||
|
||||
impl B64Alphabet {
|
||||
pub(crate) fn get(&self, c: char) -> Option<usize> {
|
||||
pub(crate) fn get(&self, c: u8) -> Option<usize> {
|
||||
for (idx, x) in self.items.iter().enumerate() {
|
||||
if char::from(*x) == c {
|
||||
if *x == c {
|
||||
return Some(idx);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user