15117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardpackage com.xtremelabs.robolectric.shadows;
25117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard
35117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport android.graphics.BitmapFactory;
45117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport android.graphics.drawable.BitmapDrawable;
55117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport android.graphics.drawable.Drawable;
65117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport android.graphics.drawable.LayerDrawable;
75117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport com.xtremelabs.robolectric.Robolectric;
85117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
95117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport org.junit.Before;
105117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport org.junit.Test;
115117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport org.junit.runner.RunWith;
125117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard
135117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardimport static com.xtremelabs.robolectric.Robolectric.shadowOf;
14b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perryimport static org.junit.Assert.*;
155117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard
165117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard/**
175117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard * ShadowLayerDrawableTest
185117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard */
195117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard@RunWith(WithTestDefaultsRunner.class)
205117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richardpublic class LayerDrawableTest {
21b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    /**
22b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry     * drawables
23b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry     */
245117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    protected Drawable drawable1000;
255117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    protected Drawable drawable2000;
265117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    protected Drawable drawable3000;
27b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    protected Drawable drawable4000;
285117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard
29b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    /**
30b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry     * drawables
31b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry     */
325117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    protected Drawable[] drawables;
335117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard
345117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    @Before
355117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    public void setUp() {
365117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard        drawable1000 = new BitmapDrawable(BitmapFactory.decodeResource(
375117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard                Robolectric.application.getResources(), 0x00001000));
385117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard        drawable2000 = new BitmapDrawable(BitmapFactory.decodeResource(
395117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard                Robolectric.application.getResources(), 0x00002000));
405117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard        drawable3000 = new BitmapDrawable(BitmapFactory.decodeResource(
415117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard                Robolectric.application.getResources(), 0x00003000));
42b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        drawable4000 = new BitmapDrawable(BitmapFactory.decodeResource(
43b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry                Robolectric.application.getResources(), 0x00004000));
445117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard
45b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        drawables = new Drawable[]{drawable1000, drawable2000, drawable3000};
465117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    }
475117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard
485117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    @Test
495117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    public void testConstruction() {
505117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard        LayerDrawable layerDrawable = new LayerDrawable(drawables);
515117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard        assertSame("drawables", drawables, shadowOf(layerDrawable).drawables);
525117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    }
535117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard
545117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    @Test
555117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    public void testGetNumberOfLayers() {
565117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard        LayerDrawable layerDrawable = new LayerDrawable(drawables);
575117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard        assertEquals("count", 3, layerDrawable.getNumberOfLayers());
585117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard    }
59b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry
60b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    @Test
61b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    public void testSetDrawableByLayerId1() throws Exception {
62b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        LayerDrawable layerDrawable = new LayerDrawable(drawables);
63b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        int index = 1;
64b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        int layerId = 345;
65b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        layerDrawable.setId(index, layerId);
66b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry
67b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        layerDrawable.setDrawableByLayerId(layerId, drawable4000);
68b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry
69b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        assertEquals(shadowOf(drawable4000).getLoadedFromResourceId(),
70b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry                shadowOf(layerDrawable.getDrawable(index)).getLoadedFromResourceId());
71b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    }
72b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry
73b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    @Test
74b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    public void testSetDrawableByLayerId2() throws Exception {
75b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        LayerDrawable layerDrawable = new LayerDrawable(drawables);
76b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        int index = 0;
77b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        int layerId = 345;
78b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        layerDrawable.setId(index, layerId);
79b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry
80b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        layerDrawable.setDrawableByLayerId(layerId, drawable4000);
81b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry
82b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        assertEquals(shadowOf(drawable4000).getLoadedFromResourceId(),
83b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry                shadowOf(layerDrawable.getDrawable(index)).getLoadedFromResourceId());
84b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    }
85b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry
86b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    @Test
87b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    public void setDrawableByLayerId_shouldReturnFalseIfIdNotFound() throws Exception {
88b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        LayerDrawable layerDrawable = new LayerDrawable(drawables);
89b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        boolean ret = layerDrawable.setDrawableByLayerId(123, drawable4000);
90b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        assertFalse(ret);
91b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    }
92b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry
93b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    @Test
94b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    public void setDrawableByLayerId_shouldReturnTrueIfIdWasFound() throws Exception {
95b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        LayerDrawable layerDrawable = new LayerDrawable(drawables);
96b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        int index = 0;
97b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        int layerId = 345;
98b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        layerDrawable.setId(index, layerId);
99b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry
100b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        boolean ret = layerDrawable.setDrawableByLayerId(layerId, drawable4000);
101b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry        assertTrue(ret);
102b5d53400ef5160e032e2744f82f8c147f8d4d59cAaron VonderHaar & Chris Perry    }
1035117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard}
104