package org.robobinding; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import org.junit.experimental.theories.DataPoints; import org.junit.experimental.theories.Theories; import org.junit.experimental.theories.Theory; import org.junit.runner.RunWith; /** * * @since 1.0 * @version $Revision: 1.0 $ * @author Robert Taylor */ @RunWith(Theories.class) public class ViewNameResolverTest { @DataPoints public static ViewNameMapping[] viewNameMappings = { layoutTagName("View").shouldResolveTo("android.view.View"), layoutTagName("ViewGroup").shouldResolveTo("android.view.ViewGroup"), layoutTagName("WebView").shouldResolveTo("android.webkit.WebView"), layoutTagName("EditText").shouldResolveTo("android.widget.EditText"), layoutTagName("ListView").shouldResolveTo("android.widget.ListView"), layoutTagName("robobinding.widget.CustomWidget").shouldResolveTo("robobinding.widget.CustomWidget") }; @Theory public void shouldResolveViewNamesCorrectly(ViewNameMapping viewNameMapping) { ViewNameResolver viewNameResolver = new ViewNameResolver(); String viewName = viewNameResolver.getViewNameFromLayoutTag(viewNameMapping.tagName); assertThat(viewName, equalTo(viewNameMapping.expectedMapping)); } private static class ViewNameMapping { private final String tagName; private final String expectedMapping; public ViewNameMapping(String tagName, String expectedMapping) { this.tagName = tagName; this.expectedMapping = expectedMapping; } } private static LayoutTagName layoutTagName(String tagName) { return new LayoutTagName(tagName); } private static class LayoutTagName { private final String tagName; public LayoutTagName(String tagName) { this.tagName = tagName; } public ViewNameMapping shouldResolveTo(String mapping) { return new ViewNameMapping(tagName, mapping); } } }