1package com.android.systemui.statusbar.policy;
2
3import org.mockito.Mockito;
4
5import android.telephony.TelephonyManager;
6
7public class NetworkControllerDataTest extends NetworkControllerBaseTest {
8
9    public void test3gDataIcon() {
10        setupDefaultSignal();
11
12        verifyDataIndicators(TelephonyIcons.DATA_3G[1][0 /* No direction */],
13                TelephonyIcons.QS_DATA_3G[1]);
14    }
15
16    public void testRoamingDataIcon() {
17        setupDefaultSignal();
18        setGsmRoaming(true);
19
20        verifyLastMobileDataIndicators(true,
21                TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH_ROAMING[1][DEFAULT_LEVEL],
22                TelephonyIcons.ROAMING_ICON);
23        verifyLastQsMobileDataIndicators(true,
24                TelephonyIcons.QS_TELEPHONY_SIGNAL_STRENGTH[1][DEFAULT_LEVEL],
25                TelephonyIcons.QS_DATA_R[1], false, false);
26    }
27
28    public void test2gDataIcon() {
29        setupDefaultSignal();
30        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
31                TelephonyManager.NETWORK_TYPE_GSM);
32
33        verifyDataIndicators(TelephonyIcons.DATA_G[1][0 /* No direction */],
34                TelephonyIcons.QS_DATA_G[1]);
35    }
36
37    public void testCdmaDataIcon() {
38        setupDefaultSignal();
39        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
40                TelephonyManager.NETWORK_TYPE_CDMA);
41
42        verifyDataIndicators(TelephonyIcons.DATA_1X[1][0 /* No direction */],
43                TelephonyIcons.QS_DATA_1X[1]);
44    }
45
46    public void testEdgeDataIcon() {
47        setupDefaultSignal();
48        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
49                TelephonyManager.NETWORK_TYPE_EDGE);
50
51        verifyDataIndicators(TelephonyIcons.DATA_E[1][0 /* No direction */],
52                TelephonyIcons.QS_DATA_E[1]);
53    }
54
55    public void testLteDataIcon() {
56        setupDefaultSignal();
57        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
58                TelephonyManager.NETWORK_TYPE_LTE);
59
60        verifyDataIndicators(TelephonyIcons.DATA_LTE[1][0 /* No direction */],
61                TelephonyIcons.QS_DATA_LTE[1]);
62    }
63
64    public void testHspaDataIcon() {
65        setupDefaultSignal();
66        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
67                TelephonyManager.NETWORK_TYPE_HSPA);
68
69        verifyDataIndicators(TelephonyIcons.DATA_H[1][0 /* No direction */],
70                TelephonyIcons.QS_DATA_H[1]);
71    }
72
73    public void test4gDataIcon() {
74        // Switch to showing 4g icon and re-initialize the NetworkController.
75        mConfig.show4gForLte = true;
76        mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
77                mConfig, Mockito.mock(AccessPointControllerImpl.class),
78                Mockito.mock(MobileDataControllerImpl.class));
79        setupNetworkController();
80
81        setupDefaultSignal();
82        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
83                TelephonyManager.NETWORK_TYPE_LTE);
84
85        verifyDataIndicators(TelephonyIcons.DATA_4G[1][0 /* No direction */],
86                TelephonyIcons.QS_DATA_4G[1]);
87    }
88
89    public void test4gDataIconConfigChange() {
90        setupDefaultSignal();
91        updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
92                TelephonyManager.NETWORK_TYPE_LTE);
93
94        // Switch to showing 4g icon and re-initialize the NetworkController.
95        mConfig.show4gForLte = true;
96        // Can't send the broadcast as that would actually read the config from
97        // the context.  Instead we'll just poke at a function that does all of
98        // the after work.
99        mNetworkController.handleConfigurationChanged();
100
101        verifyDataIndicators(TelephonyIcons.DATA_4G[1][0 /* No direction */],
102                TelephonyIcons.QS_DATA_4G[1]);
103    }
104
105    public void testDataActivity() {
106        setupDefaultSignal();
107
108        testDataActivity(TelephonyManager.DATA_ACTIVITY_NONE, false, false);
109        testDataActivity(TelephonyManager.DATA_ACTIVITY_IN, true, false);
110        testDataActivity(TelephonyManager.DATA_ACTIVITY_OUT, false, true);
111        testDataActivity(TelephonyManager.DATA_ACTIVITY_INOUT, true, true);
112    }
113
114    private void testDataActivity(int direction, boolean in, boolean out) {
115        updateDataActivity(direction);
116
117        verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, DEFAULT_ICON);
118        verifyLastQsMobileDataIndicators(true, DEFAULT_QS_SIGNAL_STRENGTH,
119                DEFAULT_QS_ICON, in, out);
120
121    }
122
123    private void verifyDataIndicators(int dataIcon, int qsDataIcon) {
124        verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, dataIcon);
125        verifyLastQsMobileDataIndicators(true, DEFAULT_QS_SIGNAL_STRENGTH, qsDataIcon, false,
126                false);
127    }
128
129}
130