bloom_sol/tests/
serialize_deserialize.rs1#[cfg(test)]
2mod tests {
3 use crate::bloom_sol::struct_def::CountingBloomFilter;
4 #[test]
5 fn test_serialize_deserialize() {
6 let mut cbf = CountingBloomFilter::new(1000, 5, false);
7 cbf.insert(&"apple");
8 cbf.insert(&"banana");
9
10 let serialized = cbf.serialize();
11 let deserialized = CountingBloomFilter::deserialize(&serialized).unwrap();
12
13 assert_eq!(deserialized.size, cbf.size);
14 assert_eq!(deserialized.boolean_counting, cbf.boolean_counting);
15 assert_eq!(deserialized.num_hashes, cbf.num_hashes);
16 assert_eq!(deserialized.counters, cbf.counters);
17
18 assert!(deserialized.contains(&"apple"));
19 assert!(deserialized.contains(&"banana"));
20
21 assert!(CountingBloomFilter::deserialize(&[]).is_err());
23 assert!(CountingBloomFilter::deserialize(&[0u8; 15]).is_err());
24 let mut invalid = serialized.clone();
25 invalid.truncate(invalid.len() - 1); assert!(CountingBloomFilter::deserialize(&invalid).is_err());
27 }
28}