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