OSDN Git Service

60afff5c9b48711bbd7ea6d6c864d8ca9e09ad62
[android-x86/packages-apps-Settings.git] / tests / robotests / src / com / android / settings / search / DatabaseRowTest.java
1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 package com.android.settings.search;
19
20 import android.content.ComponentName;
21 import android.content.Intent;
22 import android.content.Context;
23
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;
28
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;
34
35 import static com.google.common.truth.Truth.assertThat;
36
37 @RunWith(SettingsRobolectricTestRunner.class)
38 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
39 public class DatabaseRowTest {
40     private Builder mBuilder;
41
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;
61
62     private Context mContext;
63
64     @Before
65     public void setUp() {
66         mContext = RuntimeEnvironment.application;
67         mBuilder = createBuilder();
68     }
69
70     @Test
71     public void testFullRowBuild_nonNull() {
72         DatabaseRow row = generateRow();
73         assertThat(row).isNotNull();
74     }
75
76     @Test
77     public void testPrimitivesBuild_noDataLoss() {
78         DatabaseRow row = generateRow();
79
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();
101     }
102
103     @Test
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);
111     }
112
113     @Test
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);
122
123         assertThat(row.payloadType).isEqualTo(ResultPayload.PayloadType.INLINE_SWITCH);
124         assertThat(unmarshalledPayload.mSettingKey).isEqualTo(URI);
125     }
126
127     @Test
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);
134
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();
142
143         assertThat(name.getClassName()).isEqualTo(INTENT_TARGET_CLASS);
144         assertThat(name.getPackageName()).isEqualTo(INTENT_TARGET_PACKAGE);
145     }
146
147
148     private DatabaseRow generateRow() {
149         return mBuilder.build(mContext);
150     }
151
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)
161                 .setEntries(ENTRIES)
162                 .setClassName(CLASS_NAME)
163                 .setScreenTitle(SCREEN_TITLE)
164                 .setIconResId(ICON_RES_ID)
165                 .setRank(RANK)
166                 .setSpaceDelimitedKeywords(SPACE_DELIMITED_KEYWORDS)
167                 .setIntentAction(INTENT_ACTION)
168                 .setIntentTargetPackage(INTENT_TARGET_PACKAGE)
169                 .setIntentTargetClass(INTENT_TARGET_CLASS)
170                 .setEnabled(ENABLED)
171                 .setKey(KEY)
172                 .setUserId(USER_ID);
173         return mBuilder;
174     }
175 }