@Test
  public void shouldReturnDifferentForDifferentQueries() throws Exception {
    when(delegate.forName("hej")).thenReturn(lookup);
    when(delegate.forName("hopp")).thenReturn(lookup2);

    Lookup first = factory.forName("hej");
    Lookup second = factory.forName("hopp");

    assertThat(first == second, is(false));
  }
  @Test
  public void shouldCacheResultsForSubsequentQueries() throws Exception {
    when(delegate.forName("hej")).thenReturn(lookup, lookup2);

    Lookup first = factory.forName("hej");
    Lookup second = factory.forName("hej");

    assertThat(first == second, is(true));
  }
 public CompletionStats stats(String... fields) {
   return lookup.stats(fields);
 }
 public Lookup getLookup(
     CompletionFieldMapper2x.CompletionFieldType mapper,
     CompletionSuggestionContext suggestionContext) {
   return lookup.getLookup(mapper, suggestionContext);
 }
 @Override
 public long ramBytesUsed() {
   return (lookupFactory == null ? 0 : lookupFactory.ramBytesUsed())
       + delegateProducer.ramBytesUsed();
 }
  @Test
  public void shouldReturnResultsFromDelegate() throws Exception {
    when(delegate.forName("a name")).thenReturn(lookup);

    assertThat(factory.forName("a name"), equalTo(lookup));
  }
 public void add(WaitingTimeout waitingTimeout, Long duration, TimeUnit unit) {
   lookupFactory.add(waitingTimeout, duration, unit);
 }
 public WaitingTimeout create(long duration, TimeUnit unit) {
   return lookupFactory.find(duration, unit);
 }