Add tests for list-based maps

next
Sayan Nandan 3 years ago
parent 21157b2797
commit b8c8cda1d6

@ -244,6 +244,12 @@ pub struct Data {
blob: Bytes, blob: Bytes,
} }
impl PartialEq<str> for Data {
fn eq(&self, oth: &str) -> bool {
self.blob.eq(oth)
}
}
impl Data { impl Data {
/// Create a new blob from a string /// Create a new blob from a string
pub fn from_string(val: String) -> Self { pub fn from_string(val: String) -> Self {

@ -178,9 +178,6 @@ impl<'a> RawSliceIterBorrowed<'a> {
fn remaining(&self) -> usize { fn remaining(&self) -> usize {
unsafe { self.end_ptr.offset_from(self.cursor) as 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 /// Increment the cursor by the provided length
unsafe fn incr_cursor_by(&mut self, ahead: usize) { unsafe fn incr_cursor_by(&mut self, ahead: usize) {
{ {

@ -262,7 +262,7 @@ mod se {
} }
pub fn raw_serialize_list_map<'a, W, T: 'a, U: 'a>( pub fn raw_serialize_list_map<'a, W, T: 'a, U: 'a>(
w: &mut W, w: &mut W,
data: Coremap<Data, T>, data: &Coremap<Data, T>,
) -> IoResult<()> ) -> IoResult<()>
where where
W: Write, W: Write,

@ -306,7 +306,7 @@ mod flush_routines {
mod list_tests { mod list_tests {
use super::iter::RawSliceIter; use super::iter::RawSliceIter;
use super::{de, se}; use super::{de, se};
use crate::corestore::Data; use crate::corestore::{htable::Coremap, Data};
#[test] #[test]
fn test_list_se_de() { fn test_list_se_de() {
let mylist = vec![Data::from("a"), Data::from("b"), Data::from("c")]; 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() }; let de = { de::deserialize_nested_list(rawiter.get_borrowed_iter()).unwrap() };
assert_eq!(de, mylist); 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::<Vec<Data>>()
);
}
#[test]
fn test_list_map_empty_se_de() {
let mymap: Coremap<Data, Vec<Data>> = 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)
}
} }

Loading…
Cancel
Save