提交 51d3546e 编写于 作者: S Sam Judd

Add tests for AppWidget and NotificationTargets

上级 f5d05829
package com.bumptech.glide.request.target;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.graphics.Bitmap;
import android.widget.RemoteViews;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.shadows.ShadowAppWidgetManager;
@RunWith(RobolectricTestRunner.class)
@Config(manifest = Config.NONE, emulateSdk = 18, shadows = AppWidgetTargetTest.UpdateShadowAppWidgetManager.class)
public class AppWidgetTargetTest {
private UpdateShadowAppWidgetManager shadowManager;
private RemoteViews views;
private int viewId;
@Before
public void setUp() {
shadowManager = Robolectric.shadowOf_(AppWidgetManager.getInstance(Robolectric.application));
viewId = 1234;
views = mock(RemoteViews.class);
}
@Test
public void testSetsBitmapOnRemoteViewsWithViewIdWhenCreatedWithComponentName() {
ComponentName componentName = mock(ComponentName.class);
AppWidgetTarget target = new AppWidgetTarget(Robolectric.application, views, viewId, componentName);
Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
target.onResourceReady(bitmap, null /*glideAnimation*/);
verify(views).setImageViewBitmap(eq(viewId), eq(bitmap));
}
@Test
public void testUpdatesAppWidgetWhenCreatedWithComponentName() {
ComponentName componentName = mock(ComponentName.class);
AppWidgetTarget target = new AppWidgetTarget(Robolectric.application, views, viewId, componentName);
target.onResourceReady(Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888), null /*glideAnimation*/);
assertEquals(componentName, shadowManager.updatedComponentName);
assertEquals(views, shadowManager.updatedRemoteViews);
}
@Test
public void testSetsBitmapOnRemoteViewsWithViewIdWhenCreatedWithWidgetIds() {
int[] widgetIds = new int[] { 1 };
AppWidgetTarget target = new AppWidgetTarget(Robolectric.application, views, viewId, widgetIds);
Bitmap bitmap = Bitmap.createBitmap(100, 200, Bitmap.Config.RGB_565);
target.onResourceReady(bitmap, null /*glideAnimation*/);
verify(views).setImageViewBitmap(eq(viewId), eq(bitmap));
}
@Test
public void testUpdatesAppWidgetWhenCreatedWithWidgetIds() {
int[] widgetIds = new int[] { 1 };
AppWidgetTarget target = new AppWidgetTarget(Robolectric.application, views, viewId, widgetIds);
target.onResourceReady(Bitmap.createBitmap(200, 100, Bitmap.Config.ARGB_8888), null /*glideAnimation*/);
assertThat(widgetIds).isEqualTo(shadowManager.updatedWidgetIds);
assertEquals(views, shadowManager.updatedRemoteViews);
}
@Test(expected = NullPointerException.class)
public void testThrowsWhenGivenNullContextWithWidgetIds() {
new AppWidgetTarget(null /*context*/, views, 1234 /*viewId*/, 1 /*widgetIds*/);
}
@Test(expected = NullPointerException.class)
public void testThrowsWhenGivenNullContextWithComponentName() {
new AppWidgetTarget(null /*context*/, views, 1234 /*viewId*/, mock(ComponentName.class));
}
@Test(expected = NullPointerException.class)
public void testThrowsWhenGivenNullRemoteViewsWithWidgetIds() {
new AppWidgetTarget(Robolectric.application, null /*remoteViews*/, viewId, 1 /*widgetIds*/);
}
@Test(expected = NullPointerException.class)
public void testThrowsWhenGivenNullRemoteViewsWithComponentName() {
new AppWidgetTarget(Robolectric.application, null /*remoteViews*/, viewId, mock(ComponentName.class));
}
@Test(expected = NullPointerException.class)
public void testThrowsWhenGivenNullWidgetIds() {
new AppWidgetTarget(Robolectric.application, views, viewId, (int[]) null /*widgetIds*/);
}
@Test(expected = IllegalArgumentException.class)
public void testThrowsWhenGivenEmptyWidgetIds() {
new AppWidgetTarget(Robolectric.application, views, viewId);
}
@Test(expected = NullPointerException.class)
public void testThrowsWhenGivenNullComponentName() {
new AppWidgetTarget(Robolectric.application, views, viewId, (ComponentName) null);
}
@Implements(AppWidgetManager.class)
public static class UpdateShadowAppWidgetManager extends ShadowAppWidgetManager {
public int[] updatedWidgetIds;
public RemoteViews updatedRemoteViews;
public ComponentName updatedComponentName;
@Implementation
public void updateAppWidget(int[] appWidgetIds, RemoteViews views) {
updatedWidgetIds = appWidgetIds;
updatedRemoteViews = views;
}
@Implementation
public void updateAppWidget(ComponentName componentName, RemoteViews views) {
updatedComponentName = componentName;
updatedRemoteViews = views;
}
}
}
\ No newline at end of file
package com.bumptech.glide.request.target;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.widget.RemoteViews;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.shadows.ShadowNotificationManager;
@RunWith(RobolectricTestRunner.class)
@Config(manifest = Config.NONE, emulateSdk = 18, shadows = NotificationTargetTest.UpdateShadowNotificationManager.class)
public class NotificationTargetTest {
private UpdateShadowNotificationManager shadowManager;
private RemoteViews remoteViews;
private int viewId;
private Notification notification;
private int notificationId;
private NotificationTarget target;
@Before
public void setUp() {
NotificationManager notificationManager =
(NotificationManager) Robolectric.application.getSystemService(Context.NOTIFICATION_SERVICE);
shadowManager = Robolectric.shadowOf_(notificationManager);
remoteViews = mock(RemoteViews.class);
viewId = 123;
notification = mock(Notification.class);
notificationId = 456;
target = new NotificationTarget(Robolectric.application, remoteViews, viewId, 100 /*width*/, 100 /*height*/,
notification, notificationId);
}
@Test
public void testSetsBitmapOnRemoteViewsWithGivenImageIdOnResourceReady() {
Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
target.onResourceReady(bitmap, null /*glideAnimation*/);
verify(remoteViews).setImageViewBitmap(eq(viewId), eq(bitmap));
}
@Test
public void updatesNotificationManagerWithNotificationIdAndNotificationOnResourceReady() {
target.onResourceReady(Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888), null /*glideAnimation*/);
assertEquals(notificationId, shadowManager.updatedNotificationId);
assertEquals(notification, shadowManager.updatedNotification);
}
@Test(expected = NullPointerException.class)
public void testThrowsIfContextIsNull() {
new NotificationTarget(null /*context*/, mock(RemoteViews.class), 123 /*viewId*/, 100 /*width*/,
100 /*height*/, mock(Notification.class), 456 /*notificationId*/);
}
@Test(expected = NullPointerException.class)
public void testThrowsIfNotificationIsNull() {
new NotificationTarget(Robolectric.application, mock(RemoteViews.class), 123 /*viewId*/, 100 /*width*/,
100 /*height*/, null /*notification*/, 456 /*notificationId*/);
}
@Test(expected = NullPointerException.class)
public void testThrowsIfRemoteViewsIsNull() {
new NotificationTarget(Robolectric.application, null /*remoteViews*/, 123 /*viewId*/, 100 /*width*/,
100 /*height*/, mock(Notification.class), 456 /*notificationId*/);
}
@Implements(NotificationManager.class)
public static class UpdateShadowNotificationManager extends ShadowNotificationManager {
int updatedNotificationId;
Notification updatedNotification;
@Implementation
public void notify(int notificationId, Notification notification) {
updatedNotificationId = notificationId;
updatedNotification = notification;
}
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册