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