MemoryCache implements Cache<T> { @Override public DatabaseDocument<T> remove(DocumentID<T> id) { lastTouched.remove(id); return map.remove(id); } MemoryCache(); @Override void prepare(); @Override void add(DatabaseDocument<T> doc); @Override void add(Collection<DatabaseDocument<T>> docs); @Override DatabaseDocument<T> remove(DocumentID<T> id); @Override Collection<DatabaseDocument<T>> removeAll(); @Override DatabaseDocument<T> getDocumentById(DocumentID<T> id); @Override DatabaseDocument<T> getDocument(); @Override DatabaseDocument<T> getDocument(DatabaseQuery<T> query); @Override ArrayList<DatabaseDocument<T>> getDocument(DatabaseQuery<T> query,
			int limit); @Override DatabaseDocument<T> getAndTag(DatabaseQuery<T> query, String ... tags); @Override Collection<DatabaseDocument<T>> getAndTag(DatabaseQuery<T> query,
			int n, String ... tags); @Override boolean update(DatabaseDocument<T> document); @Override boolean markTouched(DocumentID<T> id, String tag); @Override int getSize(); @Override Collection<DatabaseDocument<T>> removeStale(int stalerThanMs); @Override boolean freshen(DocumentID<T> id);  }
@Test public void testRemove() { cache.add(list); assertEquals(doc1, cache.remove(id1)); assertNull(cache.getDocumentById(id1)); assertNull(cache.remove(id1)); assertEquals(doc2, cache.getDocumentById(id2)); }