package org.robobinding.attribute; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import android.content.Context; import android.content.res.Resources; /** * * @since 1.0 * @version $Revision: 1.0 $ * @author Cheng Wei */ public class MockResourcesBuilder { public static final String DEFAULT_RESOURCE_PACKAGE = "android"; public static final String LAYOUT_RESOURCE_TYPE = "layout"; private Context mockContext; private Resources mockResources; public static MockResourcesBuilder aContextOfResources() { return new MockResourcesBuilder(); } private MockResourcesBuilder() { mockContext = mock(Context.class); mockResources = mock(Resources.class); when(mockContext.getResources()).thenReturn(mockResources); } public MockResourcesBuilder withDefaultPackage() { return withDefaultPackage(DEFAULT_RESOURCE_PACKAGE); } public MockResourcesBuilder withDefaultPackage(String packageName) { when(mockContext.getPackageName()).thenReturn(packageName); return this; } public int declareLayoutResource(String resourceName) { return declareResource(resourceName, LAYOUT_RESOURCE_TYPE, DEFAULT_RESOURCE_PACKAGE); } public int declareResource(String resourceName, String resourceType) { return declareResource(resourceName, resourceType, DEFAULT_RESOURCE_PACKAGE); } public int declareResource(String resourceName, String resourceType, String resourcePackage) { int layoutId = nextResourceId(); when(mockResources.getIdentifier(resourceName, resourceType, resourcePackage)).thenReturn(layoutId); return layoutId; } private int resourceIdCounter = 1; private int nextResourceId() { return resourceIdCounter++; } public Context build() { return mockContext; } }