From b8c8cda1d6f5e555d5dda47bae31a65f10c1e514 Mon Sep 17 00:00:00 2001 From: Sayan Nandan Date: Tue, 31 Aug 2021 10:01:57 -0700 Subject: [PATCH] Add tests for list-based maps --- server/src/corestore/htable.rs | 6 ++++++ server/src/storage/iter.rs | 3 --- server/src/storage/mod.rs | 2 +- server/src/storage/tests.rs | 25 ++++++++++++++++++++++++- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/server/src/corestore/htable.rs b/server/src/corestore/htable.rs index 85e5e2c3..e5932449 100644 --- a/server/src/corestore/htable.rs +++ b/server/src/corestore/htable.rs @@ -244,6 +244,12 @@ pub struct Data { blob: Bytes, } +impl PartialEq for Data { + fn eq(&self, oth: &str) -> bool { + self.blob.eq(oth) + } +} + impl Data { /// Create a new blob from a string pub fn from_string(val: String) -> Self { diff --git a/server/src/storage/iter.rs b/server/src/storage/iter.rs index 530d8d82..278fb247 100644 --- a/server/src/storage/iter.rs +++ b/server/src/storage/iter.rs @@ -178,9 +178,6 @@ impl<'a> RawSliceIterBorrowed<'a> { fn remaining(&self) -> usize { unsafe { self.end_ptr.offset_from(self.cursor) as usize } } - unsafe fn incr_cursor(&mut self) { - self.incr_cursor_by(1) - } /// Increment the cursor by the provided length unsafe fn incr_cursor_by(&mut self, ahead: usize) { { diff --git a/server/src/storage/mod.rs b/server/src/storage/mod.rs index 345ed61f..c7c9ec39 100644 --- a/server/src/storage/mod.rs +++ b/server/src/storage/mod.rs @@ -262,7 +262,7 @@ mod se { } pub fn raw_serialize_list_map<'a, W, T: 'a, U: 'a>( w: &mut W, - data: Coremap, + data: &Coremap, ) -> IoResult<()> where W: Write, diff --git a/server/src/storage/tests.rs b/server/src/storage/tests.rs index 3348eb62..2680c5c4 100644 --- a/server/src/storage/tests.rs +++ b/server/src/storage/tests.rs @@ -306,7 +306,7 @@ mod flush_routines { mod list_tests { use super::iter::RawSliceIter; use super::{de, se}; - use crate::corestore::Data; + use crate::corestore::{htable::Coremap, Data}; #[test] fn test_list_se_de() { let mylist = vec![Data::from("a"), Data::from("b"), Data::from("c")]; @@ -339,4 +339,27 @@ mod list_tests { let de = { de::deserialize_nested_list(rawiter.get_borrowed_iter()).unwrap() }; assert_eq!(de, mylist); } + #[test] + fn test_list_map_se_de() { + let mymap = Coremap::new(); + let vals = vec!["apples", "bananas", "carrots"]; + let v2 = vals.clone(); + mymap.true_if_insert(Data::from("mykey"), v2); + let mut v = Vec::new(); + se::raw_serialize_list_map(&mut v, &mymap).unwrap(); + let de = de::deserialize_list_map(&v).unwrap(); + assert_eq!(de.len(), 1); + assert_eq!( + de.get("mykey".as_bytes()).unwrap().value().clone(), + vals.into_iter().map(Data::from).collect::>() + ); + } + #[test] + fn test_list_map_empty_se_de() { + let mymap: Coremap> = Coremap::new(); + let mut v = Vec::new(); + se::raw_serialize_list_map(&mut v, &mymap).unwrap(); + let de = de::deserialize_list_map(&v).unwrap(); + assert_eq!(de.len(), 0) + } }