use common::OwnedBytes; use tantivy_sstable::{Dictionary, MonotonicU64SSTable, VecU32ValueSSTable}; #[test] fn test_create_and_search_sstable() { // Create a new sstable in memory. let mut builder = Dictionary::::builder(Vec::new()).unwrap(); builder.insert(b"apple", &1).unwrap(); builder.insert(b"banana", &2).unwrap(); builder.insert(b"orange", &3).unwrap(); let sstable_bytes = builder.finish().unwrap(); // Open the sstable. let sstable = Dictionary::::from_bytes(OwnedBytes::new(sstable_bytes)).unwrap(); // Search for a key. let value = sstable.get(b"banana").unwrap(); assert_eq!(value, Some(2)); // Search for a non-existent key. let value = sstable.get(b"blub").unwrap(); assert_eq!(value, None); } #[test] fn test_custom_value_sstable() { // Create a new sstable with custom values. let mut builder = Dictionary::::builder(Vec::new()).unwrap(); builder.set_block_len(4096); // Ensure both values are in the same block builder.insert(b"first", &vec![1, 2, 3]).unwrap(); builder.insert(b"second", &vec![4, 5]).unwrap(); let sstable_bytes = builder.finish().unwrap(); // Open the sstable. let sstable = Dictionary::::from_bytes(OwnedBytes::new(sstable_bytes)).unwrap(); let mut stream = sstable.stream().unwrap(); assert!(stream.advance()); assert_eq!(stream.key(), b"first"); assert_eq!(stream.value(), &vec![1, 2, 3]); assert!(stream.advance()); assert_eq!(stream.key(), b"second"); assert_eq!(stream.value(), &vec![4, 5]); assert!(!stream.advance()); }