kvds/
lib.rs

1//! # Key Value Document Store (KVDS)
2//!
3//! An efficient key-value store for encoding documents.
4//!
5//! For more information, read the README in the [repository](https://github.com/sh4338/kvds).
6
7mod decode;
8mod decode_from_file;
9mod encode;
10mod encode_to_file;
11
12pub use decode::*;
13pub use decode_from_file::*;
14pub use encode::*;
15pub use encode_to_file::*;
16
17#[cfg(test)]
18mod tests {
19    #[test]
20    fn encode_decode() {
21        let data = vec![
22            (1u8, "one".as_bytes().to_vec()),
23            (2u8, "two".as_bytes().to_vec()),
24            (3u8, "three".as_bytes().to_vec()),
25            (1u8, "😀".as_bytes().to_vec()),
26            (5u8, vec![46u8, 134u8, 67u8, 9u8]),
27        ];
28        let original = data.clone();
29        let encoded = crate::encode(data).unwrap();
30        println!("{:?}", encoded);
31        assert_eq!(crate::decode(encoded).unwrap(), original);
32    }
33
34    #[test]
35    fn encode_decode_large() {
36        let mut vec = Vec::new();
37
38        for _ in 1..=u16::max_value() {
39            vec.push(5u8);
40        }
41
42        println!("{}", u16::max_value());
43
44        let data = vec![(4, vec)];
45        let original = data.clone();
46        let encoded = crate::encode(data).unwrap();
47        //        println!("{:?}", encoded[0..=500].to_vec());
48        assert_eq!(crate::decode(encoded).unwrap(), original);
49
50        let mut vec = Vec::new();
51
52        for _ in 1..=(u32::from(u16::max_value()) + 5) {
53            vec.push(5u8);
54        }
55
56        println!("{}", u16::max_value());
57
58        let data = vec![(4, vec)];
59        let original = data.clone();
60        let encoded = crate::encode(data).unwrap();
61        //        println!("{:?}", encoded[0..=500].to_vec());
62        assert_eq!(crate::decode(encoded).unwrap(), original);
63    }
64}