10e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamspackage com.xtremelabs.robolectric.shadows;
20e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
30e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamsimport android.content.Context;
40e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamsimport android.view.View;
50e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamsimport android.view.ViewStub;
60e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamsimport android.widget.LinearLayout;
70e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamsimport com.xtremelabs.robolectric.R;
80e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamsimport com.xtremelabs.robolectric.Robolectric;
90e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamsimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
102cdde11355e7c249e83a8b7aaabae5977bbc3e49Phil Goodwinimport com.xtremelabs.robolectric.tester.android.util.TestAttributeSet;
110e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamsimport org.junit.Before;
120e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamsimport org.junit.Test;
130e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamsimport org.junit.runner.RunWith;
140e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
150e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamsimport static org.junit.Assert.*;
160e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
170e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams@RunWith(WithTestDefaultsRunner.class)
180e1c92ca35030e2c173b141c41341636bbb7a258Christian Williamspublic class ViewStubTest {
190e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams    private Context ctxt;
200e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
210e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams    @Before public void setUp() throws Exception {
220e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        ctxt = Robolectric.application;
230e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams    }
240e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
250e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams    @Test
260e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams    public void inflate_shouldReplaceOriginalWithLayout() throws Exception {
270e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        ViewStub viewStub = new ViewStub(ctxt);
280e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        int stubId = 12345;
290e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        int inflatedId = 12346;
300e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
310e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        viewStub.setId(stubId);
320e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        viewStub.setInflatedId(inflatedId);
330e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        viewStub.setLayoutResource(R.layout.media);
340e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
350e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        LinearLayout root = new LinearLayout(ctxt);
360e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        root.addView(new View(ctxt));
370e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        root.addView(viewStub);
380e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        root.addView(new View(ctxt));
390e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
400e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        View inflatedView = viewStub.inflate();
410e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        assertNotNull(inflatedView);
420e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        assertSame(inflatedView, root.findViewById(inflatedId));
430e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
440e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        assertNull(root.findViewById(stubId));
450e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
460e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        assertEquals(1, root.indexOfChild(inflatedView));
470e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        assertEquals(3, root.getChildCount());
480e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams    }
490e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
500e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams    @Test
510e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams    public void shouldApplyAttributes() throws Exception {
520e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        ViewStub viewStub = new ViewStub(ctxt,
530e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams                new TestAttributeSet()
540e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams                        .put("android:inflatedId", "@+id/include_id")
550e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams                        .put("android:layout", "@layout/media")
560e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        );
570e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams
580e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        assertEquals(R.id.include_id, viewStub.getInflatedId());
590e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams        assertEquals(R.layout.media, viewStub.getLayoutResource());
600e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams    }
610e1c92ca35030e2c173b141c41341636bbb7a258Christian Williams}
62