#[cfg(feature = "in_memory")]
mod tests {
use persistent_map::{PersistentMap, Result};
#[tokio::test]
async fn test_in_memory_backend() -> Result<()> {
let backend = persistent_map::in_memory::InMemoryBackend::new();
let map = PersistentMap::new(backend).await?;
assert_eq!(map.len(), 0);
assert!(map.is_empty());
map.insert("key1".to_string(), "value1".to_string()).await?;
assert_eq!(map.len(), 1);
assert!(!map.is_empty());
assert!(map.contains_key(&"key1".to_string()));
assert_eq!(map.get(&"key1".to_string()), Some("value1".to_string()));
map.insert("key1".to_string(), "value2".to_string()).await?;
assert_eq!(map.len(), 1);
assert_eq!(map.get(&"key1".to_string()), Some("value2".to_string()));
let old_value = map.remove(&"key1".to_string()).await?;
assert_eq!(old_value, Some("value2".to_string()));
assert_eq!(map.len(), 0);
assert!(map.is_empty());
assert!(!map.contains_key(&"key1".to_string()));
map.insert("key1".to_string(), "value1".to_string()).await?;
map.insert("key2".to_string(), "value2".to_string()).await?;
map.insert("key3".to_string(), "value3".to_string()).await?;
assert_eq!(map.len(), 3);
assert_eq!(map.get(&"key1".to_string()), Some("value1".to_string()));
assert_eq!(map.get(&"key2".to_string()), Some("value2".to_string()));
assert_eq!(map.get(&"key3".to_string()), Some("value3".to_string()));
map.flush().await?;
assert_eq!(map.len(), 3);
map.clear();
assert_eq!(map.len(), 0);
assert!(map.is_empty());
Ok(())
}
}