blob: 730b2fa1fc1244f5ef1da012cd423961f3afe998 [file] [log] [blame]
package com.xtremelabs.robolectric.shadows;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v4.content.LocalBroadcastManager;
import com.xtremelabs.robolectric.Robolectric;
import com.xtremelabs.robolectric.WithTestDefaultsRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import static junit.framework.Assert.*;
@RunWith(WithTestDefaultsRunner.class)
public class LocalBroadcastManagerTest {
private static LocalBroadcastManager lastInstance;
@Test
public void shouldGetInstance() throws Exception {
LocalBroadcastManager instance = LocalBroadcastManager.getInstance(Robolectric.application);
assertNotNull(instance);
assertSame(instance, LocalBroadcastManager.getInstance(Robolectric.application));
}
@Test
public void shouldSendBroadcasts() throws Exception {
LocalBroadcastManager instance = LocalBroadcastManager.getInstance(Robolectric.application);
final boolean[] called = new boolean[1];
final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
called[0] = true;
}
};
instance.registerReceiver(receiver, new IntentFilter("com.foo"));
instance.sendBroadcast(new Intent("com.bar"));
assertFalse(called[0]);
instance.sendBroadcast(new Intent("com.foo"));
assertTrue(called[0]);
}
@Test
public void shouldUnregisterReceiver() throws Exception {
LocalBroadcastManager instance = LocalBroadcastManager.getInstance(Robolectric.application);
final boolean[] called = new boolean[1];
final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
called[0] = true;
}
};
instance.registerReceiver(receiver, new IntentFilter("com.foo"));
instance.unregisterReceiver(receiver);
instance.sendBroadcast(new Intent("com.foo"));
assertFalse(called[0]);
}
@Test
public void shouldResetStateBetweenTests1() throws Exception {
lastInstance = LocalBroadcastManager.getInstance(Robolectric.application);
assertNotNull(lastInstance);
}
@Test
public void shouldResetStateBetweenTests2() throws Exception {
assertNotNull(lastInstance);
assertNotSame(lastInstance, LocalBroadcastManager.getInstance(Robolectric.application));
lastInstance = null;
}
}