2 * Copyright (C) 2017 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 package com.android.settings.search;
20 import android.content.ComponentName;
21 import android.content.Intent;
22 import android.content.Context;
24 import com.android.settings.testutils.SettingsRobolectricTestRunner;
25 import com.android.settings.TestConfig;
26 import com.android.settings.search.DatabaseIndexingManager.DatabaseRow;
27 import com.android.settings.search.DatabaseIndexingManager.DatabaseRow.Builder;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.robolectric.RuntimeEnvironment;
33 import org.robolectric.annotation.Config;
35 import static com.google.common.truth.Truth.assertThat;
37 @RunWith(SettingsRobolectricTestRunner.class)
38 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
39 public class DatabaseRowTest {
40 private Builder mBuilder;
42 private static final String LOCALE = "locale";
43 private static final String UPDATED_TITLE = "updated title";
44 private static final String NORMALIZED_TITLE = "normal title";
45 private static final String UPDATED_SUMMARY_ON = "updated summary on";
46 private static final String NORMALIZED_SUMMARY_ON = "normalized summary on";
47 private static final String UPDATED_SUMMARY_OFF = "updated summary off";
48 private static final String NORMALIZED_SUMMARY_OFF = "normalized summary off";
49 private static final String ENTRIES = "entries";
50 private static final String CLASS_NAME = "class name";
51 private static final String SCREEN_TITLE = "screen title";
52 private static final int ICON_RES_ID = 0xff;
53 private static final int RANK = 1;
54 private static final String SPACE_DELIMITED_KEYWORDS = "keywords";
55 private static final String INTENT_ACTION = "intent action";
56 private static final String INTENT_TARGET_PACKAGE = "target package";
57 private static final String INTENT_TARGET_CLASS = "target class";
58 private static final boolean ENABLED = true;
59 private static final String KEY = "key";
60 private static final int USER_ID = 1;
62 private Context mContext;
66 mContext = RuntimeEnvironment.application;
67 mBuilder = createBuilder();
71 public void testFullRowBuild_nonNull() {
72 DatabaseRow row = generateRow();
73 assertThat(row).isNotNull();
77 public void testPrimitivesBuild_noDataLoss() {
78 DatabaseRow row = generateRow();
80 assertThat(row.locale).isEqualTo(LOCALE);
81 assertThat(row.updatedTitle).isEqualTo(UPDATED_TITLE);
82 assertThat(row.normalizedTitle).isEqualTo(NORMALIZED_TITLE);
83 assertThat(row.updatedSummaryOn).isEqualTo(UPDATED_SUMMARY_ON);
84 assertThat(row.normalizedSummaryOn).isEqualTo(NORMALIZED_SUMMARY_ON);
85 assertThat(row.updatedSummaryOff).isEqualTo(UPDATED_SUMMARY_OFF);
86 assertThat(row.normalizedSummaryOff).isEqualTo(NORMALIZED_SUMMARY_OFF);
87 assertThat(row.entries).isEqualTo(ENTRIES);
88 assertThat(row.className).isEqualTo(CLASS_NAME);
89 assertThat(row.screenTitle).isEqualTo(SCREEN_TITLE);
90 assertThat(row.iconResId).isEqualTo(ICON_RES_ID);
91 assertThat(row.rank).isEqualTo(RANK);
92 assertThat(row.spaceDelimitedKeywords).isEqualTo(SPACE_DELIMITED_KEYWORDS);
93 assertThat(row.intentAction).isEqualTo(INTENT_ACTION);
94 assertThat(row.intentTargetClass).isEqualTo(INTENT_TARGET_CLASS);
95 assertThat(row.intentTargetPackage).isEqualTo(INTENT_TARGET_PACKAGE);
96 assertThat(row.enabled).isEqualTo(ENABLED);
97 assertThat(row.userId).isEqualTo(USER_ID);
98 assertThat(row.key).isEqualTo(KEY);
99 assertThat(row.payloadType).isEqualTo(ResultPayload.PayloadType.INTENT);
100 assertThat(row.payload).isNotNull();
104 public void testGenericIntent_addedToPayload() {
105 final DatabaseRow row = generateRow();
106 final ResultPayload payload = ResultPayloadUtils.unmarshall(row.payload,
107 ResultPayload.CREATOR);
108 final ComponentName name = payload.getIntent().getComponent();
109 assertThat(name.getClassName()).isEqualTo(INTENT_TARGET_CLASS);
110 assertThat(name.getPackageName()).isEqualTo(INTENT_TARGET_PACKAGE);
114 public void testRowWithInlinePayload_genericPayloadNotAdded() {
115 final String URI = "test uri";
116 final InlineSwitchPayload payload = new InlineSwitchPayload(URI, 0 /* mSettingSource */,
117 1 /* onValue */, null /* intent */, true /* isDeviceSupported */);
118 mBuilder.setPayload(payload);
119 final DatabaseRow row = generateRow();
120 final InlineSwitchPayload unmarshalledPayload = ResultPayloadUtils
121 .unmarshall(row.payload, InlineSwitchPayload.CREATOR);
123 assertThat(row.payloadType).isEqualTo(ResultPayload.PayloadType.INLINE_SWITCH);
124 assertThat(unmarshalledPayload.mSettingKey).isEqualTo(URI);
128 public void testRowWithInlinePayload_intentAddedToInlinePayload() {
129 final String URI = "test uri";
130 final ComponentName component = new ComponentName(INTENT_TARGET_PACKAGE,
131 INTENT_TARGET_CLASS);
132 final Intent intent = new Intent();
133 intent.setComponent(component);
135 final InlineSwitchPayload payload = new InlineSwitchPayload(URI, 0 /* mSettingSource */,
136 1 /* onValue */, intent, true /* isDeviceSupported */);
137 mBuilder.setPayload(payload);
138 final DatabaseRow row = generateRow();
139 final InlineSwitchPayload unmarshalledPayload = ResultPayloadUtils
140 .unmarshall(row.payload, InlineSwitchPayload.CREATOR);
141 final ComponentName name = unmarshalledPayload.getIntent().getComponent();
143 assertThat(name.getClassName()).isEqualTo(INTENT_TARGET_CLASS);
144 assertThat(name.getPackageName()).isEqualTo(INTENT_TARGET_PACKAGE);
148 private DatabaseRow generateRow() {
149 return mBuilder.build(mContext);
152 private DatabaseRow.Builder createBuilder() {
153 mBuilder = new DatabaseRow.Builder();
154 mBuilder.setLocale(LOCALE)
155 .setUpdatedTitle(UPDATED_TITLE)
156 .setNormalizedTitle(NORMALIZED_TITLE)
157 .setUpdatedSummaryOn(UPDATED_SUMMARY_ON)
158 .setNormalizedSummaryOn(NORMALIZED_SUMMARY_ON)
159 .setUpdatedSummaryOff(UPDATED_SUMMARY_OFF)
160 .setNormalizedSummaryOff(NORMALIZED_SUMMARY_OFF)
162 .setClassName(CLASS_NAME)
163 .setScreenTitle(SCREEN_TITLE)
164 .setIconResId(ICON_RES_ID)
166 .setSpaceDelimitedKeywords(SPACE_DELIMITED_KEYWORDS)
167 .setIntentAction(INTENT_ACTION)
168 .setIntentTargetPackage(INTENT_TARGET_PACKAGE)
169 .setIntentTargetClass(INTENT_TARGET_CLASS)