2 * Copyright (C) 2016 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
16 package com.android.settings.testutils;
18 import static org.mockito.Matchers.anyString;
19 import static org.mockito.Mockito.mock;
20 import static org.mockito.Mockito.when;
22 import android.content.Context;
24 import com.android.settings.accounts.AccountFeatureProvider;
25 import com.android.settings.applications.ApplicationFeatureProvider;
26 import com.android.settings.bluetooth.BluetoothFeatureProvider;
27 import com.android.settings.dashboard.DashboardFeatureProvider;
28 import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
29 import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
30 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
31 import com.android.settings.gestures.AssistGestureFeatureProvider;
32 import com.android.settings.localepicker.LocaleFeatureProvider;
33 import com.android.settings.overlay.FeatureFactory;
34 import com.android.settings.overlay.SupportFeatureProvider;
35 import com.android.settings.overlay.SurveyFeatureProvider;
36 import com.android.settings.search.DeviceIndexFeatureProvider;
37 import com.android.settings.search.SearchFeatureProvider;
38 import com.android.settings.security.SecurityFeatureProvider;
39 import com.android.settings.slices.SlicesFeatureProvider;
40 import com.android.settings.users.UserFeatureProvider;
41 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
43 import org.mockito.Answers;
46 * Test util to provide fake FeatureFactory. To use this factory, call {@code setupForTest} in
47 * {@code @Before} method of the test class.
49 public class FakeFeatureFactory extends FeatureFactory {
51 public final SupportFeatureProvider supportFeatureProvider;
52 public final MetricsFeatureProvider metricsFeatureProvider;
53 public final PowerUsageFeatureProvider powerUsageFeatureProvider;
54 public final DashboardFeatureProvider dashboardFeatureProvider;
55 public final LocaleFeatureProvider localeFeatureProvider;
56 public final ApplicationFeatureProvider applicationFeatureProvider;
57 public final EnterprisePrivacyFeatureProvider enterprisePrivacyFeatureProvider;
58 public final SurveyFeatureProvider surveyFeatureProvider;
59 public final SecurityFeatureProvider securityFeatureProvider;
60 public final SuggestionFeatureProvider suggestionsFeatureProvider;
61 public final UserFeatureProvider userFeatureProvider;
62 public final AssistGestureFeatureProvider assistGestureFeatureProvider;
63 public final BluetoothFeatureProvider bluetoothFeatureProvider;
64 public final AccountFeatureProvider mAccountFeatureProvider;
65 public final DeviceIndexFeatureProvider deviceIndexFeatureProvider;
67 public SlicesFeatureProvider slicesFeatureProvider;
68 public SearchFeatureProvider searchFeatureProvider;
71 * Call this in {@code @Before} method of the test class to use fake factory.
73 public static FakeFeatureFactory setupForTest() {
74 final Context context = mock(Context.class, Answers.RETURNS_DEEP_STUBS);
76 when(context.getString(com.android.settings.R.string.config_featureFactory))
77 .thenReturn(FakeFeatureFactory.class.getName());
79 Class c = FakeFeatureFactory.class;
80 when(context.getClassLoader().loadClass(anyString())).thenReturn(c);
81 } catch (ClassNotFoundException e) {
84 return (FakeFeatureFactory) FakeFeatureFactory.getFactory(context);
88 * Used by reflection. Do not call directly.
90 public FakeFeatureFactory() {
91 supportFeatureProvider = mock(SupportFeatureProvider.class);
92 metricsFeatureProvider = mock(MetricsFeatureProvider.class);
93 powerUsageFeatureProvider = mock(PowerUsageFeatureProvider.class);
94 dashboardFeatureProvider = mock(DashboardFeatureProvider.class);
95 localeFeatureProvider = mock(LocaleFeatureProvider.class);
96 applicationFeatureProvider = mock(ApplicationFeatureProvider.class);
97 enterprisePrivacyFeatureProvider = mock(EnterprisePrivacyFeatureProvider.class);
98 searchFeatureProvider = mock(SearchFeatureProvider.class);
99 surveyFeatureProvider = mock(SurveyFeatureProvider.class);
100 securityFeatureProvider = mock(SecurityFeatureProvider.class);
101 suggestionsFeatureProvider = mock(SuggestionFeatureProvider.class);
102 userFeatureProvider = mock(UserFeatureProvider.class);
103 assistGestureFeatureProvider = mock(AssistGestureFeatureProvider.class);
104 bluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
105 slicesFeatureProvider = mock(SlicesFeatureProvider.class);
106 mAccountFeatureProvider = mock(AccountFeatureProvider.class);
107 deviceIndexFeatureProvider = mock(DeviceIndexFeatureProvider.class);
111 public SuggestionFeatureProvider getSuggestionFeatureProvider(Context context) {
112 return suggestionsFeatureProvider;
116 public SupportFeatureProvider getSupportFeatureProvider(Context context) {
117 return supportFeatureProvider;
121 public MetricsFeatureProvider getMetricsFeatureProvider() {
122 return metricsFeatureProvider;
126 public PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context) {
127 return powerUsageFeatureProvider;
131 public DashboardFeatureProvider getDashboardFeatureProvider(Context context) {
132 return dashboardFeatureProvider;
136 public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
137 return applicationFeatureProvider;
141 public LocaleFeatureProvider getLocaleFeatureProvider() {
142 return localeFeatureProvider;
146 public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) {
147 return enterprisePrivacyFeatureProvider;
151 public SearchFeatureProvider getSearchFeatureProvider() {
152 return searchFeatureProvider;
156 public SurveyFeatureProvider getSurveyFeatureProvider(Context context) {
157 return surveyFeatureProvider;
161 public SecurityFeatureProvider getSecurityFeatureProvider() {
162 return securityFeatureProvider;
166 public UserFeatureProvider getUserFeatureProvider(Context context) {
167 return userFeatureProvider;
171 public BluetoothFeatureProvider getBluetoothFeatureProvider(Context context) {
172 return bluetoothFeatureProvider;
176 public AssistGestureFeatureProvider getAssistGestureFeatureProvider() {
177 return assistGestureFeatureProvider;
181 public SlicesFeatureProvider getSlicesFeatureProvider() {
182 return slicesFeatureProvider;
186 public AccountFeatureProvider getAccountFeatureProvider() {
187 return mAccountFeatureProvider;
191 public DeviceIndexFeatureProvider getDeviceIndexFeatureProvider() {
192 return deviceIndexFeatureProvider;