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

Commit 10dced7a authored by Andrew Flynn's avatar Andrew Flynn Committed by Android Git Automerger
Browse files

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

* commit 'ae499d19':
  SystemUI Carrier Network Change unit tests
parents 01b321de ae499d19
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 */);
    }
}
}