summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build.gradle21
-rw-r--r--tests/AndroidManifest.xml8
-rw-r--r--tests/src/com/android/launcher3/InvariantDeviceProfileTest.java5
-rw-r--r--tests/src/com/android/launcher3/RotationPreferenceTest.java87
4 files changed, 113 insertions, 8 deletions
diff --git a/build.gradle b/build.gradle
index d97175568..44f5b7c52 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,7 +3,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.3.0'
+ classpath 'com.android.tools.build:gradle:+'
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.7.0'
}
}
@@ -21,6 +21,9 @@ android {
targetSdkVersion 23
versionCode 1
versionName "1.0"
+
+ testApplicationId "com.android.launcher3.tests"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug {
@@ -30,10 +33,16 @@ android {
sourceSets {
main {
res.srcDirs = ['res', 'WallpaperPicker/res']
- main.java.srcDirs = ['src', 'WallpaperPicker/src']
+ java.srcDirs = ['src', 'WallpaperPicker/src']
manifest.srcFile 'AndroidManifest.xml'
proto.srcDirs 'protos/'
}
+
+ androidTest {
+ java.srcDirs = ['tests/src']
+ res.srcDirs = ['tests/res']
+ manifest.srcFile "tests/AndroidManifest.xml"
+ }
}
}
@@ -42,9 +51,13 @@ repositories {
}
dependencies {
- compile 'com.android.support:support-v4:+'
- compile 'com.android.support:recyclerview-v7:+'
+ compile 'com.android.support:support-v4:23.0.1'
+ compile 'com.android.support:recyclerview-v7:23.0.1'
compile 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-2'
+
+ testCompile 'junit:junit:4.12'
+ androidTestCompile 'com.android.support.test:runner:+'
+ androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:+'
}
protobuf {
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 42ae5a38a..8acc5e90c 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -1,4 +1,4 @@
-<?xml version="2.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,15 +15,17 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
package="com.android.launcher3.tests">
+ <uses-sdk tools:overrideLibrary="android.support.test.uiautomator.v18"/>
+
<application>
<uses-library android:name="android.test.runner" />
</application>
<instrumentation
android:name="android.test.InstrumentationTestRunner"
- android:targetPackage="com.android.launcher3"
- android:label="Unit tests for Launcher3">
+ android:targetPackage="com.android.launcher3" >
</instrumentation>
</manifest>
diff --git a/tests/src/com/android/launcher3/InvariantDeviceProfileTest.java b/tests/src/com/android/launcher3/InvariantDeviceProfileTest.java
index 1bc7c1190..a99ae4f95 100644
--- a/tests/src/com/android/launcher3/InvariantDeviceProfileTest.java
+++ b/tests/src/com/android/launcher3/InvariantDeviceProfileTest.java
@@ -52,9 +52,12 @@ public class InvariantDeviceProfileTest extends AndroidTestCase {
public void testFindClosestDeviceProfile2() {
for (InvariantDeviceProfile idf: mPredefinedDeviceProfiles) {
+ ArrayList<InvariantDeviceProfile> predefinedProfilesCopy =
+ new ArrayList<>(mPredefinedDeviceProfiles);
ArrayList<InvariantDeviceProfile> closestProfiles =
mInvariantProfile.findClosestDeviceProfiles(
- idf.minWidthDps, idf.minHeightDps, mPredefinedDeviceProfiles);
+ idf.minWidthDps, idf.minHeightDps, predefinedProfilesCopy
+ );
assertTrue(closestProfiles.get(0).equals(idf));
}
}
diff --git a/tests/src/com/android/launcher3/RotationPreferenceTest.java b/tests/src/com/android/launcher3/RotationPreferenceTest.java
new file mode 100644
index 000000000..5f6347557
--- /dev/null
+++ b/tests/src/com/android/launcher3/RotationPreferenceTest.java
@@ -0,0 +1,87 @@
+package com.android.launcher3;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.graphics.Rect;
+import android.support.test.uiautomator.By;
+import android.support.test.uiautomator.UiDevice;
+import android.support.test.uiautomator.Until;
+import android.test.InstrumentationTestCase;
+
+/**
+ * Test for auto rotate preference.
+ */
+public class RotationPreferenceTest extends InstrumentationTestCase {
+
+ private UiDevice mDevice;
+ private Context mTargetContext;
+ private String mTargetPackage;
+
+ private SharedPreferences mPrefs;
+ private boolean mOriginalRotationValue;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ mDevice = UiDevice.getInstance(getInstrumentation());
+ mTargetContext = getInstrumentation().getTargetContext();
+ mTargetPackage = mTargetContext.getPackageName();
+ mPrefs = mTargetContext.getSharedPreferences(
+ LauncherAppState.getSharedPreferencesKey(), Context.MODE_PRIVATE);
+ mOriginalRotationValue = mPrefs.getBoolean(Utilities.ALLOW_ROTATION_PREFERENCE_KEY, false);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ setRotationEnabled(mOriginalRotationValue);
+ super.tearDown();
+ }
+
+ public void testRotation_disabled() throws Exception {
+ if (mTargetContext.getResources().getBoolean(R.bool.allow_rotation)) {
+ // This is a tablet. The test is only valid to mobile devices.
+ return;
+ }
+
+ setRotationEnabled(false);
+ mDevice.setOrientationRight();
+ goToLauncher();
+
+ Rect hotseat = getHotseatBounds();
+ assertTrue(hotseat.width() > hotseat.height());
+ }
+
+ public void testRotation_enabled() throws Exception {
+ if (mTargetContext.getResources().getBoolean(R.bool.allow_rotation)) {
+ // This is a tablet. The test is only valid to mobile devices.
+ return;
+ }
+
+ setRotationEnabled(true);
+ mDevice.setOrientationRight();
+ goToLauncher();
+
+ Rect hotseat = getHotseatBounds();
+ assertTrue(hotseat.width() < hotseat.height());
+ }
+
+ private void goToLauncher() {
+ Intent homeIntent = new Intent(Intent.ACTION_MAIN)
+ .addCategory(Intent.CATEGORY_HOME)
+ .setPackage(mTargetPackage)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ getInstrumentation().getContext().startActivity(homeIntent);
+ mDevice.wait(Until.hasObject(By.pkg(mTargetPackage).depth(0)), 3000);
+ }
+
+ private void setRotationEnabled(boolean enabled) {
+ mPrefs.edit().putBoolean(Utilities.ALLOW_ROTATION_PREFERENCE_KEY, enabled).commit();
+ }
+
+ private Rect getHotseatBounds() {
+ mDevice.wait(Until.hasObject(By.res(mTargetPackage, "hotseat")), 3000);
+ return mDevice.findObject(By.res(mTargetPackage, "hotseat")).getVisibleBounds();
+ }
+}