Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae499d19 authored by Andrew Flynn's avatar Andrew Flynn Committed by Android (Google) Code Review
Browse files

Merge "SystemUI Carrier Network Change unit tests" into mnc-dev

parents 05dc201f 5e751478
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -153,7 +153,11 @@ public abstract class SignalController<T extends SignalController.State,
                return getIcons().mSbDarkIcons[mCurrentState.inetCondition][mCurrentState.level];
                return getIcons().mSbDarkIcons[mCurrentState.inetCondition][mCurrentState.level];
            }
            }
        } else if (mCurrentState.enabled) {
        } else if (mCurrentState.enabled) {
            if (light) {
                return getIcons().mSbDiscState;
                return getIcons().mSbDiscState;
            } else {
                return getIcons().mSbDarkDiscState;
            }
        } else {
        } else {
            return getIcons().mSbNullState;
            return getIcons().mSbNullState;
        }
        }
+18 −3
Original line number Original line Diff line number Diff line
@@ -234,6 +234,11 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
        mPhoneStateListener.onDataActivity(dataActivity);
        mPhoneStateListener.onDataActivity(dataActivity);
    }
    }


    public void setCarrierNetworkChange(boolean enable) {
        Log.d(TAG, "setCarrierNetworkChange(" + enable + ")");
        mPhoneStateListener.onCarrierNetworkChange(enable);
    }

    protected void verifyHasNoSims(boolean hasNoSimsVisible) {
    protected void verifyHasNoSims(boolean hasNoSimsVisible) {
        ArgumentCaptor<Boolean> hasNoSimsArg = ArgumentCaptor.forClass(Boolean.class);
        ArgumentCaptor<Boolean> hasNoSimsArg = ArgumentCaptor.forClass(Boolean.class);


@@ -273,19 +278,29 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
    }
    }


    protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon) {
    protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon) {
        ArgumentCaptor<Integer> iconArg = ArgumentCaptor.forClass(Integer.class);
        verifyLastMobileDataIndicators(visible, icon, icon, typeIcon);
    }

    protected void verifyLastMobileDataIndicators(boolean visible, int strengthIcon,
            int darkStrengthIcon, int typeIcon) {
        ArgumentCaptor<Integer> strengthIconArg = ArgumentCaptor.forClass(Integer.class);
        ArgumentCaptor<Integer> darkStrengthIconArg = ArgumentCaptor.forClass(Integer.class);
        ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
        ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
        ArgumentCaptor<Boolean> visibleArg = ArgumentCaptor.forClass(Boolean.class);
        ArgumentCaptor<Boolean> visibleArg = ArgumentCaptor.forClass(Boolean.class);


        // TODO: Verify all fields.
        // TODO: Verify all fields.
        Mockito.verify(mSignalCluster, Mockito.atLeastOnce()).setMobileDataIndicators(
        Mockito.verify(mSignalCluster, Mockito.atLeastOnce()).setMobileDataIndicators(
                visibleArg.capture(), iconArg.capture(), iconArg.capture(), typeIconArg.capture(),
                visibleArg.capture(), strengthIconArg.capture(), darkStrengthIconArg.capture(),
                typeIconArg.capture(),
                ArgumentCaptor.forClass(String.class).capture(),
                ArgumentCaptor.forClass(String.class).capture(),
                ArgumentCaptor.forClass(String.class).capture(),
                ArgumentCaptor.forClass(String.class).capture(),
                ArgumentCaptor.forClass(Boolean.class).capture(),
                ArgumentCaptor.forClass(Boolean.class).capture(),
                ArgumentCaptor.forClass(Integer.class).capture());
                ArgumentCaptor.forClass(Integer.class).capture());


        assertEquals("Signal icon in status bar", icon, (int) iconArg.getValue());
        assertEquals("Signal strength icon in status bar", strengthIcon,
                (int) strengthIconArg.getValue());
        assertEquals("Signal strength icon (dark mode) in status bar", darkStrengthIcon,
                (int) darkStrengthIconArg.getValue());
        assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue());
        assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue());
        assertEquals("Visibility in status bar", visible, (boolean) visibleArg.getValue());
        assertEquals("Visibility in status bar", visible, (boolean) visibleArg.getValue());
    }
    }
+61 −0
Original line number Original line Diff line number Diff line
@@ -396,4 +396,65 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
              false /* dataOut */);
              false /* dataOut */);


    }
    }

    public void testCarrierNetworkChange_carrierNetworkChangeWhileConnected() {
      int strength = SignalStrength.SIGNAL_STRENGTH_GREAT;

      setupDefaultSignal();
      setLevel(strength);

      // API call is made
      setCarrierNetworkChange(true /* enabled */);

      // Boolean value is set, but we still have a signal, should be showing normal
      verifyLastMobileDataIndicators(true /* visible */,
              TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */,
              DEFAULT_ICON /* typeIcon */);

      // Lose voice but still have data
      setVoiceRegState(ServiceState.STATE_OUT_OF_SERVICE);
      verifyLastMobileDataIndicators(true /* visible */,
              TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */,
              DEFAULT_ICON /* typeIcon */);

      // Voice but no data
      setVoiceRegState(ServiceState.STATE_IN_SERVICE);
      setDataRegState(ServiceState.STATE_OUT_OF_SERVICE);
      verifyLastMobileDataIndicators(true /* visible */,
              TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */,
              DEFAULT_ICON /* typeIcon */);
    }

    public void testCarrierNetworkChange_carrierNetworkChangeWhileDisconnected() {
      int strength = SignalStrength.SIGNAL_STRENGTH_GREAT;

      setupDefaultSignal();
      setLevel(strength);

      // Verify baseline
      verifyLastMobileDataIndicators(true /* visible */,
              TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */,
              DEFAULT_ICON /* typeIcon */);

      // API call is made and all connectivity lost
      setCarrierNetworkChange(true /* enabled */);
      setVoiceRegState(ServiceState.STATE_OUT_OF_SERVICE);
      setDataRegState(ServiceState.STATE_OUT_OF_SERVICE);

      // Out of service and carrier network change is true, show special indicator
      verifyLastMobileDataIndicators(true /* visible */,
              TelephonyIcons.TELEPHONY_CARRIER_NETWORK_CHANGE[0][0] /* strengthIcon */,
              TelephonyIcons.TELEPHONY_CARRIER_NETWORK_CHANGE_DARK[0][0] /* darkStrengthIcon */,
              0 /* typeIcon */);

      // Revert back
      setCarrierNetworkChange(false /* enabled */);
      setVoiceRegState(ServiceState.STATE_IN_SERVICE);
      setDataRegState(ServiceState.STATE_IN_SERVICE);

      // Verify back in previous state
      verifyLastMobileDataIndicators(true /* visible */,
              TelephonyIcons.TELEPHONY_SIGNAL_STRENGTH[1][strength] /* strengthIcon */,
              DEFAULT_ICON /* typeIcon */);
    }
}
}