SettingsProviderTestpublic class SettingsProviderTest extends android.test.AndroidTestCase Unit test for SettingsProvider. |
Methods Summary |
---|
private void | assertCanBeHandled(android.content.Intent intent)
PackageManager packageManager = mContext.getPackageManager();
List<ResolveInfo> resolveInfoList = packageManager.queryIntentActivities(intent, 0);
assertNotNull(resolveInfoList);
// one or more activity can handle this intent.
assertTrue(resolveInfoList.size() > 0);
| private boolean | findUser(android.os.UserManager um, int userHandle)
for (UserInfo user : um.getUsers()) {
if (user.id == userHandle) {
return true;
}
}
return false;
| public void | testNameValueCache()
ContentResolver r = getContext().getContentResolver();
Settings.Secure.putString(r, "test_service", "Value");
assertEquals("Value", Settings.Secure.getString(r, "test_service"));
// Make sure the value can be overwritten.
Settings.Secure.putString(r, "test_service", "New");
assertEquals("New", Settings.Secure.getString(r, "test_service"));
// Also that delete works.
assertEquals(1, r.delete(Settings.Secure.getUriFor("test_service"), null, null));
assertEquals(null, Settings.Secure.getString(r, "test_service"));
// Try all the same things in the System table
Settings.System.putString(r, "test_setting", "Value");
assertEquals("Value", Settings.System.getString(r, "test_setting"));
Settings.System.putString(r, "test_setting", "New");
assertEquals("New", Settings.System.getString(r, "test_setting"));
assertEquals(1, r.delete(Settings.System.getUriFor("test_setting"), null, null));
assertEquals(null, Settings.System.getString(r, "test_setting"));
| public void | testParseProviderList()
ContentResolver r = getContext().getContentResolver();
// Make sure we get out what we put in.
Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
"test1,test2,test3");
assertEquals(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED),
"test1,test2,test3");
// Test adding a value
Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
"");
Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+test1");
assertEquals("test1",
Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
// Test adding a second value
Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+test2");
assertEquals("test1,test2",
Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
// Test adding a third value
Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+test3");
assertEquals("test1,test2,test3",
Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
// Test deleting the first value in a 3 item list
Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "-test1");
assertEquals("test2,test3",
Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
// Test deleting the middle value in a 3 item list
Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
"test1,test2,test3");
Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "-test2");
assertEquals("test1,test3",
Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
// Test deleting the last value in a 3 item list
Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
"test1,test2,test3");
Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "-test3");
assertEquals("test1,test2",
Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
| public void | testPerUserSettings()
UserManager um = (UserManager) getContext().getSystemService(Context.USER_SERVICE);
ContentResolver r = getContext().getContentResolver();
// Make sure there's an owner
assertTrue(findUser(um, UserHandle.USER_OWNER));
// create a new user to use for testing
UserInfo user = um.createUser("TestUser1", UserInfo.FLAG_GUEST);
assertTrue(user != null);
try {
// Write some settings for that user as well as the current user
final String TEST_KEY = "test_setting";
final int SELF_VALUE = 40;
final int OTHER_VALUE = 27;
Settings.System.putInt(r, TEST_KEY, SELF_VALUE);
Settings.System.putIntForUser(r, TEST_KEY, OTHER_VALUE, user.id);
// Verify that they read back as intended
int myValue = Settings.System.getInt(r, TEST_KEY, 0);
int otherValue = Settings.System.getIntForUser(r, TEST_KEY, 0, user.id);
assertTrue("Running as user " + UserHandle.myUserId()
+ " and reading/writing as user " + user.id
+ ", expected to read " + SELF_VALUE + " but got " + myValue,
myValue == SELF_VALUE);
assertTrue("Running as user " + UserHandle.myUserId()
+ " and reading/writing as user " + user.id
+ ", expected to read " + OTHER_VALUE + " but got " + otherValue,
otherValue == OTHER_VALUE);
} finally {
// Tidy up
um.removeUser(user.id);
}
| public void | testRowNameContentUri()
ContentResolver r = getContext().getContentResolver();
assertEquals("content://settings/system/test_setting",
Settings.System.getUriFor("test_setting").toString());
assertEquals("content://settings/secure/test_service",
Settings.Secure.getUriFor("test_service").toString());
// These tables use the row name (not ID) as their content URI.
Uri tables[] = { Settings.System.CONTENT_URI, Settings.Secure.CONTENT_URI };
for (Uri table : tables) {
ContentValues v = new ContentValues();
v.put(Settings.System.NAME, "test_key");
v.put(Settings.System.VALUE, "Test");
Uri uri = r.insert(table, v);
assertEquals(table.toString() + "/test_key", uri.toString());
// Query with a specific URI and no WHERE clause succeeds.
Cursor c = r.query(uri, null, null, null, null);
try {
assertTrue(c.moveToNext());
assertEquals("test_key", c.getString(c.getColumnIndex(Settings.System.NAME)));
assertEquals("Test", c.getString(c.getColumnIndex(Settings.System.VALUE)));
assertFalse(c.moveToNext());
} finally {
c.close();
}
// Query with a specific URI and a WHERE clause fails.
try {
r.query(uri, null, "1", null, null);
fail("UnsupportedOperationException expected");
} catch (UnsupportedOperationException e) {
if (!e.toString().contains("WHERE clause")) throw e;
}
// Query with a tablewide URI and a WHERE clause succeeds.
c = r.query(table, null, "name='test_key'", null, null);
try {
assertTrue(c.moveToNext());
assertEquals("test_key", c.getString(c.getColumnIndex(Settings.System.NAME)));
assertEquals("Test", c.getString(c.getColumnIndex(Settings.System.VALUE)));
assertFalse(c.moveToNext());
} finally {
c.close();
}
v = new ContentValues();
v.put(Settings.System.VALUE, "Toast");
assertEquals(1, r.update(uri, v, null, null));
c = r.query(uri, null, null, null, null);
try {
assertTrue(c.moveToNext());
assertEquals("test_key", c.getString(c.getColumnIndex(Settings.System.NAME)));
assertEquals("Toast", c.getString(c.getColumnIndex(Settings.System.VALUE)));
assertFalse(c.moveToNext());
} finally {
c.close();
}
assertEquals(1, r.delete(uri, null, null));
}
assertEquals(null, Settings.System.getString(r, "test_key"));
assertEquals(null, Settings.Secure.getString(r, "test_key"));
| public void | testRowNumberContentUri()
ContentResolver r = getContext().getContentResolver();
// The bookmarks table (and everything else) uses standard row number content URIs.
Uri uri = Settings.Bookmarks.add(r, new Intent("TEST"),
"Test Title", "Test Folder", '*", 123);
assertTrue(ContentUris.parseId(uri) > 0);
assertEquals("TEST", Settings.Bookmarks.getIntentForShortcut(r, '*").getAction());
ContentValues v = new ContentValues();
v.put(Settings.Bookmarks.INTENT, "#Intent;action=TOAST;end");
assertEquals(1, r.update(uri, v, null, null));
assertEquals("TOAST", Settings.Bookmarks.getIntentForShortcut(r, '*").getAction());
assertEquals(1, r.delete(uri, null, null));
assertEquals(null, Settings.Bookmarks.getIntentForShortcut(r, '*"));
| public void | testSettings()
assertCanBeHandled(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_ADD_ACCOUNT));
assertCanBeHandled(new Intent(Settings.ACTION_AIRPLANE_MODE_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_APN_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
.setData(Uri.parse("package:" + getContext().getPackageName())));
assertCanBeHandled(new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_APPLICATION_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_DATE_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_DEVICE_INFO_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_DISPLAY_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_INTERNAL_STORAGE_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_LOCALE_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_MEMORY_CARD_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_PRIVACY_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_QUICK_LAUNCH_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_SEARCH_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_SECURITY_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_SOUND_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_SYNC_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_SYSTEM_UPDATE_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_USER_DICTIONARY_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_WIFI_IP_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_WIFI_SETTINGS));
assertCanBeHandled(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
| public void | testSettingsChangeForOtherUser()
UserManager um = (UserManager) getContext().getSystemService(Context.USER_SERVICE);
ContentResolver r = getContext().getContentResolver();
// Make sure there's an owner
assertTrue(findUser(um, UserHandle.USER_OWNER));
// create a new user to use for testing
UserInfo otherUser = um.createUser("TestUser1", UserInfo.FLAG_GUEST);
assertTrue(otherUser != null);
try {
assertNotSame("Current calling user id should not be the new guest user",
otherUser.id, UserHandle.getCallingUserId());
Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "gps");
Settings.Secure.putStringForUser(r,
Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "network", otherUser.id);
assertEquals("gps",
Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
assertEquals("network", Settings.Secure.getStringForUser(
r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, otherUser.id));
assertNotSame("Current calling user id should not be the new guest user",
otherUser.id, UserHandle.getCallingUserId());
Settings.Secure.setLocationProviderEnabledForUser(r, "network", false, otherUser.id);
assertEquals("", Settings.Secure.getStringForUser(
r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, otherUser.id));
} finally {
// Tidy up
um.removeUser(otherUser.id);
}
|
|