Skip to main content

bloom_sol/tests/
serialize_deserialize.rs

1#[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        // Test invalid data
22        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); // Shorten by one byte
26        assert!(CountingBloomFilter::deserialize(&invalid).is_err());
27    }
28}