blob: 54d05f35b2b65650fcf4f7604d4b178c8cd696b8 [file] [log] [blame]
package com.xtremelabs.droidsugar.view;
import android.test.mock.MockContext;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.google.android.maps.MapView;
import com.xtremelabs.droidsugar.DroidSugarAndroidTestRunner;
import com.xtremelabs.droidsugar.R;
import com.xtremelabs.droidsugar.util.TestUtil;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.io.File;
import static android.test.MoreAsserts.assertNotEqual;
import static org.junit.Assert.assertSame;
@RunWith(DroidSugarAndroidTestRunner.class)
public class ViewLoaderTest {
private ViewLoader viewLoader;
private MockContext context;
@Before
public void setUp() throws Exception {
DroidSugarAndroidTestRunner.addProxy(View.class, FakeView.class);
DroidSugarAndroidTestRunner.addProxy(ViewGroup.class, FakeViewGroup.class);
ResourceExtractor resourceExtractor = new ResourceExtractor();
resourceExtractor.addRClass(R.class);
viewLoader = new ViewLoader(resourceExtractor);
viewLoader.loadDirs(new File("test/res/layout"));
context = new MockContext();
}
@Test
public void testCreatesCorrectClasses() throws Exception {
ViewGroup view = (ViewGroup) viewLoader.inflateView(context, "layout/media");
TestUtil.assertInstanceOf(LinearLayout.class, view);
assertSame(context, view.getContext());
}
@Test
public void testAddsChildren() throws Exception {
ViewGroup view = (ViewGroup) viewLoader.inflateView(context, "layout/media");
assertNotEqual(0, view.getChildCount());
assertSame(context, view.getChildAt(0).getContext());
}
@Test
public void testFindsChildrenById() throws Exception {
ViewGroup mediaView = (ViewGroup) viewLoader.inflateView(context, "layout/media");
TestUtil.assertInstanceOf(TextView.class, mediaView.findViewById(R.id.title));
ViewGroup mainView = (ViewGroup) viewLoader.inflateView(context, "layout/main");
TestUtil.assertInstanceOf(View.class, mainView.findViewById(R.id.title));
}
@Test
public void testInclude() throws Exception {
ViewGroup mediaView = (ViewGroup) viewLoader.inflateView(context, "layout/media");
TestUtil.assertInstanceOf(TextView.class, mediaView.findViewById(R.id.snippet_text));
}
@Test
public void testMerge() throws Exception {
ViewGroup mediaView = (ViewGroup) viewLoader.inflateView(context, "layout/outer");
TestUtil.assertInstanceOf(TextView.class, mediaView.findViewById(R.id.inner_text));
}
@Test
public void testViewGroupsLooksAtItsOwnId() throws Exception {
TextView mediaView = (TextView) viewLoader.inflateView(context, "layout/snippet");
assertSame(mediaView, mediaView.findViewById(R.id.snippet_text));
}
@Test
public void testMapView() throws Exception {
RelativeLayout mainView = (RelativeLayout) viewLoader.inflateView(context, "layout/mapview");
TestUtil.assertInstanceOf(MapView.class, mainView.findViewById(R.id.map_view));
}
}