use super::Codex;
#[derive(Debug, Default, Clone, Copy)]
pub struct IdentityCodex;
impl Codex for IdentityCodex {
#[inline]
fn encode(&self, byte: u8) -> u8 {
byte
}
#[inline]
fn decode(&self, byte: u8) -> u8 {
byte
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn passes_every_byte_through() {
let c = IdentityCodex;
for b in 0u8..=255 {
assert_eq!(c.encode(b), b);
assert_eq!(c.decode(b), b);
}
}
#[test]
fn involution_holds_for_every_byte() {
let c = IdentityCodex;
for b in 0u8..=255 {
assert_eq!(c.decode(c.encode(b)), b);
}
}
}