density_rs/
lib.rs

1pub mod codec;
2pub mod algorithms;
3pub mod buffer;
4pub mod errors;
5pub mod io;
6
7pub(crate) const BYTE_SIZE_U16: usize = size_of::<u16>();
8pub(crate) const BYTE_SIZE_U32: usize = size_of::<u32>();
9pub(crate) const BYTE_SIZE_U128: usize = size_of::<u128>();
10pub(crate) const BIT_SIZE_U16: usize = BYTE_SIZE_U16 << 3;
11pub(crate) const BIT_SIZE_U32: usize = BYTE_SIZE_U32 << 3;
12
13#[cfg(test)]
14mod tests {
15    use crate::algorithms::chameleon::chameleon::Chameleon;
16    use crate::algorithms::cheetah::cheetah::Cheetah;
17    use crate::algorithms::lion::lion::Lion;
18
19    const TEST_DATA: &str = "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttestt";
20
21    #[test]
22    fn chameleon() {
23        let mut out_mem = vec![0; TEST_DATA.len()];
24
25        // Encoding
26        match Chameleon::encode(TEST_DATA.as_bytes(), &mut out_mem) {
27            Ok(size) => {
28                assert_eq!(&out_mem[0..size], [0xfe, 0xff, 0xff, 0x7f, 0, 0, 0, 0, 116, 101, 115, 116, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 112, 251, 116]);
29
30                // Decoding
31                let mut dec_mem = vec![0; TEST_DATA.len()];
32                match Chameleon::decode(&out_mem[0..size], &mut dec_mem) {
33                    Ok(size) => {
34                        assert_eq!(&dec_mem[0..size], TEST_DATA.as_bytes());
35                    }
36                    Err(_) => { assert!(false); }
37                }
38            }
39            Err(_) => { assert!(false); }
40        }
41    }
42
43    #[test]
44    fn cheetah() {
45        let mut out_mem = vec![0; TEST_DATA.len()];
46
47        // Encoding
48        match Cheetah::encode(TEST_DATA.as_bytes(), &mut out_mem) {
49            Ok(size) => {
50                assert_eq!(&out_mem[0..size], [244, 255, 255, 255, 255, 255, 255, 63, 116, 101, 115, 116, 112, 251, 116]);
51
52                // Decoding
53                let mut dec_mem = vec![0; TEST_DATA.len()];
54                match Cheetah::decode(&out_mem[0..size], &mut dec_mem) {
55                    Ok(size) => {
56                        assert_eq!(&dec_mem[0..size], TEST_DATA.as_bytes());
57                    }
58                    Err(_) => { assert!(false); }
59                }
60            }
61            Err(_) => { assert!(false); }
62        }
63    }
64
65    #[test]
66    fn lion() {
67        let mut out_mem = vec![0; TEST_DATA.len()];
68
69        // Encoding
70        match Lion::encode(TEST_DATA.as_bytes(), &mut out_mem) {
71            Ok(size) => {
72                assert_eq!(&out_mem[0..size], [112, 146, 36, 73, 146, 36, 116, 101, 115, 116, 112, 251, 73, 146, 36, 73, 146, 4, 116]);
73
74                // Decoding
75                let mut dec_mem = vec![0; TEST_DATA.len()];
76                match Lion::decode(&out_mem[0..size], &mut dec_mem) {
77                    Ok(size) => {
78                        assert_eq!(&dec_mem[0..size], TEST_DATA.as_bytes());
79                    }
80                    Err(_) => { assert!(false); }
81                }
82            }
83            Err(_) => { assert!(false); }
84        }
85    }
86}
87