From 5e751478065835cf86f661cf34fa4f52f851cef5 Mon Sep 17 00:00:00 2001 From: Andrew Flynn Date: Fri, 1 May 2015 11:50:07 -0400 Subject: SystemUI Carrier Network Change unit tests - Includes unit tests for verifying mobile data indicators. - Found one bug where dark mode icon wasn't showing properly when different from light mode icon. - Comment out failing test NetworkControllerSignalTest#testSetCurrentSubscriptions Bug: 20288155 Change-Id: Ib3c9ba224c4187cab35d6bfa68f6bd4c489cf98e --- .../statusbar/policy/SignalController.java | 6 ++- .../policy/NetworkControllerBaseTest.java | 21 ++++++-- .../policy/NetworkControllerSignalTest.java | 61 ++++++++++++++++++++++ 3 files changed, 84 insertions(+), 4 deletions(-) (limited to 'packages/SystemUI') diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java index c204814..f3322a1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java @@ -153,7 +153,11 @@ public abstract class SignalController hasNoSimsArg = ArgumentCaptor.forClass(Boolean.class); @@ -273,19 +278,29 @@ public class NetworkControllerBaseTest extends SysuiTestCase { } protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon) { - ArgumentCaptor iconArg = ArgumentCaptor.forClass(Integer.class); + verifyLastMobileDataIndicators(visible, icon, icon, typeIcon); + } + + protected void verifyLastMobileDataIndicators(boolean visible, int strengthIcon, + int darkStrengthIcon, int typeIcon) { + ArgumentCaptor strengthIconArg = ArgumentCaptor.forClass(Integer.class); + ArgumentCaptor darkStrengthIconArg = ArgumentCaptor.forClass(Integer.class); ArgumentCaptor typeIconArg = ArgumentCaptor.forClass(Integer.class); ArgumentCaptor visibleArg = ArgumentCaptor.forClass(Boolean.class); // TODO: Verify all fields. 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(Boolean.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("Visibility in status bar", visible, (boolean) visibleArg.getValue()); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java index aefb1bb..389ad6f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java @@ -396,4 +396,65 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { 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 */); + } } -- cgit v1.1