Home | History | Annotate | Download | only in shadows
      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