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

Commit ad1a279a authored by Benjamin Franz's avatar Benjamin Franz Committed by Android (Google) Code Review
Browse files

Merge "Add unit tests to Utils"

parents 2e6e7d10 11805d15
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@ LOCAL_CERTIFICATE := platform

LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle

LOCAL_STATIC_JAVA_LIBRARIES := android-support-test mockito-target

# Include all test java files.
LOCAL_SRC_FILES := $(call all-java-files-under, src)

+1 −11
Original line number Diff line number Diff line
@@ -51,17 +51,7 @@
        </activity>
    </application>

    <instrumentation android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.android.settings"
        android:label="Settings App Tests">
    </instrumentation>

    <instrumentation android:name="SettingsLaunchPerformance"
        android:targetPackage="com.android.settings"
        android:label="Settings Launch Performance">
    </instrumentation>

    <instrumentation android:name="android.test.InstrumentationTestRunner"
    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
        android:targetPackage="com.android.settings"
        android:label="Settings Test Cases">
    </instrumentation>

tests/README

0 → 100644
+17 −0
Original line number Diff line number Diff line
To build the tests you can use the following command at the root of your android source tree
$ make SettingsTests

The test apk then needs to be installed onto your test device via for example
$ adb install -r out/target/product/shamu/data/app/SettingsTests/SettingsTests.apk

To run all tests:
$ adb shell am instrument -w com.android.settings.tests/android.support.test.runner.AndroidJUnitRunner

To run all tests in a specific class:
$ adb shell am instrument -w -e class com.android.managedprovisioning.<class> com.android.managedprovisioning.tests/android.test.InstrumentationTestRunner

To run a specific test:
$ adb shell am instrument -w -e class com.android.settings.<class> com.android.settings.tests/android.support.test.runner.AndroidJUnitRunner

More general information can be found at
http://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html
+79 −0
Original line number Diff line number Diff line
/*
 * 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.settings;

import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNull;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.when;

import android.content.pm.UserInfo;
import android.os.UserHandle;
import android.os.UserManager;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;

import java.util.ArrayList;
import java.util.Arrays;

import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

public class UtilsTests extends AndroidTestCase {
    private static final int TEST_PRIMARY_USER_ID = 10;
    private static final int TEST_MANAGED_PROFILE_ID = 11;

    @Mock private UserManager mUserManager;

    @Override
    public void setUp() throws Exception {
        super.setUp();
        // // this is necessary for mockito to work
        System.setProperty("dexmaker.dexcache", getContext().getCacheDir().toString());

        MockitoAnnotations.initMocks(this);
        when(mUserManager.getUserHandle()).thenReturn(TEST_PRIMARY_USER_ID);
        UserInfo primaryUser = new UserInfo(TEST_PRIMARY_USER_ID, null,
                UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_PRIMARY);
        when(mUserManager.getUserInfo(TEST_PRIMARY_USER_ID)).thenReturn(primaryUser);
        UserInfo managedProfile = new UserInfo(TEST_MANAGED_PROFILE_ID, null,
                UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_MANAGED_PROFILE);
        when(mUserManager.getUserInfo(eq(TEST_MANAGED_PROFILE_ID))).thenReturn(managedProfile);
    }

    @SmallTest
    public void testGetManagedProfile() {
        UserHandle[] userHandles = new UserHandle[] {
            new UserHandle(TEST_PRIMARY_USER_ID),
            new UserHandle(TEST_MANAGED_PROFILE_ID)
        };
        when(mUserManager.getUserProfiles())
                .thenReturn(new ArrayList<UserHandle>(Arrays.asList(userHandles)));
        assertEquals(TEST_MANAGED_PROFILE_ID,
                Utils.getManagedProfile(mUserManager).getIdentifier());
    }

    @SmallTest
    public void testGetManagedProfile_notPresent() {
        UserHandle[] userHandles = new UserHandle[] {
            new UserHandle(TEST_PRIMARY_USER_ID)
        };
        when(mUserManager.getUserProfiles())
                .thenReturn(new ArrayList<UserHandle>(Arrays.asList(userHandles)));
        assertNull(Utils.getManagedProfile(mUserManager));
    }
}