use oxcache::Cache;
#[path = "../common/mod.rs"]
mod common;
#[tokio::test]
async fn test_l1_only_mode() {
common::setup_logging();
let cache: Cache<String, String> = Cache::builder().build().await.unwrap();
let test_key = "l1_test_key".to_string();
let test_value = "l1_test_value".to_string();
let set_result = cache.set(&test_key, &test_value).await;
assert!(set_result.is_ok(), "L1 SET should succeed");
let get_result = cache.get(&test_key).await;
assert!(get_result.is_ok(), "L1 GET should succeed");
if let Ok(Some(retrieved)) = get_result {
assert_eq!(retrieved, test_value, "Retrieved value should match");
}
let _ = cache.delete(&test_key).await;
}
#[tokio::test]
async fn test_cache_basic_operations() {
common::setup_logging();
let cache: Cache<String, Vec<u8>> = Cache::builder().build().await.unwrap();
let key = "basic_test".to_string();
let value = vec![1u8, 2u8, 3u8];
let set_result = cache.set(&key, &value).await;
assert!(set_result.is_ok(), "SET should succeed");
let get_result = cache.get(&key).await;
assert!(get_result.is_ok(), "GET should succeed");
if let Ok(Some(retrieved)) = get_result {
assert_eq!(retrieved, value, "Retrieved value should match");
}
let delete_result = cache.delete(&key).await;
assert!(delete_result.is_ok(), "DELETE should succeed");
let get_after_delete = cache.get(&key).await;
assert!(get_after_delete.is_ok(), "GET after delete should succeed");
assert!(
get_after_delete.unwrap().is_none(),
"Value should be None after delete"
);
}
#[tokio::test]
async fn test_cache_clear() {
common::setup_logging();
let cache: Cache<String, String> = Cache::builder().build().await.unwrap();
for i in 0..10 {
let key = format!("clear_test_{}", i);
let value = format!("value_{}", i);
let _ = cache.set(&key, &value).await;
}
let get_result = cache.get(&"clear_test_5".to_string()).await;
assert!(get_result.is_ok(), "GET should succeed");
assert!(
get_result.unwrap().is_some(),
"Key should exist before clear"
);
let clear_result = cache.clear().await;
assert!(clear_result.is_ok(), "CLEAR should succeed");
let get_after_clear = cache.get(&"clear_test_5".to_string()).await;
assert!(get_after_clear.is_ok(), "GET after clear should succeed");
assert!(
get_after_clear.unwrap().is_none(),
"Value should be None after clear"
);
}