Skip to main content

rsfn_file/encode/
plain.rs

1use crate::encode::Encode;
2
3/// Dados sem codificação.
4#[derive(Debug)]
5pub struct Plain {}
6
7impl Plain {
8    /// Inicia não codificador de dados.
9    pub fn new() -> Self {
10        Self {}
11    }
12}
13
14impl Default for Plain {
15    fn default() -> Self {
16        Self::new()
17    }
18}
19
20impl Encode for Plain {
21    fn encode(&self, data: &[u8]) -> Result<Vec<u8>, String> {
22        Ok(data.into())
23    }
24
25    fn decode(&self, data: &[u8]) -> Result<Vec<u8>, String> {
26        Ok(data.into())
27    }
28}
29
30#[cfg(test)]
31mod tests {
32    use rand::RngExt;
33
34    use super::*;
35
36    #[test]
37    fn encode() {
38        let mut rng = rand::rng();
39        let data: Vec<_> = (0..256).map(|_| rng.random()).collect();
40
41        let sut = Plain::default();
42        let returned = sut.encode(&data).unwrap();
43
44        assert_eq!(returned, data);
45    }
46
47    #[test]
48    fn decode() {
49        let mut rng = rand::rng();
50        let data: Vec<_> = (0..256).map(|_| rng.random()).collect();
51
52        let sut = Plain::default();
53        let returned = sut.decode(&data).unwrap();
54
55        assert_eq!(returned, data);
56    }
57}