Add first inline switch result.
Adds gestures as Inline switch results to Settings Search. Change-Id: Ie9b69ac2a54756d5b756401e348cae0a02c907c9 Fixes: 33669037 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -23,6 +23,8 @@ import android.support.v7.preference.PreferenceScreen;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
|
||||
import com.android.settings.search2.InlineSwitchPayload;
|
||||
import com.android.settings.search2.ResultPayload;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -91,4 +93,23 @@ public class DoubleTapPowerPreferenceControllerTest {
|
||||
|
||||
assertThat(mController.isSwitchPrefEnabled()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceController_ProperResultPayloadType() {
|
||||
final Context context = ShadowApplication.getInstance().getApplicationContext();
|
||||
mController = new DoubleTapPowerPreferenceController(context, null);
|
||||
ResultPayload payload = mController.getResultPayload();
|
||||
assertThat(payload).isInstanceOf(InlineSwitchPayload.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceController_CorrectPayload() {
|
||||
final Context context = ShadowApplication.getInstance().getApplicationContext();
|
||||
mController = new DoubleTapPowerPreferenceController(context, null);
|
||||
InlineSwitchPayload payload = (InlineSwitchPayload) mController.getResultPayload();
|
||||
assertThat(payload.settingsUri).isEqualTo("camera_double_tap_power_gesture_disabled");
|
||||
assertThat(payload.settingSource).isEqualTo(ResultPayload.SettingsSource.SECURE);
|
||||
assertThat(payload.valueMap.get(0)).isEqualTo(true);
|
||||
assertThat(payload.valueMap.get(1)).isEqualTo(false);
|
||||
}
|
||||
}
|
||||
|
@@ -22,6 +22,8 @@ import com.android.internal.hardware.AmbientDisplayConfiguration;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
|
||||
import com.android.settings.search2.InlineSwitchPayload;
|
||||
import com.android.settings.search2.ResultPayload;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -79,4 +81,19 @@ public class DoubleTapScreenPreferenceControllerTest {
|
||||
|
||||
assertThat(mController.isSwitchPrefEnabled()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceController_ProperResultPayloadType() {
|
||||
ResultPayload payload = mController.getResultPayload();
|
||||
assertThat(payload).isInstanceOf(InlineSwitchPayload.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceController_CorrectPayload() {
|
||||
InlineSwitchPayload payload = (InlineSwitchPayload) mController.getResultPayload();
|
||||
assertThat(payload.settingsUri).isEqualTo("doze_pulse_on_double_tap");
|
||||
assertThat(payload.settingSource).isEqualTo(ResultPayload.SettingsSource.SECURE);
|
||||
assertThat(payload.valueMap.get(1)).isEqualTo(true);
|
||||
assertThat(payload.valueMap.get(0)).isEqualTo(false);
|
||||
}
|
||||
}
|
||||
|
@@ -24,6 +24,8 @@ import android.provider.Settings;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
|
||||
import com.android.settings.search2.InlineSwitchPayload;
|
||||
import com.android.settings.search2.ResultPayload;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -111,4 +113,19 @@ public class DoubleTwistPreferenceControllerTest {
|
||||
|
||||
assertThat(mController.isSwitchPrefEnabled()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceController_ProperResultPayloadType() {
|
||||
ResultPayload payload = mController.getResultPayload();
|
||||
assertThat(payload).isInstanceOf(InlineSwitchPayload.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceController_CorrectPayload() {
|
||||
InlineSwitchPayload payload = (InlineSwitchPayload) mController.getResultPayload();
|
||||
assertThat(payload.settingsUri).isEqualTo("camera_double_twist_to_flip_enabled");
|
||||
assertThat(payload.settingSource).isEqualTo(ResultPayload.SettingsSource.SECURE);
|
||||
assertThat(payload.valueMap.get(1)).isEqualTo(true);
|
||||
assertThat(payload.valueMap.get(0)).isEqualTo(false);
|
||||
}
|
||||
}
|
||||
|
@@ -22,6 +22,8 @@ import com.android.internal.hardware.AmbientDisplayConfiguration;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
|
||||
import com.android.settings.search2.InlineSwitchPayload;
|
||||
import com.android.settings.search2.ResultPayload;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -82,4 +84,18 @@ public class PIckupGesturePreferenceControllerTest {
|
||||
assertThat(mController.isSwitchPrefEnabled()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceController_ProperResultPayloadType() {
|
||||
ResultPayload payload = mController.getResultPayload();
|
||||
assertThat(payload).isInstanceOf(InlineSwitchPayload.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceController_CorrectPayload() {
|
||||
InlineSwitchPayload payload = (InlineSwitchPayload) mController.getResultPayload();
|
||||
assertThat(payload.settingsUri).isEqualTo("doze_pulse_on_pick_up");
|
||||
assertThat(payload.settingSource).isEqualTo(ResultPayload.SettingsSource.SECURE);
|
||||
assertThat(payload.valueMap.get(1)).isEqualTo(true);
|
||||
assertThat(payload.valueMap.get(0)).isEqualTo(false);
|
||||
}
|
||||
}
|
||||
|
@@ -22,6 +22,8 @@ import android.provider.Settings;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
|
||||
import com.android.settings.search2.InlineSwitchPayload;
|
||||
import com.android.settings.search2.ResultPayload;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -87,4 +89,19 @@ public class SwipeToNotificationPreferenceControllerTest {
|
||||
|
||||
assertThat(mController.isSwitchPrefEnabled()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceController_ProperResultPayloadType() {
|
||||
ResultPayload payload = mController.getResultPayload();
|
||||
assertThat(payload).isInstanceOf(InlineSwitchPayload.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceController_CorrectPayload() {
|
||||
InlineSwitchPayload payload = (InlineSwitchPayload) mController.getResultPayload();
|
||||
assertThat(payload.settingsUri).isEqualTo("system_navigation_keys_enabled");
|
||||
assertThat(payload.settingSource).isEqualTo(ResultPayload.SettingsSource.SECURE);
|
||||
assertThat(payload.valueMap.get(1)).isEqualTo(true);
|
||||
assertThat(payload.valueMap.get(0)).isEqualTo(false);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,130 @@
|
||||
/*
|
||||
* 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.search;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import android.util.ArrayMap;
|
||||
import com.android.internal.hardware.AmbientDisplayConfiguration;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.core.PreferenceController;
|
||||
import com.android.settings.gestures.DoubleTapPowerPreferenceController;
|
||||
import com.android.settings.gestures.DoubleTapScreenPreferenceController;
|
||||
import com.android.settings.gestures.DoubleTwistPreferenceController;
|
||||
import com.android.settings.gestures.PickupGesturePreferenceController;
|
||||
import com.android.settings.gestures.SwipeToNotificationPreferenceController;
|
||||
import com.android.settings.search2.DatabaseIndexingUtils;
|
||||
|
||||
import com.android.settings.search2.IntentPayload;
|
||||
import com.android.settings.search2.ResultPayload;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.shadows.ShadowApplication;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
public class DatabaseIndexingUtilsTest {
|
||||
|
||||
private Context mContext;
|
||||
@Mock
|
||||
private AmbientDisplayConfiguration mAmbientDisplayConfiguration;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = ShadowApplication.getInstance().getApplicationContext();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetPreferenceControllerUriMap_BadClassName_ReturnsNull() {
|
||||
Map map = DatabaseIndexingUtils.getPreferenceControllerUriMap("dummy", mContext);
|
||||
assertThat(map).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetPreferenceControllerUriMap_NullContext_ReturnsNull() {
|
||||
Map map = DatabaseIndexingUtils.getPreferenceControllerUriMap("dummy", null);
|
||||
assertThat(map).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetPreferenceControllerUriMap_CompatibleClass_ReturnsNotNull() {
|
||||
String className = "com.android.settings.gestures.GestureSettings";
|
||||
|
||||
Map map = DatabaseIndexingUtils.getPreferenceControllerUriMap(className, mContext);
|
||||
assertThat(map).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetPreferenceControllerUriMap_CompatibleClass_ReturnsValidMap() {
|
||||
String className = "com.android.settings.gestures.GestureSettings";
|
||||
|
||||
Map map = DatabaseIndexingUtils.getPreferenceControllerUriMap(className, mContext);
|
||||
assertThat(map.get("gesture_double_twist"))
|
||||
.isInstanceOf(DoubleTwistPreferenceController.class);
|
||||
assertThat(map.get("gesture_swipe_down_fingerprint"))
|
||||
.isInstanceOf(SwipeToNotificationPreferenceController.class);
|
||||
assertThat(map.get("gesture_double_tap_screen"))
|
||||
.isInstanceOf(DoubleTapScreenPreferenceController.class);
|
||||
assertThat(map.get("gesture_pick_up"))
|
||||
.isInstanceOf(PickupGesturePreferenceController.class);
|
||||
assertThat(map.get("gesture_double_tap_power"))
|
||||
.isInstanceOf(DoubleTapPowerPreferenceController.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetPayloadFromMap_NullMap_ReturnsNull() {
|
||||
ResultPayload payload = DatabaseIndexingUtils.getPayloadFromUriMap(null, "");
|
||||
assertThat(payload).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetPayloadFromMap_MatchingKey_ReturnsPayloa() {
|
||||
final String key = "key";
|
||||
PreferenceController prefController = new PreferenceController(mContext) {
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferenceKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultPayload getResultPayload() {
|
||||
return new IntentPayload(null);
|
||||
}
|
||||
};
|
||||
ArrayMap<String,PreferenceController> map = new ArrayMap<>();
|
||||
map.put(key, prefController);
|
||||
|
||||
ResultPayload payload = DatabaseIndexingUtils.getPayloadFromUriMap(map, key);
|
||||
assertThat(payload).isInstanceOf(IntentPayload.class);
|
||||
}
|
||||
}
|
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* 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.search;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.os.Parcel;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.search2.InlineSliderPayload;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
public class InlineSliderPayloadTest {
|
||||
private InlineSliderPayload mPayload;
|
||||
|
||||
@Test
|
||||
public void testParcelOrdering_StaysValid() {
|
||||
Uri uri = Uri.parse("http://www.TESTURI.com");
|
||||
Parcel parcel = Parcel.obtain();
|
||||
|
||||
mPayload = new InlineSliderPayload(uri);
|
||||
mPayload.writeToParcel(parcel, 0);
|
||||
// Reset parcel for reading
|
||||
parcel.setDataPosition(0);
|
||||
InlineSliderPayload newPayload = InlineSliderPayload.CREATOR.createFromParcel(parcel);
|
||||
|
||||
String originalUri = mPayload.uri.toString();
|
||||
String copiedUri = newPayload.uri.toString();
|
||||
assertThat(originalUri).isEqualTo(copiedUri);
|
||||
}
|
||||
}
|
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* 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.search;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.util.ArrayMap;
|
||||
import android.content.Context;
|
||||
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.search2.InlineSwitchPayload;
|
||||
import com.android.settings.search2.ResultPayload;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.shadows.ShadowApplication;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
public class InlineSwitchPayloadTest {
|
||||
|
||||
@Test
|
||||
public void testGetSwitch_EmptyMap_ExceptionThrown() {
|
||||
final String uri = "test.com";
|
||||
final int source = ResultPayload.SettingsSource.SECURE;
|
||||
|
||||
final Context context = ShadowApplication.getInstance().getApplicationContext();
|
||||
InlineSwitchPayload payload = new InlineSwitchPayload(uri, source, null);
|
||||
try {
|
||||
payload.getSwitchValue(context);
|
||||
fail("Should have thrown exception for null map");
|
||||
} catch (IllegalStateException e) {
|
||||
assertThat(e).isNotNull();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSwitch_BadMap_ExceptionThrown() {
|
||||
final String uri = "test.com";
|
||||
final int source = ResultPayload.SettingsSource.SECURE;
|
||||
final ArrayMap<Integer, Boolean> map = new ArrayMap<>();
|
||||
|
||||
final Context context = ShadowApplication.getInstance().getApplicationContext();
|
||||
InlineSwitchPayload payload = new InlineSwitchPayload(uri, source, map);
|
||||
try {
|
||||
payload.getSwitchValue(context);
|
||||
fail("Should have thrown exception for bad map");
|
||||
} catch (IllegalStateException e) {
|
||||
assertThat(e).isNotNull();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConstructor_DataRetained() {
|
||||
final String uri = "test.com";
|
||||
final int type = ResultPayload.PayloadType.INLINE_SWITCH;
|
||||
final int source = ResultPayload.SettingsSource.SECURE;
|
||||
final ArrayMap<Integer, Boolean> map = new ArrayMap<>();
|
||||
map.put(1, true);
|
||||
map.put(0, false);
|
||||
|
||||
InlineSwitchPayload payload = new InlineSwitchPayload(uri, source, map);
|
||||
assertThat(payload.settingsUri).isEqualTo(uri);
|
||||
assertThat(payload.inlineType).isEqualTo(type);
|
||||
assertThat(payload.settingSource).isEqualTo(source);
|
||||
assertThat(payload.valueMap.get(1)).isTrue();
|
||||
assertThat(payload.valueMap.get(0)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParcelConstructor_DataRetained() {
|
||||
String uri = "test.com";
|
||||
int type = ResultPayload.PayloadType.INLINE_SWITCH;
|
||||
int source = ResultPayload.SettingsSource.SECURE;
|
||||
final ArrayMap<Integer, Boolean> map = new ArrayMap<>();
|
||||
map.put(1, true);
|
||||
map.put(0, false);
|
||||
|
||||
Parcel parcel = Parcel.obtain();
|
||||
parcel.writeString(uri);
|
||||
parcel.writeInt(type);
|
||||
parcel.writeInt(source);
|
||||
parcel.writeMap(map);
|
||||
parcel.setDataPosition(0);
|
||||
|
||||
InlineSwitchPayload payload = InlineSwitchPayload.CREATOR.createFromParcel(parcel);
|
||||
assertThat(payload.settingsUri).isEqualTo(uri);
|
||||
assertThat(payload.inlineType).isEqualTo(type);
|
||||
assertThat(payload.settingSource).isEqualTo(source);
|
||||
assertThat(payload.valueMap.get(1)).isTrue();
|
||||
assertThat(payload.valueMap.get(0)).isFalse();
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
* 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.search;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.search2.InlineSwitchPayload;
|
||||
import com.android.settings.search2.InlineSwitchViewHolder;
|
||||
import com.android.settings.search2.IntentPayload;
|
||||
import com.android.settings.search2.SearchResult;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.shadows.ShadowApplication;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
public class InlineSwitchViewHolderTest {
|
||||
|
||||
private static final String TITLE = "title";
|
||||
private static final String SUMMARY = "summary";
|
||||
|
||||
@Mock
|
||||
private Fragment mFragment;
|
||||
|
||||
@Mock
|
||||
private InlineSwitchPayload mPayload;
|
||||
private InlineSwitchViewHolder mHolder;
|
||||
private Drawable mIcon;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
final Context context = ShadowApplication.getInstance().getApplicationContext();
|
||||
View view = LayoutInflater.from(context).inflate(R.layout.search_inline_switch_item, null);
|
||||
mHolder = new InlineSwitchViewHolder(view, context);
|
||||
|
||||
mIcon = context.getDrawable(R.drawable.ic_search_history);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConstructor_MembersNotNull() {
|
||||
assertThat(mHolder.titleView).isNotNull();
|
||||
assertThat(mHolder.summaryView).isNotNull();
|
||||
assertThat(mHolder.iconView).isNotNull();
|
||||
assertThat(mHolder.switchView).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBindViewElements_AllUpdated() {
|
||||
when(mPayload.getSwitchValue(any(Context.class))).thenReturn(true);
|
||||
SearchResult result = getSearchResult();
|
||||
mHolder.onBind(mFragment, result);
|
||||
mHolder.switchView.setChecked(true);
|
||||
|
||||
assertThat(mHolder.titleView.getText()).isEqualTo(TITLE);
|
||||
assertThat(mHolder.summaryView.getText()).isEqualTo(SUMMARY);
|
||||
assertThat(mHolder.iconView.getDrawable()).isEqualTo(mIcon);
|
||||
assertThat(mHolder.switchView.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
private SearchResult getSearchResult() {
|
||||
SearchResult.Builder builder = new SearchResult.Builder();
|
||||
builder.addTitle(TITLE)
|
||||
.addSummary(SUMMARY)
|
||||
.addRank(1)
|
||||
.addPayload(new InlineSwitchPayload("", 0, null))
|
||||
.addBreadcrumbs(new ArrayList<String>())
|
||||
.addIcon(mIcon)
|
||||
.addPayload(mPayload);
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
}
|
@@ -93,7 +93,7 @@ public class IntentSearchViewHolderTest {
|
||||
.addSummary(SUMMARY)
|
||||
.addRank(1)
|
||||
.addPayload(new IntentPayload(null))
|
||||
.addBreadcrumbs(new ArrayList<>())
|
||||
.addBreadcrumbs(new ArrayList<String>())
|
||||
.addIcon(mIcon);
|
||||
|
||||
return builder.build();
|
||||
|
@@ -21,17 +21,22 @@ import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.search2.DatabaseResultLoader;
|
||||
import com.android.settings.search2.InlineSwitchViewHolder;
|
||||
import com.android.settings.search2.IntentPayload;
|
||||
import com.android.settings.search2.IntentSearchViewHolder;
|
||||
import com.android.settings.search2.ResultPayload;
|
||||
import com.android.settings.search2.SearchFragment;
|
||||
import com.android.settings.search2.SearchResult;
|
||||
import com.android.settings.search2.SearchResult.Builder;
|
||||
import com.android.settings.search2.SearchResultsAdapter;
|
||||
|
||||
import com.android.settings.search2.SearchViewHolder;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -39,6 +44,8 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.Robolectric;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.shadows.ShadowApplication;
|
||||
import org.robolectric.shadows.ShadowViewGroup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -63,6 +70,47 @@ public class SearchAdapterTest {
|
||||
mLoaderClassName = DatabaseResultLoader.class.getName();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoResultsAdded_EmptyListReturned() {
|
||||
List<SearchResult> updatedResults = mAdapter.getSearchResults();
|
||||
assertThat(updatedResults).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSingleSourceMerge_ExactCopyReturned() {
|
||||
ArrayList<SearchResult> intentResults = getIntentSampleResults();
|
||||
mAdapter.mergeResults(intentResults, mLoaderClassName);
|
||||
|
||||
List<SearchResult> updatedResults = mAdapter.getSearchResults();
|
||||
assertThat(updatedResults).containsAllIn(intentResults);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDuplicateSourceMerge_ExactCopyReturned() {
|
||||
ArrayList<SearchResult> intentResults = getIntentSampleResults();
|
||||
mAdapter.mergeResults(intentResults, mLoaderClassName);
|
||||
mAdapter.mergeResults(intentResults, mLoaderClassName);
|
||||
|
||||
List<SearchResult> updatedResults = mAdapter.getSearchResults();
|
||||
assertThat(updatedResults).containsAllIn(intentResults);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreatViewHolder_ReturnsIntentResult() {
|
||||
ViewGroup group = new FrameLayout(mContext);
|
||||
SearchViewHolder view = mAdapter.onCreateViewHolder(group,
|
||||
ResultPayload.PayloadType.INTENT);
|
||||
assertThat(view).isInstanceOf(IntentSearchViewHolder.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreatViewHolder_ReturnsInlineSwitchResult() {
|
||||
ViewGroup group = new FrameLayout(mContext);
|
||||
SearchViewHolder view = mAdapter.onCreateViewHolder(group,
|
||||
ResultPayload.PayloadType.INLINE_SWITCH);
|
||||
assertThat(view).isInstanceOf(InlineSwitchViewHolder.class);
|
||||
}
|
||||
|
||||
private ArrayList<SearchResult> getIntentSampleResults() {
|
||||
ArrayList<SearchResult> sampleResults = new ArrayList<>();
|
||||
ArrayList<String> breadcrumbs = new ArrayList<>();
|
||||
@@ -84,31 +132,4 @@ public class SearchAdapterTest {
|
||||
sampleResults.add(builder.build());
|
||||
return sampleResults;
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testNoResultsAdded_EmptyListReturned() {
|
||||
List<SearchResult> updatedResults = mAdapter.getSearchResults();
|
||||
assertThat(updatedResults).isEmpty();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testSingleSourceMerge_ExactCopyReturned() {
|
||||
ArrayList<SearchResult> intentResults = getIntentSampleResults();
|
||||
mAdapter.mergeResults(intentResults, mLoaderClassName);
|
||||
|
||||
List<SearchResult> updatedResults = mAdapter.getSearchResults();
|
||||
assertThat(updatedResults).containsAllIn(intentResults);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDuplicateSourceMerge_ExactCopyReturned() {
|
||||
ArrayList<SearchResult> intentResults = getIntentSampleResults();
|
||||
mAdapter.mergeResults(intentResults, mLoaderClassName);
|
||||
mAdapter.mergeResults(intentResults, mLoaderClassName);
|
||||
|
||||
List<SearchResult> updatedResults = mAdapter.getSearchResults();
|
||||
assertThat(updatedResults).containsAllIn(intentResults);
|
||||
}
|
||||
}
|
@@ -15,7 +15,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
package com.android.settings.search;
|
||||
package com.android.settings.search2;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
@@ -23,16 +23,13 @@ import android.content.Intent;
|
||||
import android.database.MatrixCursor;
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
||||
import android.util.ArrayMap;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.SubSettings;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.gestures.GestureSettings;
|
||||
import com.android.settings.search2.DatabaseResultLoader;
|
||||
import com.android.settings.search2.IntentPayload;
|
||||
import com.android.settings.search2.ResultPayload;
|
||||
import com.android.settings.search2.ResultPayload.PayloadType;
|
||||
import com.android.settings.search2.SearchResult;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -47,12 +44,14 @@ import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
public class DatabaseResultLoaderTest {
|
||||
private DatabaseResultLoader mLoader;
|
||||
public class CursorToSearchResultConverterTest {
|
||||
|
||||
private CursorToSearchResultConverter mConverter;
|
||||
|
||||
private static final String[] COLUMNS = new String[]{"rank", "title", "summary_on",
|
||||
"summary off", "entries", "keywords", "class name", "screen title", "icon",
|
||||
"intent action", "target package", "target class", "enabled", "key", "user id"};
|
||||
"intent action", "target package", "target class", "enabled", "key",
|
||||
"payload_type", "payload"};
|
||||
|
||||
private static final String[] TITLES = new String[]{"title1", "title2", "title3"};
|
||||
private static final String SUMMARY = "SUMMARY";
|
||||
@@ -66,24 +65,24 @@ public class DatabaseResultLoaderTest {
|
||||
public void setUp() {
|
||||
Context context = Robolectric.buildActivity(Activity.class).get();
|
||||
mDrawable = context.getDrawable(mIcon);
|
||||
mLoader = new DatabaseResultLoader(context, "");
|
||||
mConverter = new CursorToSearchResultConverter(context);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParseNullResults_ReturnsNull() {
|
||||
List<SearchResult> results = mLoader.parseCursorForSearch(null);
|
||||
List<SearchResult> results = mConverter.convertCursor(null);
|
||||
assertThat(results).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParseCursor_NotNull() {
|
||||
List<SearchResult> results = mLoader.parseCursorForSearch(getDummyCursor());
|
||||
List<SearchResult> results = mConverter.convertCursor(getDummyCursor());
|
||||
assertThat(results).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParseCursor_MatchesRank() {
|
||||
List<SearchResult> results = mLoader.parseCursorForSearch(getDummyCursor());
|
||||
List<SearchResult> results = mConverter.convertCursor(getDummyCursor());
|
||||
for (int i = 0; i < EXAMPLES; i++) {
|
||||
assertThat(results.get(i).rank).isEqualTo(i);
|
||||
}
|
||||
@@ -91,7 +90,7 @@ public class DatabaseResultLoaderTest {
|
||||
|
||||
@Test
|
||||
public void testParseCursor_MatchesTitle() {
|
||||
List<SearchResult> results = mLoader.parseCursorForSearch(getDummyCursor());
|
||||
List<SearchResult> results = mConverter.convertCursor(getDummyCursor());
|
||||
for (int i = 0; i < EXAMPLES; i++) {
|
||||
assertThat(results.get(i).title).isEqualTo(TITLES[i]);
|
||||
}
|
||||
@@ -99,7 +98,7 @@ public class DatabaseResultLoaderTest {
|
||||
|
||||
@Test
|
||||
public void testParseCursor_MatchesSummary() {
|
||||
List<SearchResult> results = mLoader.parseCursorForSearch(getDummyCursor());
|
||||
List<SearchResult> results = mConverter.convertCursor(getDummyCursor());
|
||||
for (int i = 0; i < EXAMPLES; i++) {
|
||||
assertThat(results.get(i).summary).isEqualTo(SUMMARY);
|
||||
}
|
||||
@@ -107,7 +106,7 @@ public class DatabaseResultLoaderTest {
|
||||
|
||||
@Test
|
||||
public void testParseCursor_MatchesIcon() {
|
||||
List<SearchResult> results = mLoader.parseCursorForSearch(getDummyCursor());
|
||||
List<SearchResult> results = mConverter.convertCursor(getDummyCursor());
|
||||
for (int i = 0; i < EXAMPLES; i++) {
|
||||
Drawable resultDrawable = results.get(i).icon;
|
||||
assertThat(resultDrawable.toString()).isEqualTo(mDrawable.toString());
|
||||
@@ -116,7 +115,7 @@ public class DatabaseResultLoaderTest {
|
||||
|
||||
@Test
|
||||
public void testParseCursor_NoIcon() {
|
||||
List<SearchResult> results = mLoader.parseCursorForSearch(
|
||||
List<SearchResult> results = mConverter.convertCursor(
|
||||
getDummyCursor(false /* hasIcon */));
|
||||
for (int i = 0; i < EXAMPLES; i++) {
|
||||
Drawable resultDrawable = results.get(i).icon;
|
||||
@@ -126,7 +125,7 @@ public class DatabaseResultLoaderTest {
|
||||
|
||||
@Test
|
||||
public void testParseCursor_MatchesPayloadType() {
|
||||
List<SearchResult> results = mLoader.parseCursorForSearch(getDummyCursor());
|
||||
List<SearchResult> results = mConverter.convertCursor(getDummyCursor());
|
||||
ResultPayload payload;
|
||||
for (int i = 0; i < EXAMPLES; i++) {
|
||||
payload = results.get(i).payload;
|
||||
@@ -153,9 +152,10 @@ public class DatabaseResultLoaderTest {
|
||||
BLANK, // target class
|
||||
BLANK, // enabled
|
||||
BLANK, // key
|
||||
BLANK // user id
|
||||
0, // Payload Type
|
||||
null // Payload
|
||||
});
|
||||
List<SearchResult> results = mLoader.parseCursorForSearch(cursor);
|
||||
List<SearchResult> results = mConverter.convertCursor(cursor);
|
||||
IntentPayload payload = (IntentPayload) results.get(0).payload;
|
||||
Intent intent = payload.intent;
|
||||
assertThat(intent.getComponent().getClassName()).isEqualTo(SubSettings.class.getName());
|
||||
@@ -163,7 +163,7 @@ public class DatabaseResultLoaderTest {
|
||||
|
||||
@Test
|
||||
public void testParseCursor_MatchesIntentPayload() {
|
||||
List<SearchResult> results = mLoader.parseCursorForSearch(getDummyCursor());
|
||||
List<SearchResult> results = mConverter.convertCursor(getDummyCursor());
|
||||
IntentPayload payload;
|
||||
for (int i = 0; i < EXAMPLES; i++) {
|
||||
payload = (IntentPayload) results.get(i).payload;
|
||||
@@ -172,6 +172,46 @@ public class DatabaseResultLoaderTest {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParseCursor_MatchesInlineSwitchPayload() {
|
||||
MatrixCursor cursor = new MatrixCursor(COLUMNS);
|
||||
final String BLANK = "";
|
||||
final String uri = "test.com";
|
||||
final int type = ResultPayload.PayloadType.INLINE_SWITCH;
|
||||
final int source = ResultPayload.SettingsSource.SECURE;
|
||||
final ArrayMap<Integer, Boolean> map = new ArrayMap<>();
|
||||
map.put(1, true);
|
||||
map.put(0, false);
|
||||
final InlineSwitchPayload payload = new InlineSwitchPayload(uri, source, map);
|
||||
|
||||
cursor.addRow(new Object[]{
|
||||
0, // rank
|
||||
TITLES[0],
|
||||
SUMMARY,
|
||||
SUMMARY, // summary off
|
||||
BLANK, // entries
|
||||
BLANK, // Keywords
|
||||
GestureSettings.class.getName(),
|
||||
BLANK, // screen title
|
||||
null, // icon
|
||||
BLANK, // action
|
||||
null, // target package
|
||||
BLANK, // target class
|
||||
BLANK, // enabled
|
||||
BLANK, // key
|
||||
type, // Payload Type
|
||||
ResultPayloadUtils.marshall(payload) // Payload
|
||||
});
|
||||
List<SearchResult> results = mConverter.convertCursor(cursor);
|
||||
InlineSwitchPayload newPayload = (InlineSwitchPayload) results.get(0).payload;
|
||||
|
||||
assertThat(newPayload.settingsUri).isEqualTo(uri);
|
||||
assertThat(newPayload.inlineType).isEqualTo(type);
|
||||
assertThat(newPayload.settingSource).isEqualTo(source);
|
||||
assertThat(newPayload.valueMap.get(1)).isTrue();
|
||||
assertThat(newPayload.valueMap.get(0)).isFalse();
|
||||
}
|
||||
|
||||
private MatrixCursor getDummyCursor() {
|
||||
return getDummyCursor(true /* hasIcon */);
|
||||
}
|
||||
@@ -196,7 +236,10 @@ public class DatabaseResultLoaderTest {
|
||||
item.add(BLANK); // target class
|
||||
item.add(BLANK); // enabled
|
||||
item.add(BLANK); // key
|
||||
item.add(BLANK); // user id
|
||||
// Note there is no user id. This is omitted because it is not being
|
||||
// queried. Should the queries change, so should this method.
|
||||
item.add(Integer.toString(0)); // Payload Type
|
||||
item.add(null); // Payload
|
||||
|
||||
cursor.addRow(item);
|
||||
}
|
Reference in New Issue
Block a user