1package com.xtremelabs.robolectric.shadows;
2
3import android.R;
4import android.graphics.drawable.Drawable;
5import android.graphics.drawable.StateListDrawable;
6import android.util.StateSet;
7import com.xtremelabs.robolectric.WithTestDefaultsRunner;
8import org.junit.Test;
9import org.junit.runner.RunWith;
10
11import static com.xtremelabs.robolectric.Robolectric.shadowOf;
12import static org.hamcrest.CoreMatchers.is;
13import static org.junit.Assert.assertNotNull;
14import static org.junit.Assert.assertThat;
15
16@RunWith(WithTestDefaultsRunner.class)
17public class StateListDrawableTest {
18
19    @Test
20    public void testAddStateWithDrawable() {
21        Drawable drawable = ShadowDrawable.createFromPath("/foo");
22
23        StateListDrawable stateListDrawable = new StateListDrawable();
24        int[] states = {R.attr.state_pressed};
25        stateListDrawable.addState(states, drawable);
26
27        ShadowStateListDrawable shadow = shadowOf(stateListDrawable);
28        Drawable drawableForState = shadow.getDrawableForState(states);
29        assertNotNull(drawableForState);
30        assertThat(((ShadowBitmapDrawable) shadowOf(drawableForState)).getPath(), is("/foo"));
31    }
32
33    @Test
34    public void testAddDrawableWithWildCardState() {
35        Drawable drawable = ShadowDrawable.createFromPath("/foo");
36
37        StateListDrawable stateListDrawable = new StateListDrawable();
38        stateListDrawable.addState(StateSet.WILD_CARD, drawable);
39
40        ShadowStateListDrawable shadow = shadowOf(stateListDrawable);
41        Drawable drawableForState = shadow.getDrawableForState(StateSet.WILD_CARD);
42        assertNotNull(drawableForState);
43        assertThat(((ShadowBitmapDrawable) shadowOf(drawableForState)).getPath(), is("/foo"));
44    }
45}
46