View Javadoc

1   package com.atlassian.core.util.thumbnail;
2   
3   import com.atlassian.core.util.ReusableBufferedInputStream;
4   import com.google.common.base.Predicate;
5   import org.junit.Before;
6   import org.junit.Test;
7   import org.mockito.Mock;
8   import org.mockito.MockitoAnnotations;
9   
10  import java.awt.image.BufferedImage;
11  import java.io.InputStream;
12  
13  import static org.junit.Assert.assertEquals;
14  import static org.mockito.Matchers.any;
15  import static org.mockito.Matchers.anyInt;
16  import static org.mockito.Matchers.eq;
17  import static org.mockito.Mockito.never;
18  import static org.mockito.Mockito.times;
19  import static org.mockito.Mockito.verify;
20  import static org.mockito.Mockito.when;
21  
22  public class ThumbnailRendererTest {
23  
24      @Mock private Predicate<Dimensions> rasterPredicate;
25      @Mock private ImageScaler rasterScaler;
26      @Mock private ImageScaler streamScaler;
27      @Mock private DimensionsHelper dimensionsHelper;
28      @Mock private InputStream inputStream;
29      @Mock private BufferedImage image;
30  
31      private ThumbnailRenderer thumbnailRenderer;
32  
33      @Before
34      public void setUp() throws Exception {
35          MockitoAnnotations.initMocks(this);
36          thumbnailRenderer = new ThumbnailRenderer(rasterScaler, streamScaler, dimensionsHelper, rasterPredicate);
37      }
38  
39      @Test
40      public void testRenderInMemory() throws Exception {
41          final Dimensions dimensions = new Dimensions(123, 456);
42  
43          when(dimensionsHelper.dimensionsForImage(any(ReusableBufferedInputStream.class))).thenReturn(dimensions);
44          when(rasterPredicate.apply(dimensions)).thenReturn(true);
45          when(rasterScaler.scaleImage(eq(100), eq(100), any(ReusableBufferedInputStream.class))).thenReturn(image);
46  
47          final BufferedImage scaledImage = thumbnailRenderer.createThumbnailImage(inputStream, 100, 100);
48  
49          assertEquals(scaledImage, image);
50          verify(rasterScaler, times(1)).scaleImage(eq(100), eq(100), any(ReusableBufferedInputStream.class));
51          verify(streamScaler, never()).scaleImage(anyInt(), anyInt(), any(ReusableBufferedInputStream.class));
52      }
53  
54      @Test
55      public void testRenderInStream() throws Exception {
56          final Dimensions dimensions = new Dimensions(123, 456);
57  
58          when(dimensionsHelper.dimensionsForImage(inputStream)).thenReturn(dimensions);
59          when(rasterPredicate.apply(dimensions)).thenReturn(false);
60          when(streamScaler.scaleImage(eq(100), eq(100), any(ReusableBufferedInputStream.class))).thenReturn(image);
61  
62          final BufferedImage scaledImage = thumbnailRenderer.createThumbnailImage(inputStream, 100, 100);
63  
64          assertEquals(scaledImage, image);
65          verify(streamScaler, times(1)).scaleImage(eq(100), eq(100), any(ReusableBufferedInputStream.class));
66          verify(rasterScaler, never()).scaleImage(anyInt(), anyInt(), any(ReusableBufferedInputStream.class));
67      }
68  }