public void testSelect() throws Exception { cache.put(new MyKey("a"), 1); cache.put(new MyKey("b"), 2); cache.put(new MyKey("c"), 3); final AtomicInteger count = new AtomicInteger(); CachedObjectSelector<Serializable, Object> selector = new CachedObjectSelector<Serializable, Object>() { public void onSelect( ExoCache<? extends Serializable, ? extends Object> cache, Serializable key, ObjectCacheInfo<? extends Object> ocinfo) throws Exception { assertTrue( key.equals(new MyKey("a")) || key.equals(new MyKey("b")) || key.equals(new MyKey("c"))); assertTrue(ocinfo.get().equals(1) || ocinfo.get().equals(2) || ocinfo.get().equals(3)); count.incrementAndGet(); } public boolean select(Serializable key, ObjectCacheInfo<? extends Object> ocinfo) { return true; } }; try { cache.select(selector); assertEquals(3, count.intValue()); } catch (UnsupportedOperationException e) { // OK } }