use cache::{Cache, CacheWrite, Storage};
use errors::*;
use std::cell::RefCell;
use std::time::Duration;
pub struct MockStorage {
gets: RefCell<Vec<SFuture<Cache>>>,
}
impl MockStorage {
pub fn new() -> MockStorage {
MockStorage {
gets: RefCell::new(vec![]),
}
}
pub fn next_get(&self, res: SFuture<Cache>) {
self.gets.borrow_mut().push(res)
}
}
impl Storage for MockStorage {
fn get(&self, _key: &str) -> SFuture<Cache> {
let mut g = self.gets.borrow_mut();
assert!(g.len() > 0, "MockStorage get called, but no get results available");
g.remove(0)
}
fn put(&self, _key: &str, _entry: CacheWrite) -> SFuture<Duration> {
f_ok(Duration::from_secs(0))
}
fn location(&self) -> String { "Mock Storage".to_string() }
fn current_size(&self) -> Option<usize> { None }
fn max_size(&self) -> Option<usize> { None }
}