Experiments implements Closeable { public Iterable<Experiment> find(Filter filter) { return Iterables.unmodifiableIterable( new CacheStrategyIterable( store.find(filter, new Experiment.BuilderFactory(this)), context, strategy ) ); } private  Experiments(ExperimentsStoreProvider provider,
                        CacheStrategy strategy,
                        ExecutorService executorService); static Builder using(ExperimentsStoreProvider provider); Treatment getActiveTreatment(String experimentName, Identity identity); Iterable<Experiment> getActiveExperiments(); Map<Experiment, Treatment> getActiveTreatments(Identity identity); Iterable<Experiment> find(Filter filter); Iterable<Experiment> find(); Experiment get(String experimentName); void delete(String experimentName); void save(Experiment experiment); Experiment create(String name); @Override void close();  }
@Test public void testFind() { experiments.find(); verify(store).find(eq(Filter.NONE), any(Experiment.BuilderFactory.class)); verifyZeroInteractions(cache); }
@Test public void testFindFiltered() { final Filter filter = Filter.criteria().filter("foo").offset(1).limit(2).build(); experiments.find(filter); verify(store).find(eq(filter), any(Experiment.BuilderFactory.class)); verifyZeroInteractions(cache); }