blob: 6fe776842eaf837e5c826b2dcffa3447cf94f454 [file] [log] [blame]
Jason Monkda68f592015-01-07 10:55:58 -05001/*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Jason Monke0cdb602014-11-05 12:39:45 -050016
17package com.android.systemui.statusbar.policy;
18
Jason Monke0cdb602014-11-05 12:39:45 -050019import android.content.Intent;
20import android.net.ConnectivityManager;
Jason Monkd8e4bf42014-12-12 10:23:12 -050021import android.net.NetworkCapabilities;
Jason Monkf13b4b32014-11-07 16:39:34 -050022import android.net.wifi.WifiManager;
Jason Monk07b75fe2015-05-14 16:47:03 -040023import android.os.Looper;
Jason Monke0cdb602014-11-05 12:39:45 -050024import android.telephony.PhoneStateListener;
25import android.telephony.ServiceState;
26import android.telephony.SignalStrength;
Jason Monkb5746272014-11-12 16:50:31 -050027import android.telephony.SubscriptionInfo;
28import android.telephony.SubscriptionManager;
Jason Monkf13b4b32014-11-07 16:39:34 -050029import android.telephony.TelephonyManager;
Jason Monke0cdb602014-11-05 12:39:45 -050030import android.util.Log;
Jason Monkf13b4b32014-11-07 16:39:34 -050031import com.android.internal.telephony.cdma.EriInfo;
Jason Monkf668d7c2016-01-14 10:38:41 -050032import com.android.settingslib.net.DataUsageController;
Jason Monk33f8ae72015-05-08 10:45:15 -040033import com.android.systemui.statusbar.policy.NetworkController.IconState;
Jason Monke06b0652016-03-02 16:35:27 -050034import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
Jason Monkd2263cd2014-11-10 14:22:56 -050035import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config;
Jason Monkc6cc6262015-06-11 11:10:15 -040036import com.android.systemui.statusbar.policy.NetworkControllerImpl.SubscriptionDefaults;
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040037import com.android.systemui.SysuiTestCase;
Jason Monk88529052016-11-04 13:29:58 -040038
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040039import org.junit.Before;
Geoffrey Pitschd80035a2016-09-14 09:34:17 -040040import org.junit.Rule;
41import org.junit.rules.TestWatcher;
42import org.junit.runner.Description;
Jason Monkda68f592015-01-07 10:55:58 -050043import org.mockito.ArgumentCaptor;
44import org.mockito.Mockito;
45
46import java.io.PrintWriter;
47import java.io.StringWriter;
48import java.util.ArrayList;
49import java.util.List;
50
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -040051import static junit.framework.Assert.assertEquals;
Jason Monk26ad85a2016-12-08 14:45:42 -050052
53import static org.mockito.Matchers.any;
54import static org.mockito.Matchers.anyBoolean;
55import static org.mockito.Matchers.anyInt;
56import static org.mockito.Matchers.anyString;
Jason Monkf6a3cf92016-02-29 13:01:08 -050057import static org.mockito.Mockito.mock;
58import static org.mockito.Mockito.when;
59
Chris Wren930ecca2014-11-12 17:43:41 -050060public class NetworkControllerBaseTest extends SysuiTestCase {
Jason Monke0cdb602014-11-05 12:39:45 -050061 private static final String TAG = "NetworkControllerBaseTest";
Jason Monkf13b4b32014-11-07 16:39:34 -050062 protected static final int DEFAULT_LEVEL = 2;
63 protected static final int DEFAULT_SIGNAL_STRENGTH =
64 TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][DEFAULT_LEVEL];
65 protected static final int DEFAULT_QS_SIGNAL_STRENGTH =
66 TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][DEFAULT_LEVEL];
67 protected static final int DEFAULT_ICON = TelephonyIcons.ICON_3G;
68 protected static final int DEFAULT_QS_ICON = TelephonyIcons.QS_ICON_3G;
Jason Monke0cdb602014-11-05 12:39:45 -050069
70 protected NetworkControllerImpl mNetworkController;
Leigh Anned0a62792014-11-13 14:27:10 -080071 protected MobileSignalController mMobileSignalController;
Jason Monke0cdb602014-11-05 12:39:45 -050072 protected PhoneStateListener mPhoneStateListener;
Jason Monk67b2c162016-01-12 10:24:09 -050073 protected SignalStrength mSignalStrength;
74 protected ServiceState mServiceState;
Jason Monkf13b4b32014-11-07 16:39:34 -050075 protected ConnectivityManager mMockCm;
76 protected WifiManager mMockWm;
Jason Monkb5746272014-11-12 16:50:31 -050077 protected SubscriptionManager mMockSm;
Jason Monkf13b4b32014-11-07 16:39:34 -050078 protected TelephonyManager mMockTm;
Jason Monkd2263cd2014-11-10 14:22:56 -050079 protected Config mConfig;
Jason Monk07b75fe2015-05-14 16:47:03 -040080 protected CallbackHandler mCallbackHandler;
Jason Monkc6cc6262015-06-11 11:10:15 -040081 protected SubscriptionDefaults mMockSubDefaults;
Jason Monke0cdb602014-11-05 12:39:45 -050082
Jason Monk18985e02015-01-07 12:07:06 -050083 protected int mSubId;
84
Jason Monkd8e4bf42014-12-12 10:23:12 -050085 private NetworkCapabilities mNetCapabilities;
86
Geoffrey Pitschd80035a2016-09-14 09:34:17 -040087 @Rule
88 public TestWatcher failWatcher = new TestWatcher() {
89 @Override
90 protected void failed(Throwable e, Description description) {
91 // Print out mNetworkController state if the test fails.
92 StringWriter sw = new StringWriter();
93 PrintWriter pw = new PrintWriter(sw);
94 mNetworkController.dump(null, pw, null);
95 pw.flush();
96 Log.d(TAG, sw.toString());
97 }
98 };
99
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400100 @Before
101 public void setUp() throws Exception {
Jason Monkf13b4b32014-11-07 16:39:34 -0500102 mMockWm = mock(WifiManager.class);
103 mMockTm = mock(TelephonyManager.class);
Jason Monkb5746272014-11-12 16:50:31 -0500104 mMockSm = mock(SubscriptionManager.class);
Jason Monkf13b4b32014-11-07 16:39:34 -0500105 mMockCm = mock(ConnectivityManager.class);
Jason Monkc6cc6262015-06-11 11:10:15 -0400106 mMockSubDefaults = mock(SubscriptionDefaults.class);
Jason Monkd8e4bf42014-12-12 10:23:12 -0500107 mNetCapabilities = new NetworkCapabilities();
Jason Monkf13b4b32014-11-07 16:39:34 -0500108 when(mMockCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(true);
Jason Monkd8e4bf42014-12-12 10:23:12 -0500109 when(mMockCm.getDefaultNetworkCapabilitiesForUser(0)).thenReturn(
110 new NetworkCapabilities[] { mNetCapabilities });
Jason Monke0cdb602014-11-05 12:39:45 -0500111
Jason Monke0cdb602014-11-05 12:39:45 -0500112 mSignalStrength = mock(SignalStrength.class);
113 mServiceState = mock(ServiceState.class);
Jason Monkf13b4b32014-11-07 16:39:34 -0500114
Jason Monkd2263cd2014-11-10 14:22:56 -0500115 mConfig = new Config();
116 mConfig.hspaDataDistinguishable = true;
Jason Monk07b75fe2015-05-14 16:47:03 -0400117 mCallbackHandler = mock(CallbackHandler.class);
Jason Monkb5746272014-11-12 16:50:31 -0500118 mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
Jason Monk07b75fe2015-05-14 16:47:03 -0400119 mConfig, Looper.getMainLooper(), mCallbackHandler,
Jason Monkf668d7c2016-01-14 10:38:41 -0500120 mock(AccessPointControllerImpl.class), mock(DataUsageController.class),
Jason Monkc6cc6262015-06-11 11:10:15 -0400121 mMockSubDefaults);
Jason Monkf13b4b32014-11-07 16:39:34 -0500122 setupNetworkController();
Jason Monkc6cc6262015-06-11 11:10:15 -0400123
124 // Trigger blank callbacks to always get the current state (some tests don't trigger
125 // changes from default state).
Jason Monk88529052016-11-04 13:29:58 -0400126 mNetworkController.addCallback(mock(SignalCallback.class));
Jason Monkc6cc6262015-06-11 11:10:15 -0400127 mNetworkController.addEmergencyListener(null);
Jason Monkf13b4b32014-11-07 16:39:34 -0500128 }
129
130 protected void setupNetworkController() {
Jason Monkb5746272014-11-12 16:50:31 -0500131 // For now just pretend to be the data sim, so we can test that too.
Jason Monk07b75fe2015-05-14 16:47:03 -0400132 mSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
Jason Monkf6a3cf92016-02-29 13:01:08 -0500133 when(mMockTm.getDataEnabled(mSubId)).thenReturn(true);
Jason Monkc6cc6262015-06-11 11:10:15 -0400134 setDefaultSubId(mSubId);
135 setSubscriptions(mSubId);
Jason Monkfd57ea72016-04-29 13:37:58 -0400136 mNetworkController.handleSetUserSetupComplete(true);
Jason Monk18985e02015-01-07 12:07:06 -0500137 mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId);
Leigh Anned0a62792014-11-13 14:27:10 -0800138 mPhoneStateListener = mMobileSignalController.mPhoneStateListener;
Jason Monkc6cc6262015-06-11 11:10:15 -0400139 }
Jason Monk07b75fe2015-05-14 16:47:03 -0400140
Jason Monkc6cc6262015-06-11 11:10:15 -0400141 protected void setDefaultSubId(int subId) {
142 when(mMockSubDefaults.getDefaultDataSubId()).thenReturn(subId);
143 when(mMockSubDefaults.getDefaultVoiceSubId()).thenReturn(subId);
144 }
145
146 protected void setSubscriptions(int... subIds) {
147 List<SubscriptionInfo> subs = new ArrayList<SubscriptionInfo>();
148 for (int subId : subIds) {
149 SubscriptionInfo subscription = mock(SubscriptionInfo.class);
150 when(subscription.getSubscriptionId()).thenReturn(subId);
151 subs.add(subscription);
152 }
153 when(mMockSm.getActiveSubscriptionInfoList()).thenReturn(subs);
154 mNetworkController.doUpdateMobileControllers();
Jason Monke0cdb602014-11-05 12:39:45 -0500155 }
156
Leigh Anned0a62792014-11-13 14:27:10 -0800157 protected NetworkControllerImpl setUpNoMobileData() {
158 when(mMockCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
159 NetworkControllerImpl networkControllerNoMobile
160 = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
Geoffrey Pitsch2c403db2016-08-26 09:09:39 -0400161 mConfig, mContext.getMainLooper(), mCallbackHandler,
Jason Monk07b75fe2015-05-14 16:47:03 -0400162 mock(AccessPointControllerImpl.class),
Jason Monkf668d7c2016-01-14 10:38:41 -0500163 mock(DataUsageController.class), mMockSubDefaults);
Leigh Anned0a62792014-11-13 14:27:10 -0800164
165 setupNetworkController();
166
167 return networkControllerNoMobile;
168
169 }
170
Jason Monkf13b4b32014-11-07 16:39:34 -0500171 // 2 Bars 3G GSM.
172 public void setupDefaultSignal() {
173 setIsGsm(true);
174 setVoiceRegState(ServiceState.STATE_IN_SERVICE);
175 setGsmRoaming(false);
176 setLevel(DEFAULT_LEVEL);
177 updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
178 TelephonyManager.NETWORK_TYPE_UMTS);
Jason Monk33f8ae72015-05-08 10:45:15 -0400179 setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, true, true);
Jason Monkf13b4b32014-11-07 16:39:34 -0500180 }
181
Jason Monk33f8ae72015-05-08 10:45:15 -0400182 public void setConnectivity(int networkType, boolean inetCondition, boolean isConnected) {
Jason Monke0cdb602014-11-05 12:39:45 -0500183 Intent i = new Intent(ConnectivityManager.INET_CONDITION_ACTION);
Jason Monkd8e4bf42014-12-12 10:23:12 -0500184 // TODO: Separate out into several NetworkCapabilities.
185 if (isConnected) {
186 mNetCapabilities.addTransportType(networkType);
187 } else {
188 mNetCapabilities.removeTransportType(networkType);
189 }
Jason Monk33f8ae72015-05-08 10:45:15 -0400190 if (inetCondition) {
Jason Monkd8e4bf42014-12-12 10:23:12 -0500191 mNetCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
192 } else {
193 mNetCapabilities.removeCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
194 }
Jason Monke0cdb602014-11-05 12:39:45 -0500195
Jason Monke0cdb602014-11-05 12:39:45 -0500196 mNetworkController.onReceive(mContext, i);
197 }
198
199 public void setGsmRoaming(boolean isRoaming) {
200 when(mServiceState.getRoaming()).thenReturn(isRoaming);
201 updateServiceState();
202 }
203
Jason Monkf13b4b32014-11-07 16:39:34 -0500204 public void setCdmaRoaming(boolean isRoaming) {
205 when(mServiceState.getCdmaEriIconIndex()).thenReturn(isRoaming ?
206 EriInfo.ROAMING_INDICATOR_ON : EriInfo.ROAMING_INDICATOR_OFF);
207 when(mServiceState.getCdmaEriIconMode()).thenReturn(isRoaming ?
208 EriInfo.ROAMING_ICON_MODE_NORMAL : -1);
209 updateServiceState();
210 }
211
Jason Monke0cdb602014-11-05 12:39:45 -0500212 public void setVoiceRegState(int voiceRegState) {
213 when(mServiceState.getVoiceRegState()).thenReturn(voiceRegState);
214 updateServiceState();
215 }
216
Jason Monkf13b4b32014-11-07 16:39:34 -0500217 public void setDataRegState(int dataRegState) {
218 when(mServiceState.getDataRegState()).thenReturn(dataRegState);
219 updateServiceState();
220 }
221
Jason Monke0cdb602014-11-05 12:39:45 -0500222 public void setIsEmergencyOnly(boolean isEmergency) {
223 when(mServiceState.isEmergencyOnly()).thenReturn(isEmergency);
224 updateServiceState();
225 }
226
227 public void setCdmaLevel(int level) {
228 when(mSignalStrength.getCdmaLevel()).thenReturn(level);
229 updateSignalStrength();
230 }
231
232 public void setLevel(int level) {
233 when(mSignalStrength.getLevel()).thenReturn(level);
234 updateSignalStrength();
235 }
236
237 public void setIsGsm(boolean gsm) {
238 when(mSignalStrength.isGsm()).thenReturn(gsm);
239 updateSignalStrength();
240 }
241
242 public void setCdmaEri(int index, int mode) {
243 // TODO: Figure this out.
244 }
245
246 private void updateSignalStrength() {
247 Log.d(TAG, "Sending Signal Strength: " + mSignalStrength);
248 mPhoneStateListener.onSignalStrengthsChanged(mSignalStrength);
249 }
250
Jason Monk67b2c162016-01-12 10:24:09 -0500251 protected void updateServiceState() {
Jason Monke0cdb602014-11-05 12:39:45 -0500252 Log.d(TAG, "Sending Service State: " + mServiceState);
253 mPhoneStateListener.onServiceStateChanged(mServiceState);
254 }
255
256 public void updateCallState(int state) {
257 // Inputs not currently used in NetworkControllerImpl.
258 mPhoneStateListener.onCallStateChanged(state, "0123456789");
259 }
260
261 public void updateDataConnectionState(int dataState, int dataNetType) {
Jason Monk67b2c162016-01-12 10:24:09 -0500262 when(mServiceState.getDataNetworkType()).thenReturn(dataNetType);
Jason Monke0cdb602014-11-05 12:39:45 -0500263 mPhoneStateListener.onDataConnectionStateChanged(dataState, dataNetType);
264 }
265
266 public void updateDataActivity(int dataActivity) {
267 mPhoneStateListener.onDataActivity(dataActivity);
268 }
269
Andrew Flynn5e751472015-05-01 11:50:07 -0400270 public void setCarrierNetworkChange(boolean enable) {
271 Log.d(TAG, "setCarrierNetworkChange(" + enable + ")");
272 mPhoneStateListener.onCarrierNetworkChange(enable);
273 }
274
Jason Monk21d05a02014-12-02 12:46:58 -0500275 protected void verifyHasNoSims(boolean hasNoSimsVisible) {
276 ArgumentCaptor<Boolean> hasNoSimsArg = ArgumentCaptor.forClass(Boolean.class);
277
Jason Monk07b75fe2015-05-14 16:47:03 -0400278 Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setNoSims(hasNoSimsArg.capture());
279 assertEquals("No sims", hasNoSimsVisible, (boolean) hasNoSimsArg.getValue());
Jason Monk21d05a02014-12-02 12:46:58 -0500280 }
281
Jason Monkf13b4b32014-11-07 16:39:34 -0500282 protected void verifyLastQsMobileDataIndicators(boolean visible, int icon, int typeIcon,
Jason Monkb5746272014-11-12 16:50:31 -0500283 boolean dataIn, boolean dataOut) {
Jason Monk07b75fe2015-05-14 16:47:03 -0400284 ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
Jason Monkf13b4b32014-11-07 16:39:34 -0500285 ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
Jason Monkf13b4b32014-11-07 16:39:34 -0500286 ArgumentCaptor<Boolean> dataInArg = ArgumentCaptor.forClass(Boolean.class);
287 ArgumentCaptor<Boolean> dataOutArg = ArgumentCaptor.forClass(Boolean.class);
Jason Monkf13b4b32014-11-07 16:39:34 -0500288
Jason Monk07b75fe2015-05-14 16:47:03 -0400289 Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setMobileDataIndicators(
Jason Monk26ad85a2016-12-08 14:45:42 -0500290 any(),
Jason Monk07b75fe2015-05-14 16:47:03 -0400291 iconArg.capture(),
Jason Monk26ad85a2016-12-08 14:45:42 -0500292 anyInt(),
Jason Monk07b75fe2015-05-14 16:47:03 -0400293 typeIconArg.capture(), dataInArg.capture(), dataOutArg.capture(),
Jason Monk26ad85a2016-12-08 14:45:42 -0500294 anyString(), anyString(), anyBoolean(), anyInt());
Jason Monk07b75fe2015-05-14 16:47:03 -0400295 IconState iconState = iconArg.getValue();
296 assertEquals("Visibility in, quick settings", visible, iconState.visible);
297 assertEquals("Signal icon in, quick settings", icon, iconState.icon);
Jason Monkf13b4b32014-11-07 16:39:34 -0500298 assertEquals("Data icon in, quick settings", typeIcon, (int) typeIconArg.getValue());
299 assertEquals("Data direction in, in quick settings", dataIn,
300 (boolean) dataInArg.getValue());
301 assertEquals("Data direction out, in quick settings", dataOut,
302 (boolean) dataOutArg.getValue());
Jason Monkf13b4b32014-11-07 16:39:34 -0500303 }
304
305 protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon) {
Jason Monk07b75fe2015-05-14 16:47:03 -0400306 ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
Jason Monkf13b4b32014-11-07 16:39:34 -0500307 ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
Jason Monke0cdb602014-11-05 12:39:45 -0500308
309 // TODO: Verify all fields.
Jason Monk07b75fe2015-05-14 16:47:03 -0400310 Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setMobileDataIndicators(
311 iconArg.capture(),
Jason Monk26ad85a2016-12-08 14:45:42 -0500312 any(),
Andrew Flynn2fdbe122015-06-01 16:34:21 -0400313 typeIconArg.capture(),
Jason Monk26ad85a2016-12-08 14:45:42 -0500314 anyInt(), anyBoolean(), anyBoolean(), anyString(), anyString(), anyBoolean(),
315 anyInt());
Jason Monk07b75fe2015-05-14 16:47:03 -0400316 IconState iconState = iconArg.getValue();
Jason Monke0cdb602014-11-05 12:39:45 -0500317
Jason Monkf13b4b32014-11-07 16:39:34 -0500318 assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue());
Jason Monk07b75fe2015-05-14 16:47:03 -0400319 assertEquals("Visibility in status bar", visible, iconState.visible);
Jason Monke0cdb602014-11-05 12:39:45 -0500320 }
Leigh Anned0a62792014-11-13 14:27:10 -0800321
Jason Monk26ad85a2016-12-08 14:45:42 -0500322 protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon,
323 boolean qsVisible, int qsIcon, int qsTypeIcon, boolean dataIn, boolean dataOut) {
324 ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
325 ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
326 ArgumentCaptor<IconState> qsIconArg = ArgumentCaptor.forClass(IconState.class);
327 ArgumentCaptor<Integer> qsTypeIconArg = ArgumentCaptor.forClass(Integer.class);
328 ArgumentCaptor<Boolean> dataInArg = ArgumentCaptor.forClass(Boolean.class);
329 ArgumentCaptor<Boolean> dataOutArg = ArgumentCaptor.forClass(Boolean.class);
330
331 Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setMobileDataIndicators(
332 iconArg.capture(),
333 qsIconArg.capture(),
334 typeIconArg.capture(),
335 qsTypeIconArg.capture(),
336 dataInArg.capture(),
337 dataOutArg.capture(),
338 anyString(), anyString(), anyBoolean(), anyInt());
339
340 IconState iconState = iconArg.getValue();
341
342 assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue());
343 assertEquals("Signal icon in status bar", icon, iconState.icon);
344 assertEquals("Visibility in status bar", visible, iconState.visible);
345
346 iconState = qsIconArg.getValue();
347 assertEquals("Visibility in quick settings", qsVisible, iconState.visible);
348 assertEquals("Signal icon in quick settings", qsIcon, iconState.icon);
349 assertEquals("Data icon in quick settings", qsTypeIcon, (int) qsTypeIconArg.getValue());
350 assertEquals("Data direction in in quick settings", dataIn,
351 (boolean) dataInArg.getValue());
352 assertEquals("Data direction out in quick settings", dataOut,
353 (boolean) dataOutArg.getValue());
354 }
355
Leigh Anned0a62792014-11-13 14:27:10 -0800356 protected void assertNetworkNameEquals(String expected) {
Jason Monk07b75fe2015-05-14 16:47:03 -0400357 assertEquals("Network name", expected, mMobileSignalController.getState().networkName);
Leigh Anned0a62792014-11-13 14:27:10 -0800358 }
Jason Monke0cdb602014-11-05 12:39:45 -0500359}