diff options
Diffstat (limited to 'library/src/test/java/com/bumptech/glide/load/engine/SourceResourceRunnerTest.java')
-rw-r--r-- | library/src/test/java/com/bumptech/glide/load/engine/SourceResourceRunnerTest.java | 66 |
1 files changed, 19 insertions, 47 deletions
diff --git a/library/src/test/java/com/bumptech/glide/load/engine/SourceResourceRunnerTest.java b/library/src/test/java/com/bumptech/glide/load/engine/SourceResourceRunnerTest.java index a50a4ab0..647e432b 100644 --- a/library/src/test/java/com/bumptech/glide/load/engine/SourceResourceRunnerTest.java +++ b/library/src/test/java/com/bumptech/glide/load/engine/SourceResourceRunnerTest.java @@ -1,7 +1,7 @@ package com.bumptech.glide.load.engine; -import com.bumptech.glide.load.CacheLoader; import com.bumptech.glide.Priority; +import com.bumptech.glide.load.CacheLoader; import com.bumptech.glide.load.Encoder; import com.bumptech.glide.load.Key; import com.bumptech.glide.load.ResourceDecoder; @@ -11,6 +11,7 @@ import com.bumptech.glide.load.data.DataFetcher; import com.bumptech.glide.load.engine.cache.DiskCache; import com.bumptech.glide.load.resource.transcode.ResourceTranscoder; import com.bumptech.glide.request.ResourceCallback; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -19,14 +20,12 @@ import org.mockito.stubbing.Answer; import org.robolectric.RobolectricTestRunner; import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyObject; @@ -80,18 +79,11 @@ public class SourceResourceRunnerTest { final SourceResourceRunner<Object, Object, Object> runner = harness.getRunner(); when(harness.cacheLoader.load(eq(harness.originalKey), eq(harness.cacheDecoder), eq(harness.width), eq(harness.height))).thenReturn(harness.decoded); - final OutputStream expected = new ByteArrayOutputStream(); - doAnswer(new Answer<Object>() { - @Override - public Object answer(InvocationOnMock invocation) throws Throwable { - runner.write(expected); - return null; - } - }).when(harness.diskCache).put(eq(harness.key), eq(runner)); + when(harness.factory.build(eq(harness.encoder), eq(harness.transformed))).thenReturn(harness.writer); runner.run(); - verify(harness.encoder).encode(eq(harness.transformed), eq(expected)); + verify(harness.diskCache).put(eq(harness.key), eq(harness.writer)); } @Test @@ -129,13 +121,11 @@ public class SourceResourceRunnerTest { InputStream is = new ByteArrayInputStream(new byte[0]); when(harness.fetcher.loadData(eq(harness.priority))).thenReturn(is); when(harness.decoder.decode(eq(is), eq(harness.width), eq(harness.height))).thenReturn(harness.decoded); - - final OutputStream expected = new ByteArrayOutputStream(); + when(harness.factory.build(eq(harness.encoder), eq(harness.transformed))).thenReturn(harness.writer); runner.run(); - runner.write(expected); - verify(harness.encoder).encode(eq(harness.transformed), eq(expected)); + verify(harness.diskCache).put(eq(harness.key), eq(harness.writer)); } @Test @@ -144,15 +134,13 @@ public class SourceResourceRunnerTest { InputStream is = new ByteArrayInputStream(new byte[0]); when(harness.fetcher.loadData(eq(harness.priority))).thenReturn(is); when(harness.decoder.decode(eq(is), eq(harness.width), eq(harness.height))).thenReturn(harness.decoded); - Resource transformed = mock(Resource.class); when(harness.transformation.transform(eq(harness.decoded), eq(harness.width), eq(harness.height))) - .thenReturn(transformed); + .thenReturn(harness.transformed); + when(harness.factory.build(eq(harness.encoder), eq(harness.transformed))).thenReturn(harness.writer); - OutputStream expected = new ByteArrayOutputStream(); runner.run(); - runner.write(expected); - verify(harness.encoder).encode(eq(transformed), eq(expected)); + verify(harness.diskCache).put(eq(harness.key), eq(harness.writer)); } @Test @@ -252,16 +240,6 @@ public class SourceResourceRunnerTest { } @Test - public void testReturnsEncodersWriteResultFromWrite() { - when(harness.encoder.encode(any(Resource.class), any(OutputStream.class))).thenReturn(true); - assertTrue(harness.getRunner().write(new ByteArrayOutputStream())); - - when(harness.encoder.encode(any(Resource.class), any(OutputStream.class))).thenReturn(false); - assertFalse(harness.getRunner() - .write(new ByteArrayOutputStream())); - } - - @Test public void testDoesNotNormallyEncodeRetrievedData() throws Exception { Object data = new Object(); when(harness.fetcher.loadData(any(Priority.class))).thenReturn(data); @@ -276,11 +254,11 @@ public class SourceResourceRunnerTest { harness.cacheSource = true; Object data = new Object(); when(harness.fetcher.loadData(any(Priority.class))).thenReturn(data); - doAnswer(new CallWriter()).when(harness.diskCache).put(eq(harness.originalKey), any(DiskCache.Writer.class)); + when(harness.factory.build(eq(harness.sourceEncoder), eq(data))).thenReturn(harness.sourceWriter); harness.getRunner().run(); - verify(harness.sourceEncoder).encode(eq(data), any(OutputStream.class)); + verify(harness.diskCache).put(eq(harness.originalKey), eq(harness.sourceWriter)); } @Test @@ -288,10 +266,9 @@ public class SourceResourceRunnerTest { harness.cacheSource = true; Object data = new Object(); when(harness.fetcher.loadData(any(Priority.class))).thenReturn(data); - doAnswer(new CallWriter() { + doAnswer(new Answer() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { - super.answer(invocation); when(harness.cacheLoader.load(eq(harness.originalKey), eq(harness.cacheDecoder), eq(harness.width), eq(harness.height))).thenReturn(harness.decoded); return null; @@ -303,19 +280,10 @@ public class SourceResourceRunnerTest { verify(harness.cb).onResourceReady(eq(harness.transcoded)); } - private static class CallWriter implements Answer<Void> { - @Override - public Void answer(InvocationOnMock invocation) throws Throwable { - DiskCache.Writer writer = (DiskCache.Writer) invocation.getArguments()[1]; - writer.write(new ByteArrayOutputStream()); - return null; - } - } - @SuppressWarnings("unchecked") private static class SourceResourceHarness { CacheLoader cacheLoader = mock(CacheLoader.class); - ResourceDecoder<InputStream, Object> cacheDecoder = mock(ResourceDecoder.class); + ResourceDecoder<File, Object> cacheDecoder = mock(ResourceDecoder.class); DataFetcher<Object> fetcher = mock(DataFetcher.class); ResourceDecoder<Object, Object> decoder = mock(ResourceDecoder.class); ResourceEncoder<Object> encoder = mock(ResourceEncoder.class); @@ -327,6 +295,10 @@ public class SourceResourceRunnerTest { Resource<Object> transformed = mock(Resource.class); Resource<Object> transcoded = mock(Resource.class); Transformation<Object> transformation = mock(Transformation.class); + SourceResourceRunner.WriterFactory factory = mock(SourceResourceRunner.WriterFactory.class); + SourceResourceRunner.SourceWriter<Resource<Object>> writer = mock(SourceResourceRunner.SourceWriter.class); + SourceResourceRunner.SourceWriter<Object> sourceWriter = mock(SourceResourceRunner.SourceWriter + .class); boolean cacheSource = false; Encoder<Object> sourceEncoder = mock(Encoder.class); int width = 150; @@ -337,7 +309,7 @@ public class SourceResourceRunnerTest { public SourceResourceRunner<Object, Object, Object> getRunner() { return new SourceResourceRunner<Object, Object, Object>(key, width, height, cacheLoader, cacheDecoder, fetcher, cacheSource, sourceEncoder, decoder, transformation, encoder, transcoder, diskCache, - priority, cb); + priority, cb, factory); } public SourceResourceHarness() { |