package org.robolectric.shadows;
import android.content.Context;
import android.view.View;
import android.view.ViewStub;
import android.widget.LinearLayout;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.R;
import org.robolectric.Robolectric;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.TestRunners;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
@RunWith(TestRunners.MultiApiSelfTest.class)
public class ViewStubTest {
private Context ctxt;
@Before public void setUp() throws Exception {
ctxt = RuntimeEnvironment.application;
}
@Test
public void inflate_shouldReplaceOriginalWithLayout() throws Exception {
ViewStub viewStub = new ViewStub(ctxt);
int stubId = 12345;
int inflatedId = 12346;
viewStub.setId(stubId);
viewStub.setInflatedId(inflatedId);
viewStub.setLayoutResource(R.layout.media);
LinearLayout root = new LinearLayout(ctxt);
root.addView(new View(ctxt));
root.addView(viewStub);
root.addView(new View(ctxt));
View inflatedView = viewStub.inflate();
assertNotNull(inflatedView);
assertSame(inflatedView, root.findViewById(inflatedId));
assertNull(root.findViewById(stubId));
assertEquals(1, root.indexOfChild(inflatedView));
assertEquals(3, root.getChildCount());
}
@Test
public void shouldApplyAttributes() throws Exception {
ViewStub viewStub = new ViewStub(ctxt,
Robolectric.buildAttributeSet()
.addAttribute(android.R.attr.inflatedId, "@+id/include_id")
.addAttribute(android.R.attr.layout, "@layout/media")
.build());
assertThat(viewStub.getInflatedId()).isEqualTo(R.id.include_id);
assertThat(viewStub.getLayoutResource()).isEqualTo(R.layout.media);
}
}