Files
app_Settings/tests/robotests/src/com/android/settings/search/InlinePayloadTest.java
Matthew Fritze 73056522b3 Add default value to inline payloads
If we try to set an inline result when it has not yet been
accessed in settings, nothing is read from Settings.
Thus, include a default value for a fallback.

Change-Id: I8a593d9ff3308b2d0cd5bc65658d160abf55b07e
Fixes: 63955012
Test: robotests
2017-07-25 14:37:05 -07:00

128 lines
4.1 KiB
Java

package com.android.settings.search;
import android.content.Context;
import android.content.ContentResolver;
import android.content.Intent;
import android.os.Parcel;
import android.provider.Settings;
import com.android.settings.TestConfig;
import com.android.settings.search.ResultPayload.SettingsSource;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE;
import static com.google.common.truth.Truth.assertThat;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class InlinePayloadTest {
private Context mContext;
private final String KEY = "key";
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
}
@Test
public void testGetSecure_returnsSecureSetting() {
InlinePayload payload = getDummyPayload(SettingsSource.SECURE);
int currentValue = 2;
Settings.Secure.putInt(mContext.getContentResolver(), KEY, currentValue);
int newValue = payload.getValue(mContext);
assertThat(newValue).isEqualTo(currentValue);
}
@Test
public void testGetGlobal_returnsGlobalSetting() {
InlinePayload payload = getDummyPayload(SettingsSource.GLOBAL);
int currentValue = 2;
Settings.Global.putInt(mContext.getContentResolver(), KEY, currentValue);
int newValue = payload.getValue(mContext);
assertThat(newValue).isEqualTo(currentValue);
}
@Test
public void testGetSystem_returnsSystemSetting() {
InlinePayload payload = getDummyPayload(SettingsSource.SYSTEM);
int currentValue = 2;
Settings.System.putInt(mContext.getContentResolver(), KEY, currentValue);
int newValue = payload.getValue(mContext);
assertThat(newValue).isEqualTo(currentValue);
}
@Test
public void testSetSecure_updatesSecureSetting() {
InlinePayload payload = getDummyPayload(SettingsSource.SECURE);
int newValue = 1;
ContentResolver resolver = mContext.getContentResolver();
Settings.Secure.putInt(resolver, KEY, 0);
payload.setValue(mContext, newValue);
int updatedValue = Settings.System.getInt(resolver, KEY, -1);
assertThat(updatedValue).isEqualTo(newValue);
}
@Test
public void testSetGlobal_updatesGlobalSetting() {
InlinePayload payload = getDummyPayload(SettingsSource.GLOBAL);
int newValue = 1;
ContentResolver resolver = mContext.getContentResolver();
Settings.Global.putInt(resolver, KEY, 0);
payload.setValue(mContext, newValue);
int updatedValue = Settings.Global.getInt(resolver, KEY, -1);
assertThat(updatedValue).isEqualTo(newValue);
}
@Test
public void testSetSystem_updatesSystemSetting() {
InlinePayload payload = getDummyPayload(SettingsSource.SECURE);
int newValue = 1;
ContentResolver resolver = mContext.getContentResolver();
Settings.System.putInt(resolver, SCREEN_BRIGHTNESS_MODE, 0);
payload.setValue(mContext, newValue);
int updatedValue = Settings.System.getInt(resolver, KEY, -1);
assertThat(updatedValue).isEqualTo(newValue);
}
private InlinePayload getDummyPayload(int source) {
return new ConcreteInlinePayload(KEY, source, null /* intent */,
true /* isDeviceSupported */);
}
class ConcreteInlinePayload extends InlinePayload {
public ConcreteInlinePayload(String key, @SettingsSource int source, Intent intent,
boolean isDeviceSupported) {
super(key, source, intent, isDeviceSupported, 0 /* defaultValue */);
}
@Override
public int getType() {
return 0;
}
@Override
protected int standardizeInput(int input) throws IllegalArgumentException {
return input;
}
}
}