@Test
  public void testDynamicImageDiskCacheInputProducerSuccess() {
    when(mImageRequest.getCacheChoice()).thenReturn(ImageRequest.CacheChoice.DYNAMIC);
    when(mImageRequest.getDiskCacheId()).thenReturn(mDiskCacheId2);

    setupInputProducerSuccess();
    mDiskCacheWriteProducer.produceResults(mConsumer, mProducerContext);
    verify(mBufferedDiskCache2, never()).put(mCacheKey, mIntermediateEncodedImage);
    verify(mBufferedDiskCache2).put(mCacheKey, mFinalEncodedImage);
    verify(mConsumer).onNewResult(mIntermediateEncodedImage, Consumer.NO_FLAGS);
    verify(mConsumer).onNewResult(mFinalEncodedImage, Consumer.IS_LAST);
    verify(mProducerListener, times(2)).onProducerStart(mProducerContext, PRODUCER_NAME);
    verify(mProducerListener, times(2))
        .onProducerFinishWithSuccess(mProducerContext, PRODUCER_NAME, null);
  }
Checks basic properties of disk cache producer operation, that is: - it delegates to the {@link
BufferedDiskCache#get(CacheKey key, AtomicBoolean isCancelled)} - it returns a 'copy' of the
cached value - if {@link BufferedDiskCache#get(CacheKey key, AtomicBoolean isCancelled)} is
unsuccessful, then it passes the request to the next producer in the sequence. - if the next
producer returns the value, then it is put into the disk cache.
imagepipeline/src/test/java/com/facebook/imagepipeline/producers/DiskCacheWriteProducerTest.java