blob: 7355d4a505ddb55760a7b26a99ace7391a627658 [file] [log] [blame]
package com.xtremelabs.robolectric.shadows;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;
import com.xtremelabs.robolectric.Robolectric;
import com.xtremelabs.robolectric.WithTestDefaultsRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static com.xtremelabs.robolectric.Robolectric.shadowOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.sameInstance;
import static org.junit.Assert.*;
@RunWith(WithTestDefaultsRunner.class)
public class ConnectivityManagerTest {
private ConnectivityManager connectivityManager;
private ShadowNetworkInfo shadowOfActiveNetworkInfo;
private ShadowConnectivityManager shadowConnectivityManager;
@Before
public void setUp() throws Exception {
connectivityManager = (ConnectivityManager) Robolectric.application.getSystemService(Context.CONNECTIVITY_SERVICE);
shadowConnectivityManager = shadowOf(connectivityManager);
shadowOfActiveNetworkInfo = shadowOf(connectivityManager.getActiveNetworkInfo());
}
@Test
public void getConnectivityManagerShouldNotBeNull() {
assertNotNull(connectivityManager);
assertNotNull(connectivityManager.getActiveNetworkInfo());
}
@Test
public void networkInfoShouldReturnTrueCorrectly() {
shadowOfActiveNetworkInfo.setConnectionStatus(true);
assertTrue(connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting());
assertTrue(connectivityManager.getActiveNetworkInfo().isConnected());
}
@Test
public void getNetworkInfoShouldReturnAssignedValue() throws Exception {
NetworkInfo networkInfo = ShadowNetworkInfo.newInstance(NetworkInfo.DetailedState.CONNECTING);
shadowConnectivityManager.setNetworkInfo(ConnectivityManager.TYPE_WIFI, networkInfo);
NetworkInfo actual = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
assertThat(actual, sameInstance(networkInfo));
assertThat(actual.getDetailedState(), is(NetworkInfo.DetailedState.CONNECTING));
}
@Test
public void networkInfoShouldReturnFalseCorrectly() {
shadowOfActiveNetworkInfo.setConnectionStatus(false);
assertFalse(connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting());
assertFalse(connectivityManager.getActiveNetworkInfo().isConnected());
}
@Test
public void networkInfoShouldReturnTypeCorrectly(){
shadowOfActiveNetworkInfo.setConnectionType(ConnectivityManager.TYPE_MOBILE);
assertEquals(ConnectivityManager.TYPE_MOBILE, shadowOfActiveNetworkInfo.getType());
shadowOfActiveNetworkInfo.setConnectionType(ConnectivityManager.TYPE_WIFI);
assertEquals(ConnectivityManager.TYPE_WIFI, shadowOfActiveNetworkInfo.getType());
}
@Test
public void shouldGetAndSetBackgroundDataSetting() throws Exception {
assertFalse(connectivityManager.getBackgroundDataSetting());
shadowConnectivityManager.setBackgroundDataSetting(true);
assertTrue(connectivityManager.getBackgroundDataSetting());
}
@Test
public void shouldSetActiveNetworkInfo() throws Exception {
shadowConnectivityManager.setActiveNetworkInfo(null);
assertNull(connectivityManager.getActiveNetworkInfo());
shadowConnectivityManager.setActiveNetworkInfo(ShadowNetworkInfo.newInstance(null,
ConnectivityManager.TYPE_MOBILE_HIPRI,
TelephonyManager.NETWORK_TYPE_EDGE, true, false));
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
assertEquals(ConnectivityManager.TYPE_MOBILE_HIPRI, info.getType());
assertEquals(TelephonyManager.NETWORK_TYPE_EDGE, info.getSubtype());
assertTrue(info.isAvailable());
assertFalse(info.isConnected());
}
@Test
public void shouldGetAllNetworkInfo() throws Exception {
NetworkInfo[] infos = connectivityManager.getAllNetworkInfo();
assertNotNull(infos);
assertEquals(1, infos.length);
assertSame(connectivityManager.getActiveNetworkInfo(), infos[0]);
shadowConnectivityManager.setActiveNetworkInfo(null);
assertEquals(0, connectivityManager.getAllNetworkInfo().length);
}
}