17032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrickpackage com.android.volley.toolbox;
27032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick
3e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmannimport android.content.Context;
4e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmannimport android.util.AttributeSet;
57032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrickimport android.view.ViewGroup.LayoutParams;
6ced8a98b9ffa3612656b7979f8933ae9cf19d657Ralph Bergmannimport android.widget.ImageView.ScaleType;
77032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick
8b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.junit.Before;
9b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.junit.Test;
10b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.junit.runner.RunWith;
11b05d05822a1e9310fd012f6cc2f15bce4b420e17Magnus Ernstssonimport org.robolectric.RuntimeEnvironment;
12b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.robolectric.RobolectricTestRunner;
13b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick
14b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport static org.junit.Assert.*;
15b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick
16b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick@RunWith(RobolectricTestRunner.class)
17b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickpublic class NetworkImageViewTest {
187032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick    private NetworkImageView mNIV;
197032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick    private MockImageLoader mMockImageLoader;
207032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick
21b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick    @Before public void setUp() throws Exception {
227032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        mMockImageLoader = new MockImageLoader();
23b05d05822a1e9310fd012f6cc2f15bce4b420e17Magnus Ernstsson        mNIV = new NetworkImageView(RuntimeEnvironment.application);
247032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick    }
257032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick
26b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick    @Test public void setImageUrl_requestsImage() {
277032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        mNIV.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
287032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        mNIV.setImageUrl("http://foo", mMockImageLoader);
297032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        assertEquals("http://foo", mMockImageLoader.lastRequestUrl);
307032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        assertEquals(0, mMockImageLoader.lastMaxWidth);
317032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        assertEquals(0, mMockImageLoader.lastMaxHeight);
327032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick    }
337032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick
347032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick    // public void testSetImageUrl_setsMaxSize() {
357032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick    // // TODO: Not sure how to make getWidth() return something from an
367032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick    // // instrumentation test. Write this test once it's figured out.
377032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick    // }
387032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick
397032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick    private class MockImageLoader extends ImageLoader {
407032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        public MockImageLoader() {
417032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick            super(null, null);
427032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        }
437032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick
447032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        public String lastRequestUrl;
457032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        public int lastMaxWidth;
467032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        public int lastMaxHeight;
477032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick
487032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        public ImageContainer get(String requestUrl, ImageListener imageListener, int maxWidth,
49ced8a98b9ffa3612656b7979f8933ae9cf19d657Ralph Bergmann                int maxHeight, ScaleType scaleType) {
507032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick            lastRequestUrl = requestUrl;
517032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick            lastMaxWidth = maxWidth;
527032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick            lastMaxHeight = maxHeight;
537032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick            return null;
547032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick        }
557032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick    }
56e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann
57e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann    @Test
58e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann    public void publicMethods() throws Exception {
59e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann        // Catch-all test to find API-breaking changes.
60e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann        assertNotNull(NetworkImageView.class.getConstructor(Context.class));
61e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann        assertNotNull(NetworkImageView.class.getConstructor(Context.class, AttributeSet.class));
62e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann        assertNotNull(NetworkImageView.class.getConstructor(Context.class, AttributeSet.class,
63e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann                int.class));
64e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann
65e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann        assertNotNull(NetworkImageView.class.getMethod("setImageUrl", String.class, ImageLoader.class));
66e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann        assertNotNull(NetworkImageView.class.getMethod("setDefaultImageResId", int.class));
67e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann        assertNotNull(NetworkImageView.class.getMethod("setErrorImageResId", int.class));
68e1f0d61968d5194088c18f00b1bcfc46a91adbfdRalph Bergmann    }
697032ebc0f56d43a2778388926994bc5d862ab54eFicus Kirkpatrick}
70