diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2015-07-20 15:37:27 -0700 |
---|---|---|
committer | Hyunyoung Song <hyunyoungs@google.com> | 2015-07-20 15:37:27 -0700 |
commit | 13ef17a37e683b8ad5800e9f542b411180fbec2f (patch) | |
tree | 96beaf07307486f6491f022da63ebe381765d1a8 /tests/src/com/android/launcher3 | |
parent | e5ec4ac409eb3d3169bb9350dfda51ae7e08291e (diff) | |
parent | e3fe3f89ee956e8d7995c569948cb70765ec19b8 (diff) | |
download | android_packages_apps_Trebuchet-13ef17a37e683b8ad5800e9f542b411180fbec2f.tar.gz android_packages_apps_Trebuchet-13ef17a37e683b8ad5800e9f542b411180fbec2f.tar.bz2 android_packages_apps_Trebuchet-13ef17a37e683b8ad5800e9f542b411180fbec2f.zip |
merged ub-launcher3-burnaby, and resolved conflicts
Note1: Verified that following succeeds. $ make -j 32 dist checkbuild
Note2: Verified that the git history of burnaby is (998 commit) is pulled
into mnc-dev packages/apps/Launcher3 git project using gitk.
b/22609402
Change-Id: If20ed77328a71d05a590a7ee2e84d5472d0248ae
Diffstat (limited to 'tests/src/com/android/launcher3')
-rw-r--r-- | tests/src/com/android/launcher3/InvariantDeviceProfileTest.java | 123 | ||||
-rw-r--r-- | tests/src/com/android/launcher3/util/FocusLogicTest.java | 60 |
2 files changed, 183 insertions, 0 deletions
diff --git a/tests/src/com/android/launcher3/InvariantDeviceProfileTest.java b/tests/src/com/android/launcher3/InvariantDeviceProfileTest.java new file mode 100644 index 000000000..1bc7c1190 --- /dev/null +++ b/tests/src/com/android/launcher3/InvariantDeviceProfileTest.java @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2015 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.launcher3; + +import android.graphics.PointF; +import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.SmallTest; +import android.util.Log; + +import com.android.launcher3.DeviceProfile; +import com.android.launcher3.InvariantDeviceProfile; +import com.android.launcher3.util.FocusLogic; + +import java.util.ArrayList; + +/** + * Tests the {@link DeviceProfile} and {@link InvariantDeviceProfile}. + */ +@SmallTest +public class InvariantDeviceProfileTest extends AndroidTestCase { + + private static final String TAG = "DeviceProfileTest"; + private static final boolean DEBUG = false; + + private InvariantDeviceProfile mInvariantProfile; + private ArrayList<InvariantDeviceProfile> mPredefinedDeviceProfiles; + + @Override + protected void setUp() throws Exception { + super.setUp(); + mInvariantProfile = new InvariantDeviceProfile(getContext()); + mPredefinedDeviceProfiles = mInvariantProfile.getPredefinedDeviceProfiles(); + } + + @Override + protected void tearDown() throws Exception { + // Nothing to tear down as this class only tests static methods. + } + + public void testFindClosestDeviceProfile2() { + for (InvariantDeviceProfile idf: mPredefinedDeviceProfiles) { + ArrayList<InvariantDeviceProfile> closestProfiles = + mInvariantProfile.findClosestDeviceProfiles( + idf.minWidthDps, idf.minHeightDps, mPredefinedDeviceProfiles); + assertTrue(closestProfiles.get(0).equals(idf)); + } + } + + /** + * Used to print out how the invDistWeightedInterpolate works between device profiles to + * tweak the two constants that control how the interpolation curve is shaped. + */ + public void testInvInterpolation() { + + InvariantDeviceProfile p1 = mPredefinedDeviceProfiles.get(7); // e.g., Large Phone + InvariantDeviceProfile p2 = mPredefinedDeviceProfiles.get(8); // e.g., Nexus 7 + + ArrayList<PointF> pts = createInterpolatedPoints( + new PointF(p1.minWidthDps, p1.minHeightDps), + new PointF(p2.minWidthDps, p2.minHeightDps), + 20f); + + for (int i = 0; i < pts.size(); i++) { + ArrayList<InvariantDeviceProfile> closestProfiles = + mInvariantProfile.findClosestDeviceProfiles( + pts.get(i).x, pts.get(i).y, mPredefinedDeviceProfiles); + InvariantDeviceProfile result = + mInvariantProfile.invDistWeightedInterpolate( + pts.get(i).x, pts.get(i).y, closestProfiles); + if (DEBUG) { + Log.d(TAG, String.format("width x height = (%f, %f)] iconSize = %f", + pts.get(i).x, pts.get(i).y, result.iconSize)); + } + } + } + + private ArrayList<PointF> createInterpolatedPoints(PointF a, PointF b, float numPts) { + ArrayList<PointF> result = new ArrayList<PointF>(); + result.add(a); + for (float i = 1; i < numPts; i = i + 1.0f) { + result.add(new PointF((b.x * i + a.x * (numPts - i)) / numPts, + (b.y * i + a.y * (numPts - i)) / numPts)); + } + result.add(b); + return result; + } + + /** + * Ensures that system calls (e.g., WindowManager, DisplayMetrics) that require contexts are + * properly working to generate minimum width and height of the display. + */ + public void test_hammerhead() { + if (!android.os.Build.DEVICE.equals("hammerhead")) { + return; + } + assertEquals(mInvariantProfile.numRows, 4); + assertEquals(mInvariantProfile.numColumns, 4); + assertEquals((int) mInvariantProfile.numHotseatIcons, 5); + + DeviceProfile landscapeProfile = mInvariantProfile.landscapeProfile; + DeviceProfile portraitProfile = mInvariantProfile.portraitProfile; + + assertEquals(portraitProfile.allAppsNumCols, 3); + assertEquals(landscapeProfile.allAppsNumCols, 5); // not used + } + + // Add more tests for other devices, however, running them once on a single device is enough + // for verifying that for a platform version, the WindowManager and DisplayMetrics is + // working as intended. +} diff --git a/tests/src/com/android/launcher3/util/FocusLogicTest.java b/tests/src/com/android/launcher3/util/FocusLogicTest.java new file mode 100644 index 000000000..ea87014e9 --- /dev/null +++ b/tests/src/com/android/launcher3/util/FocusLogicTest.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2015 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.launcher3; + +import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.SmallTest; +import android.view.KeyEvent; + +import com.android.launcher3.util.FocusLogic; + +/** + * Tests the {@link FocusLogic} class that handles key event based focus handling. + */ +@SmallTest +public final class FocusLogicTest extends AndroidTestCase { + + @Override + protected void setUp() throws Exception { + super.setUp(); + // Nothing to set up as this class only tests static methods. + } + + @Override + protected void tearDown() throws Exception { + // Nothing to tear down as this class only tests static methods. + } + + public void testShouldConsume() { + assertTrue(FocusLogic.shouldConsume(KeyEvent.KEYCODE_DPAD_LEFT)); + assertTrue(FocusLogic.shouldConsume(KeyEvent.KEYCODE_DPAD_RIGHT)); + assertTrue(FocusLogic.shouldConsume(KeyEvent.KEYCODE_DPAD_UP)); + assertTrue(FocusLogic.shouldConsume(KeyEvent.KEYCODE_DPAD_DOWN)); + assertTrue(FocusLogic.shouldConsume(KeyEvent.KEYCODE_MOVE_HOME)); + assertTrue(FocusLogic.shouldConsume(KeyEvent.KEYCODE_MOVE_END)); + assertTrue(FocusLogic.shouldConsume(KeyEvent.KEYCODE_PAGE_UP)); + assertTrue(FocusLogic.shouldConsume(KeyEvent.KEYCODE_PAGE_DOWN)); + assertTrue(FocusLogic.shouldConsume(KeyEvent.KEYCODE_DEL)); + assertTrue(FocusLogic.shouldConsume(KeyEvent.KEYCODE_FORWARD_DEL)); + } + + public void testCreateSparseMatrix() { + // Either, 1) create a helper method to generate/instantiate all possible cell layout that + // may get created in real world to test this method. OR 2) Move all the matrix + // management routine to celllayout and write tests for them. + } +} |