1package com.android.systemui.statusbar.policy;
2
3import android.net.NetworkCapabilities;
4import android.support.test.runner.AndroidJUnit4;
5import android.test.suitebuilder.annotation.SmallTest;
6
7import com.android.systemui.statusbar.policy.NetworkController.IconState;
8
9import org.junit.Test;
10import org.junit.runner.RunWith;
11import org.mockito.ArgumentCaptor;
12import org.mockito.Mockito;
13
14import static junit.framework.Assert.assertEquals;
15
16@SmallTest
17@RunWith(AndroidJUnit4.class)
18public class NetworkControllerEthernetTest extends NetworkControllerBaseTest {
19
20    @Test
21    public void testEthernetIcons() {
22        verifyLastEthernetIcon(false, 0);
23
24        setEthernetState(true, false);   // Connected, unvalidated.
25        verifyLastEthernetIcon(true, EthernetIcons.ETHERNET_ICONS[0][0]);
26
27        setEthernetState(true, true);    // Connected, validated.
28        verifyLastEthernetIcon(true, EthernetIcons.ETHERNET_ICONS[1][0]);
29
30        setEthernetState(true, false);   // Connected, unvalidated.
31        verifyLastEthernetIcon(true, EthernetIcons.ETHERNET_ICONS[0][0]);
32
33        setEthernetState(false, false);  // Disconnected.
34        verifyLastEthernetIcon(false, 0);
35    }
36
37    protected void setEthernetState(boolean connected, boolean validated) {
38        setConnectivity(NetworkCapabilities.TRANSPORT_ETHERNET, validated, connected);
39    }
40
41    protected void verifyLastEthernetIcon(boolean visible, int icon) {
42        ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
43
44        Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setEthernetIndicators(
45                iconArg.capture());
46        IconState iconState = iconArg.getValue();
47        assertEquals("Ethernet visible, in status bar", visible, iconState.visible);
48        assertEquals("Ethernet icon, in status bar", icon, iconState.icon);
49    }
50}
51