summaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/messaging/FakeFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/messaging/FakeFactory.java')
-rw-r--r--tests/src/com/android/messaging/FakeFactory.java288
1 files changed, 288 insertions, 0 deletions
diff --git a/tests/src/com/android/messaging/FakeFactory.java b/tests/src/com/android/messaging/FakeFactory.java
new file mode 100644
index 0000000..41ede77
--- /dev/null
+++ b/tests/src/com/android/messaging/FakeFactory.java
@@ -0,0 +1,288 @@
+/*
+ * Copyright (C) 2015 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.messaging;
+
+import android.content.ContentProvider;
+import android.content.Context;
+import android.net.Uri;
+import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import com.android.messaging.datamodel.DataModel;
+import com.android.messaging.datamodel.MemoryCacheManager;
+import com.android.messaging.datamodel.ParticipantRefresh.ContactContentObserver;
+import com.android.messaging.datamodel.media.MediaCacheManager;
+import com.android.messaging.datamodel.media.MediaResourceManager;
+import com.android.messaging.sms.ApnDatabase;
+import com.android.messaging.sms.BugleCarrierConfigValuesLoader;
+import com.android.messaging.ui.UIIntents;
+import com.android.messaging.util.Assert;
+import com.android.messaging.util.BugleGservices;
+import com.android.messaging.util.BuglePrefs;
+import com.android.messaging.util.FakeBugleGservices;
+import com.android.messaging.util.FakeBuglePrefs;
+import com.android.messaging.util.MediaUtil;
+import com.android.messaging.util.OsUtil;
+import com.android.messaging.util.PhoneUtils;
+
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import java.util.List;
+
+public class FakeFactory extends Factory {
+ private Context mContext;
+ private FakeContext mFakeContext;
+ private BugleGservices mBugleGservices;
+ private BuglePrefs mBuglePrefs;
+ private DataModel mDataModel;
+ private UIIntents mUIIntents;
+ private MemoryCacheManager mMemoryCacheManager;
+ private MediaResourceManager mMediaResourceManager;
+ private MediaCacheManager mMediaCacheManager;
+ @Mock protected PhoneUtils mPhoneUtils;
+ private MediaUtil mMediaUtil;
+ private BugleCarrierConfigValuesLoader mCarrierConfigValuesLoader;
+
+ private FakeFactory() {
+ }
+
+ public static FakeFactory registerWithFakeContext(final Context context,
+ final FakeContext fake) {
+ // In tests we currently NEVER run the application/factory initialization
+ Assert.isTrue(!sRegistered);
+ Assert.isTrue(!sInitialized);
+
+ final FakeFactory factory = new FakeFactory();
+ Factory.setInstance(factory);
+
+ // At this point Factory is published. Services can now get initialized and depend on
+ // Factory.get().
+ factory.mContext = context;
+ factory.mFakeContext = fake;
+ factory.mMediaResourceManager = Mockito.mock(MediaResourceManager.class);
+ factory.mBugleGservices = new FakeBugleGservices();
+ factory.mBuglePrefs = new FakeBuglePrefs();
+ factory.mPhoneUtils = Mockito.mock(PhoneUtils.class);
+
+ ApnDatabase.initializeAppContext(context);
+
+ Mockito.when(factory.mPhoneUtils.getCanonicalBySystemLocale(Matchers.anyString()))
+ .thenAnswer(new Answer<String>() {
+ @Override
+ public String answer(final InvocationOnMock invocation) throws Throwable {
+ final Object[] args = invocation.getArguments();
+ return (String) args[0];
+ }
+ }
+ );
+ Mockito.when(factory.mPhoneUtils.getCanonicalBySimLocale(Matchers.anyString())).thenAnswer(
+ new Answer<String>() {
+ @Override
+ public String answer(final InvocationOnMock invocation) throws Throwable {
+ final Object[] args = invocation.getArguments();
+ return (String) args[0];
+ }
+ }
+ );
+ Mockito.when(factory.mPhoneUtils.formatForDisplay(Matchers.anyString())).thenAnswer(
+ new Answer<String>() {
+ @Override
+ public String answer(final InvocationOnMock invocation) throws Throwable {
+ return (String) invocation.getArguments()[0];
+ }
+ }
+ );
+ if (OsUtil.isAtLeastL_MR1()) {
+ Mockito.when(factory.mPhoneUtils.toLMr1()).thenReturn(
+ new PhoneUtils.LMr1() {
+ @Override
+ public SubscriptionInfo getActiveSubscriptionInfo() {
+ return null;
+ }
+
+ @Override
+ public List<SubscriptionInfo> getActiveSubscriptionInfoList() {
+ return null;
+ }
+
+ @Override
+ public void registerOnSubscriptionsChangedListener(
+ final SubscriptionManager.OnSubscriptionsChangedListener listener) {
+ }
+ }
+ );
+ }
+ // By default only allow reading of system settings (that we provide) - can delegate
+ // to real provider if required.
+ final FakeContentProvider settings = new FakeContentProvider(context,
+ Settings.System.CONTENT_URI, false);
+ settings.addOverrideData(Settings.System.CONTENT_URI, "name=?", "time_12_24",
+ new String[] { "value" }, new Object[][] { { "12" } });
+ settings.addOverrideData(Settings.System.CONTENT_URI, "name=?", "sound_effects_enabled",
+ new String[] { "value" }, new Object[][] { { 1 } });
+
+ factory.withProvider(Settings.System.CONTENT_URI, settings);
+
+ return factory;
+ }
+
+ public static FakeFactory register(final Context applicationContext) {
+ final FakeContext context = new FakeContext(applicationContext);
+ return registerWithFakeContext(applicationContext, context);
+ }
+
+ public static FakeFactory registerWithoutFakeContext(final Context applicationContext) {
+ return registerWithFakeContext(applicationContext, null);
+ }
+
+ @Override
+ public void onRequiredPermissionsAcquired() {
+ }
+
+ @Override
+ public Context getApplicationContext() {
+ return ((mFakeContext != null) ? mFakeContext : mContext );
+ }
+
+ @Override
+ public DataModel getDataModel() {
+ return mDataModel;
+ }
+
+ @Override
+ public BugleGservices getBugleGservices() {
+ return mBugleGservices;
+ }
+
+ @Override
+ public BuglePrefs getApplicationPrefs() {
+ return mBuglePrefs;
+ }
+
+ @Override
+ public BuglePrefs getWidgetPrefs() {
+ return mBuglePrefs;
+ }
+
+ @Override
+ public BuglePrefs getSubscriptionPrefs(final int subId) {
+ return mBuglePrefs;
+ }
+
+ @Override
+ public UIIntents getUIIntents() {
+ return mUIIntents;
+ }
+
+ @Override
+ public MemoryCacheManager getMemoryCacheManager() {
+ return mMemoryCacheManager;
+ }
+
+ @Override
+ public MediaResourceManager getMediaResourceManager() {
+ return mMediaResourceManager;
+ }
+
+ @Override
+ public MediaCacheManager getMediaCacheManager() {
+ return mMediaCacheManager;
+ }
+
+ @Override
+ public PhoneUtils getPhoneUtils(final int subId) {
+ return mPhoneUtils;
+ }
+
+ @Override
+ public MediaUtil getMediaUtil() {
+ return mMediaUtil;
+ }
+
+ @Override
+ public BugleCarrierConfigValuesLoader getCarrierConfigValuesLoader() {
+ return mCarrierConfigValuesLoader;
+ }
+
+ @Override
+ public ContactContentObserver getContactContentObserver() {
+ return null;
+ }
+
+ @Override
+ public void reclaimMemory() {
+ }
+
+ @Override
+ public void onActivityResume() {
+ }
+
+ public FakeFactory withDataModel(final DataModel dataModel) {
+ this.mDataModel = dataModel;
+ return this;
+ }
+
+ public FakeFactory withUIIntents(final UIIntents uiIntents) {
+ this.mUIIntents = uiIntents;
+ return this;
+ }
+
+ public FakeFactory withMemoryCacheManager(final MemoryCacheManager memoryCacheManager) {
+ this.mMemoryCacheManager = memoryCacheManager;
+ return this;
+ }
+
+ public FakeFactory withBugleGservices(final BugleGservices bugleGservices) {
+ this.mBugleGservices = bugleGservices;
+ return this;
+ }
+
+ public FakeFactory withMediaCacheManager(final MediaCacheManager mediaCacheManager) {
+ this.mMediaCacheManager = mediaCacheManager;
+ return this;
+ }
+
+ public FakeFactory withProvider(final Uri uri, final ContentProvider provider) {
+ if (mFakeContext != null) {
+ mFakeContext.addContentProvider(uri.getAuthority(), provider);
+ }
+ return this;
+ }
+
+ public FakeFactory withDefaultProvider(final Uri uri) {
+ if (mFakeContext != null) {
+ mFakeContext.addDefaultProvider(this.mContext, uri);
+ }
+ return this;
+ }
+
+ public FakeFactory withMediaUtil(final MediaUtil mediaUtil) {
+ this.mMediaUtil = mediaUtil;
+ return this;
+ }
+
+ public FakeFactory withCarrierConfigValuesLoader(
+ final BugleCarrierConfigValuesLoader carrierConfigValuesLoader) {
+ this.mCarrierConfigValuesLoader = carrierConfigValuesLoader;
+ return this;
+ }
+}