diff --git a/packages/SystemUI/tests/AndroidManifest.xml b/packages/SystemUI/tests/AndroidManifest.xml index 282560100cb44..5389c8047b26c 100644 --- a/packages/SystemUI/tests/AndroidManifest.xml +++ b/packages/SystemUI/tests/AndroidManifest.xml @@ -20,6 +20,8 @@ + + diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/TouchAnimatorTests.java b/packages/SystemUI/tests/src/com/android/systemui/qs/TouchAnimatorTests.java new file mode 100644 index 0000000000000..1d81fd478b52e --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/TouchAnimatorTests.java @@ -0,0 +1,188 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.android.systemui.qs; + +import android.view.View; +import com.android.systemui.SysuiTestCase; +import com.android.systemui.qs.TouchAnimator.Listener; +import org.mockito.Mockito; + +public class TouchAnimatorTests extends SysuiTestCase { + + private Listener mTouchListener; + private View mTestView; + + @Override + protected void setUp() throws Exception { + super.setUp(); + + mTestView = new View(getContext()); + mTouchListener = Mockito.mock(Listener.class); + } + + public void testSetValueFloat() { + TouchAnimator animator = new TouchAnimator.Builder() + .addFloat(mTestView, "x", 0, 50) + .build(); + + animator.setPosition(0); + assertEquals(0f, mTestView.getX()); + + animator.setPosition(.5f); + assertEquals(25f, mTestView.getX()); + + animator.setPosition(1); + assertEquals(50f, mTestView.getX()); + } + + public void testSetValueInt() { + TouchAnimator animator = new TouchAnimator.Builder() + .addInt(mTestView, "top", 0, 50) + .build(); + + animator.setPosition(0); + assertEquals(0, mTestView.getTop()); + + animator.setPosition(.5f); + assertEquals(25, mTestView.getTop()); + + animator.setPosition(1); + assertEquals(50, mTestView.getTop()); + } + + public void testStartDelay() { + TouchAnimator animator = new TouchAnimator.Builder() + .addFloat(mTestView, "x", 0, 50) + .setStartDelay(.5f) + .build(); + + animator.setPosition(0); + assertEquals(0f, mTestView.getX()); + + animator.setPosition(.5f); + assertEquals(0f, mTestView.getX()); + + animator.setPosition(.75f); + assertEquals(25f, mTestView.getX()); + + animator.setPosition(1); + assertEquals(50f, mTestView.getX()); + } + + public void testEndDelay() { + TouchAnimator animator = new TouchAnimator.Builder() + .addFloat(mTestView, "x", 0, 50) + .setEndDelay(.5f) + .build(); + + animator.setPosition(0); + assertEquals(0f, mTestView.getX()); + + animator.setPosition(.25f); + assertEquals(25f, mTestView.getX()); + + animator.setPosition(.5f); + assertEquals(50f, mTestView.getX()); + + animator.setPosition(1); + assertEquals(50f, mTestView.getX()); + } + + public void testOnAnimationAtStartCallback() { + TouchAnimator animator = new TouchAnimator.Builder() + .setListener(mTouchListener) + .build(); + + // Called on init. + animator.setPosition(0); + verifyOnAnimationAtStart(1); + + // Not called from same state. + animator.setPosition(0); + verifyOnAnimationAtStart(1); + + // Called after starting and moving back to start. + animator.setPosition(.5f); + animator.setPosition(0); + verifyOnAnimationAtStart(2); + + // Called when move from end to end. + animator.setPosition(1); + animator.setPosition(0); + verifyOnAnimationAtStart(3); + } + + public void testOnAnimationAtEndCallback() { + TouchAnimator animator = new TouchAnimator.Builder() + .setListener(mTouchListener) + .build(); + + // Called on init. + animator.setPosition(1); + verifyOnAnimationAtEnd(1); + + // Not called from same state. + animator.setPosition(1); + verifyOnAnimationAtEnd(1); + + // Called after starting and moving back to end. + animator.setPosition(.5f); + animator.setPosition(1); + verifyOnAnimationAtEnd(2); + + // Called when move from end to end. + animator.setPosition(0); + animator.setPosition(1); + verifyOnAnimationAtEnd(3); + } + + public void testOnAnimationStartedCallback() { + TouchAnimator animator = new TouchAnimator.Builder() + .setListener(mTouchListener) + .build(); + + // Called on init. + animator.setPosition(.5f); + verifyOnAnimationStarted(1); + + // Not called from same state. + animator.setPosition(.6f); + verifyOnAnimationStarted(1); + + // Called after going to end then moving again. + animator.setPosition(1); + animator.setPosition(.5f); + verifyOnAnimationStarted(2); + + // Called after moving to start then moving again. + animator.setPosition(0); + animator.setPosition(.5f); + verifyOnAnimationStarted(3); + } + + // TODO: Add test for interpolator. + + private void verifyOnAnimationAtStart(int times) { + Mockito.verify(mTouchListener, Mockito.times(times)).onAnimationAtStart(); + } + + private void verifyOnAnimationAtEnd(int times) { + Mockito.verify(mTouchListener, Mockito.times(times)).onAnimationAtEnd(); + } + + private void verifyOnAnimationStarted(int times) { + Mockito.verify(mTouchListener, Mockito.times(times)).onAnimationStarted(); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServicesTests.java b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServicesTests.java index c4ca039fab0c4..18412519af500 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServicesTests.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServicesTests.java @@ -19,6 +19,9 @@ import android.content.ComponentName; import android.os.Looper; import com.android.systemui.SysuiTestCase; import com.android.systemui.statusbar.phone.QSTileHost; +import com.android.systemui.statusbar.policy.DataSaverController; +import com.android.systemui.statusbar.policy.HotspotController; +import com.android.systemui.statusbar.policy.NetworkController; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; @@ -34,7 +37,12 @@ public class TileServicesTests extends SysuiTestCase { protected void setUp() throws Exception { super.setUp(); mManagers = new ArrayList<>(); - QSTileHost host = new QSTileHost(mContext, null, null, null, null, null, null, null, null, + final NetworkController networkController = Mockito.mock(NetworkController.class); + Mockito.when(networkController.getDataSaverController()).thenReturn( + Mockito.mock(DataSaverController.class)); + QSTileHost host = new QSTileHost(mContext, null, null, null, null, + networkController, null, + Mockito.mock(HotspotController.class), null, null, null, null, null, null, null, null); mTileService = new TestTileServices(host, Looper.myLooper()); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java index 5cf37670f3eac..ebd538473c1d3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java @@ -16,9 +16,6 @@ package com.android.systemui.statusbar.policy; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkCapabilities; @@ -31,14 +28,12 @@ import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.Log; - import com.android.internal.telephony.cdma.EriInfo; import com.android.settingslib.net.DataUsageController; import com.android.systemui.SysuiTestCase; import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config; import com.android.systemui.statusbar.policy.NetworkControllerImpl.SubscriptionDefaults; - import org.mockito.ArgumentCaptor; import org.mockito.Mockito; @@ -47,6 +42,9 @@ import java.io.StringWriter; import java.util.ArrayList; import java.util.List; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + public class NetworkControllerBaseTest extends SysuiTestCase { private static final String TAG = "NetworkControllerBaseTest"; protected static final int DEFAULT_LEVEL = 2; @@ -109,6 +107,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { protected void setupNetworkController() { // For now just pretend to be the data sim, so we can test that too. mSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; + when(mMockTm.getDataEnabled(mSubId)).thenReturn(true); setDefaultSubId(mSubId); setSubscriptions(mSubId); mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId);