Merge "Adding tests for rotation preference Updating the gradle file to run tests directly from AndroidStudio" into ub-launcher3-burnaby-polish

This commit is contained in:
Sunny Goyal
2015-10-17 00:49:33 +00:00
committed by Android (Google) Code Review
4 changed files with 113 additions and 8 deletions

View File

@@ -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 {

View File

@@ -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>

View File

@@ -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));
}
}

View File

@@ -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();
}
}