From bdb0bd689701fc92804285c9e914e65dfd0ee9f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Ignacio=20Gonz=C3=A1lez?= Date: Sat, 18 Feb 2023 20:26:11 -0300 Subject: [PATCH] test: LruCache (#1436) Co-authored-by: lambdaclass-user --- crates/net/network/src/cache.rs | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/crates/net/network/src/cache.rs b/crates/net/network/src/cache.rs index 3a74f5c17d..80a8972b8b 100644 --- a/crates/net/network/src/cache.rs +++ b/crates/net/network/src/cache.rs @@ -64,3 +64,50 @@ where } } } + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_cache_should_insert_into_empty_set() { + let limit = NonZeroUsize::new(5).unwrap(); + let mut cache = LruCache::new(limit); + let entry = "entry"; + assert!(cache.insert(entry)); + assert!(cache.contains(entry)); + } + + #[test] + fn test_cache_should_not_insert_same_value_twice() { + let limit = NonZeroUsize::new(5).unwrap(); + let mut cache = LruCache::new(limit); + let entry = "entry"; + assert!(cache.insert(entry)); + assert!(!cache.insert(entry)); + } + + #[test] + fn test_cache_should_remove_oldest_element_when_exceeding_limit() { + let limit = NonZeroUsize::new(2).unwrap(); + let mut cache = LruCache::new(limit); + let old_entry = "old_entry"; + let new_entry = "new_entry"; + cache.insert(old_entry); + cache.insert("entry"); + cache.insert(new_entry); + assert!(cache.contains(new_entry)); + assert!(!cache.contains(old_entry)); + } + + #[test] + fn test_cache_should_extend_an_array() { + let limit = NonZeroUsize::new(5).unwrap(); + let mut cache = LruCache::new(limit); + let entries = ["some_entry", "another_entry"]; + cache.extend(entries); + for e in entries { + assert!(cache.contains(e)); + } + } +}