Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e0cb633 authored by Sunny Goyal's avatar Sunny Goyal Committed by android-build-merger
Browse files

Merge "Adding tests for rotation preference Updating the gradle file to run...

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

* commit '917d434c':
  Adding tests for rotation preference Updating the gradle file to run tests directly from AndroidStudio
parents 47ecbb85 917d434c
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -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 {
+5 −3
Original line number Diff line number Diff line
<?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>
+4 −1
Original line number Diff line number Diff line
@@ -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));
        }
    }
+87 −0
Original line number Diff line number Diff line
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();
    }
}