Add test for stringstore
This commit is contained in:
parent
70c9d073f9
commit
80d9b36901
@ -49,3 +49,56 @@ impl StringStore {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::StringStore;
|
||||
|
||||
#[test]
|
||||
fn test_stringstore_intern_lookup() {
|
||||
let mut ss = StringStore::new();
|
||||
let s1 = "Hello";
|
||||
let s2 = "World";
|
||||
|
||||
let id1 = ss.intern_or_lookup(s1);
|
||||
assert_eq!(ss.lookup(id1).unwrap().as_str(), s1);
|
||||
|
||||
let id2 = ss.intern_or_lookup(s2);
|
||||
assert_eq!(ss.lookup(id2).unwrap().as_str(), s2);
|
||||
assert_eq!(ss.lookup(id1).unwrap().as_str(), s1);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_stringstore_no_duplicates() {
|
||||
let mut ss = StringStore::new();
|
||||
let s1 = "Hello";
|
||||
let s2 = "World";
|
||||
|
||||
let id1_1 = ss.intern_or_lookup(s1);
|
||||
assert_eq!(ss.lookup(id1_1).unwrap().as_str(), s1);
|
||||
|
||||
let id1_2 = ss.intern_or_lookup(s1);
|
||||
assert_eq!(ss.lookup(id1_2).unwrap().as_str(), s1);
|
||||
|
||||
// Check that the string is the same
|
||||
assert_eq!(id1_1, id1_2);
|
||||
|
||||
// Check that only one string is actually stored
|
||||
assert_eq!(ss.strings.len(), 1);
|
||||
assert_eq!(ss.sids.len(), 1);
|
||||
|
||||
|
||||
|
||||
let id2_1 = ss.intern_or_lookup(s2);
|
||||
assert_eq!(ss.lookup(id2_1).unwrap().as_str(), s2);
|
||||
|
||||
let id2_2 = ss.intern_or_lookup(s2);
|
||||
assert_eq!(ss.lookup(id2_2).unwrap().as_str(), s2);
|
||||
|
||||
// Check that the string is the same
|
||||
assert_eq!(id2_1, id2_2);
|
||||
|
||||
assert_eq!(ss.strings.len(), 2);
|
||||
assert_eq!(ss.sids.len(), 2);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user