aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/org/lineageos/tests/profiles/unit/ProfileManagerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/org/lineageos/tests/profiles/unit/ProfileManagerTest.java')
-rw-r--r--tests/src/org/lineageos/tests/profiles/unit/ProfileManagerTest.java225
1 files changed, 225 insertions, 0 deletions
diff --git a/tests/src/org/lineageos/tests/profiles/unit/ProfileManagerTest.java b/tests/src/org/lineageos/tests/profiles/unit/ProfileManagerTest.java
new file mode 100644
index 00000000..c507e80b
--- /dev/null
+++ b/tests/src/org/lineageos/tests/profiles/unit/ProfileManagerTest.java
@@ -0,0 +1,225 @@
+/**
+ * Copyright (c) 2015, The CyanogenMod 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 org.lineageos.tests.profiles.unit;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.util.Log;
+import lineageos.app.LineageContextConstants;
+import lineageos.app.Profile;
+import lineageos.app.ProfileManager;
+import lineageos.app.IProfileManager;
+import lineageos.providers.LineageSettings;
+
+import java.util.Arrays;
+import java.util.UUID;
+import java.util.concurrent.CountDownLatch;
+
+public class ProfileManagerTest extends AndroidTestCase {
+ private static final String TAG = ProfileManagerTest.class.getSimpleName();
+ private static final int COUNTDOWN = 1;
+ private ProfileManager mProfileManager;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mProfileManager = ProfileManager.getInstance(mContext);
+ // Only run this if we support profiles service
+ org.junit.Assume.assumeTrue(mContext.getPackageManager().hasSystemFeature(
+ LineageContextConstants.Features.PROFILES));
+ }
+
+ @SmallTest
+ public void testManagerExists() {
+ assertNotNull(mProfileManager);
+ }
+
+ @SmallTest
+ public void testManagerServiceIsAvailable() {
+ IProfileManager iProfileManager = mProfileManager.getService();
+ assertNotNull(iProfileManager);
+ }
+
+ @SmallTest
+ public void testManagerProfileIsEnabled() {
+ // first enable profiles
+ final String enabledValue = "1";
+ assertTrue(LineageSettings.System.putString(getContext().getContentResolver(),
+ LineageSettings.System.SYSTEM_PROFILES_ENABLED, enabledValue));
+
+ // check that we successfully enabled them via system setting
+ assertEquals(enabledValue, LineageSettings.System.getString(getContext().getContentResolver(),
+ LineageSettings.System.SYSTEM_PROFILES_ENABLED));
+
+ // check that profile manger returns true
+ assertTrue(mProfileManager.isProfilesEnabled());
+
+ // now disable the setting
+ final String disabledValue = "0";
+ assertTrue(LineageSettings.System.putString(getContext().getContentResolver(),
+ LineageSettings.System.SYSTEM_PROFILES_ENABLED, disabledValue));
+
+ // check that we successfully disable them via system setting
+ assertEquals(disabledValue, LineageSettings.System.getString(getContext().getContentResolver(),
+ LineageSettings.System.SYSTEM_PROFILES_ENABLED));
+
+ assertFalse(mProfileManager.isProfilesEnabled());
+ }
+
+ private void ensureProfilesEnabled() {
+ final String enabledValue = "1";
+ assertTrue(LineageSettings.System.putString(getContext().getContentResolver(),
+ LineageSettings.System.SYSTEM_PROFILES_ENABLED, enabledValue));
+ }
+
+ @SmallTest
+ public void testGetActiveProfile() {
+ ensureProfilesEnabled();
+ final CountDownLatch signal = new CountDownLatch(COUNTDOWN);
+ final Profile expectedActiveProfile = new Profile("TEST ACTIVE PROFILE");
+ mProfileManager.addProfile(expectedActiveProfile);
+
+ BroadcastReceiver intentReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ signal.countDown();
+ }
+ };
+
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(ProfileManager.INTENT_ACTION_PROFILE_SELECTED);
+ intentFilter.addAction(ProfileManager.INTENT_ACTION_PROFILE_UPDATED);
+
+ mContext.registerReceiver(intentReceiver, intentFilter);
+
+ mProfileManager.setActiveProfile(expectedActiveProfile.getName());
+
+ // Lock
+ try {
+ signal.await();
+ } catch (InterruptedException e) {
+ throw new AssertionError(e);
+ }
+
+ assertEquals(expectedActiveProfile.getName(),
+ mProfileManager.getActiveProfile().getName());
+ mProfileManager.resetAll();
+
+ mContext.unregisterReceiver(intentReceiver);
+ }
+
+ @SmallTest
+ public void testGetProfileNames() {
+ ensureProfilesEnabled();
+ String[] expectedProfileNames = new String[5];
+ // These defaults are pulled from the default xml in the lineage platform resource package
+ Profile expectedProfile1 = mProfileManager.getProfile(
+ UUID.fromString("6a181391-12ef-4f43-a701-32b11ed69449"));
+ Profile expectedProfile2 = mProfileManager.getProfile(
+ UUID.fromString("0230226d-0d05-494a-a9bd-d222a1117655"));
+ Profile expectedProfile3 = mProfileManager.getProfile(
+ UUID.fromString("e4e77d03-82ce-4417-9257-7d6c9ffb8fd1"));
+
+ // Add extras
+ Profile expectedProfile4 = new Profile("PROFILE 1");
+ Profile expectedProfile5 = new Profile("PROFILE 2");
+
+ expectedProfileNames[0] = expectedProfile1.getName();
+ expectedProfileNames[1] = expectedProfile2.getName();
+ expectedProfileNames[2] = expectedProfile3.getName();
+ expectedProfileNames[3] = expectedProfile4.getName();
+ expectedProfileNames[4] = expectedProfile5.getName();
+
+ mProfileManager.addProfile(expectedProfile1);
+ mProfileManager.addProfile(expectedProfile2);
+
+ String[] actualProfileNames = mProfileManager.getProfileNames();
+ for (int i = 0; i < actualProfileNames.length; i++) {
+ assertEquals(expectedProfileNames[i], actualProfileNames[i]);
+ }
+ mProfileManager.resetAll();
+ }
+
+ @SmallTest
+ public void testGetProfiles() {
+ ensureProfilesEnabled();
+ Profile[] expectedProfiles = new Profile[5];
+ // These defaults are pulled from the default xml in the lineage platform resource package
+ Profile expectedProfile1 = mProfileManager.getProfile(
+ UUID.fromString("6a181391-12ef-4f43-a701-32b11ed69449"));
+ Profile expectedProfile2 = mProfileManager.getProfile(
+ UUID.fromString("0230226d-0d05-494a-a9bd-d222a1117655"));
+ Profile expectedProfile3 = mProfileManager.getProfile(
+ UUID.fromString("e4e77d03-82ce-4417-9257-7d6c9ffb8fd1"));
+
+ // Add extras
+ Profile expectedProfile4 = new Profile("PROFILE 1");
+ Profile expectedProfile5 = new Profile("PROFILE 2");
+
+ expectedProfiles[0] = expectedProfile1;
+ expectedProfiles[1] = expectedProfile2;
+ expectedProfiles[2] = expectedProfile3;
+ expectedProfiles[3] = expectedProfile4;
+ expectedProfiles[4] = expectedProfile5;
+
+ // The actual results come back in alphabetical order, :/
+ Arrays.sort(expectedProfiles);
+
+ mProfileManager.addProfile(expectedProfile4);
+ mProfileManager.addProfile(expectedProfile5);
+
+ Profile[] actualProfiles = mProfileManager.getProfiles();
+ for (int i = 0; i < actualProfiles.length; i++) {
+ assertEquals(expectedProfiles[i].getName(), actualProfiles[i].getName());
+ }
+ mProfileManager.resetAll();
+ }
+
+ @SmallTest
+ public void testProfileExists() {
+ ensureProfilesEnabled();
+ assertTrue(mProfileManager.profileExists(
+ UUID.fromString("6a181391-12ef-4f43-a701-32b11ed69449")));
+ assertTrue(mProfileManager.profileExists(
+ UUID.fromString("0230226d-0d05-494a-a9bd-d222a1117655")));
+ assertTrue(mProfileManager.profileExists(
+ UUID.fromString("e4e77d03-82ce-4417-9257-7d6c9ffb8fd1")));
+ String expectedProfileName = "PROFILE 1";
+ Profile expectedProfile = new Profile(expectedProfileName);
+ mProfileManager.addProfile(expectedProfile);
+ assertTrue(mProfileManager.profileExists(expectedProfileName));
+ mProfileManager.resetAll();
+ }
+
+ @SmallTest
+ public void testUpdateProfile() {
+ ensureProfilesEnabled();
+ String originalProfileName = "PROFILE 1";
+ String expectedProfileName = "PROFILE 2";
+ Profile expectedProfile = new Profile(originalProfileName);
+ mProfileManager.addProfile(expectedProfile);
+ expectedProfile.setName(expectedProfileName);
+ mProfileManager.updateProfile(expectedProfile);
+ assertNotSame(originalProfileName, expectedProfile.getName());
+ assertEquals(expectedProfileName, expectedProfile.getName());
+ mProfileManager.resetAll();
+ }
+}