1 package org.robolectric.shadows; 2 3 import static org.assertj.core.api.Assertions.assertThat; 4 import static org.junit.Assert.assertEquals; 5 import static org.junit.Assert.assertNotNull; 6 import static org.junit.Assert.assertNull; 7 import static org.junit.Assert.assertSame; 8 9 import android.content.Context; 10 import android.view.View; 11 import android.view.ViewStub; 12 import android.widget.LinearLayout; 13 import org.junit.Before; 14 import org.junit.Test; 15 import org.junit.runner.RunWith; 16 import org.robolectric.R; 17 import org.robolectric.Robolectric; 18 import org.robolectric.RobolectricTestRunner; 19 import org.robolectric.RuntimeEnvironment; 20 21 @RunWith(RobolectricTestRunner.class) 22 public class ViewStubTest { 23 private Context ctxt; 24 25 @Before public void setUp() throws Exception { 26 ctxt = RuntimeEnvironment.application; 27 } 28 29 @Test 30 public void inflate_shouldReplaceOriginalWithLayout() throws Exception { 31 ViewStub viewStub = new ViewStub(ctxt); 32 int stubId = 12345; 33 int inflatedId = 12346; 34 35 viewStub.setId(stubId); 36 viewStub.setInflatedId(inflatedId); 37 viewStub.setLayoutResource(R.layout.media); 38 39 LinearLayout root = new LinearLayout(ctxt); 40 root.addView(new View(ctxt)); 41 root.addView(viewStub); 42 root.addView(new View(ctxt)); 43 44 View inflatedView = viewStub.inflate(); 45 assertNotNull(inflatedView); 46 assertSame(inflatedView, root.findViewById(inflatedId)); 47 48 assertNull(root.findViewById(stubId)); 49 50 assertEquals(1, root.indexOfChild(inflatedView)); 51 assertEquals(3, root.getChildCount()); 52 } 53 54 @Test 55 public void shouldApplyAttributes() throws Exception { 56 ViewStub viewStub = new ViewStub(ctxt, 57 Robolectric.buildAttributeSet() 58 .addAttribute(android.R.attr.inflatedId, "@+id/include_id") 59 .addAttribute(android.R.attr.layout, "@layout/media") 60 .build()); 61 62 assertThat(viewStub.getInflatedId()).isEqualTo(R.id.include_id); 63 assertThat(viewStub.getLayoutResource()).isEqualTo(R.layout.media); 64 } 65 } 66