1e07253f278a20009044de986915b380700caea2dJack Yu/* 2e07253f278a20009044de986915b380700caea2dJack Yu * Copyright (C) 2016 The Android Open Source Project 3e07253f278a20009044de986915b380700caea2dJack Yu * 4e07253f278a20009044de986915b380700caea2dJack Yu * Licensed under the Apache License, Version 2.0 (the "License"); 5e07253f278a20009044de986915b380700caea2dJack Yu * you may not use this file except in compliance with the License. 6e07253f278a20009044de986915b380700caea2dJack Yu * You may obtain a copy of the License at 7e07253f278a20009044de986915b380700caea2dJack Yu * 8e07253f278a20009044de986915b380700caea2dJack Yu * http://www.apache.org/licenses/LICENSE-2.0 9e07253f278a20009044de986915b380700caea2dJack Yu * 10e07253f278a20009044de986915b380700caea2dJack Yu * Unless required by applicable law or agreed to in writing, software 11e07253f278a20009044de986915b380700caea2dJack Yu * distributed under the License is distributed on an "AS IS" BASIS, 12e07253f278a20009044de986915b380700caea2dJack Yu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e07253f278a20009044de986915b380700caea2dJack Yu * See the License for the specific language governing permissions and 14e07253f278a20009044de986915b380700caea2dJack Yu * limitations under the License. 15e07253f278a20009044de986915b380700caea2dJack Yu */ 16e07253f278a20009044de986915b380700caea2dJack Yu 17e07253f278a20009044de986915b380700caea2dJack Yupackage com.android.cellbroadcastreceiver; 18e07253f278a20009044de986915b380700caea2dJack Yu 19d725f1587481287838e8cbee2279abcc21232ba2Jack Yuimport static org.mockito.Mockito.doReturn; 20d725f1587481287838e8cbee2279abcc21232ba2Jack Yuimport static org.mockito.Mockito.eq; 21d725f1587481287838e8cbee2279abcc21232ba2Jack Yu 22e07253f278a20009044de986915b380700caea2dJack Yuimport android.content.Context; 23d725f1587481287838e8cbee2279abcc21232ba2Jack Yuimport android.content.res.Resources; 24e07253f278a20009044de986915b380700caea2dJack Yuimport android.os.PersistableBundle; 25e07253f278a20009044de986915b380700caea2dJack Yuimport android.telephony.CarrierConfigManager; 26d725f1587481287838e8cbee2279abcc21232ba2Jack Yuimport android.util.Log; 27e07253f278a20009044de986915b380700caea2dJack Yuimport android.util.SparseArray; 28e07253f278a20009044de986915b380700caea2dJack Yu 29e07253f278a20009044de986915b380700caea2dJack Yuimport org.mockito.Mock; 30e07253f278a20009044de986915b380700caea2dJack Yuimport org.mockito.MockitoAnnotations; 31e07253f278a20009044de986915b380700caea2dJack Yu 32e07253f278a20009044de986915b380700caea2dJack Yupublic abstract class CellBroadcastTest { 33e07253f278a20009044de986915b380700caea2dJack Yu 34e07253f278a20009044de986915b380700caea2dJack Yu protected static String TAG; 35e07253f278a20009044de986915b380700caea2dJack Yu 36e07253f278a20009044de986915b380700caea2dJack Yu private SparseArray<PersistableBundle> mBundles = new SparseArray<>(); 37e07253f278a20009044de986915b380700caea2dJack Yu 3885f8978e580a2172c2a1f26d42fcd09269bc581dJack Yu MockedServiceManager mMockedServiceManager; 3985f8978e580a2172c2a1f26d42fcd09269bc581dJack Yu 40e07253f278a20009044de986915b380700caea2dJack Yu @Mock 41e07253f278a20009044de986915b380700caea2dJack Yu Context mContext; 42e07253f278a20009044de986915b380700caea2dJack Yu @Mock 43e07253f278a20009044de986915b380700caea2dJack Yu CarrierConfigManager mCarrierConfigManager; 44d725f1587481287838e8cbee2279abcc21232ba2Jack Yu @Mock 45d725f1587481287838e8cbee2279abcc21232ba2Jack Yu Resources mResources; 46e07253f278a20009044de986915b380700caea2dJack Yu 47e07253f278a20009044de986915b380700caea2dJack Yu protected void setUp(String tag) throws Exception { 48e07253f278a20009044de986915b380700caea2dJack Yu TAG = tag; 49e07253f278a20009044de986915b380700caea2dJack Yu MockitoAnnotations.initMocks(this); 5085f8978e580a2172c2a1f26d42fcd09269bc581dJack Yu mMockedServiceManager = new MockedServiceManager(); 51e07253f278a20009044de986915b380700caea2dJack Yu initContext(); 52e07253f278a20009044de986915b380700caea2dJack Yu } 53e07253f278a20009044de986915b380700caea2dJack Yu 54e07253f278a20009044de986915b380700caea2dJack Yu private void initContext() { 55d725f1587481287838e8cbee2279abcc21232ba2Jack Yu doReturn(mCarrierConfigManager).when(mContext) 56d725f1587481287838e8cbee2279abcc21232ba2Jack Yu .getSystemService(eq(Context.CARRIER_CONFIG_SERVICE)); 57d725f1587481287838e8cbee2279abcc21232ba2Jack Yu doReturn(mResources).when(mContext).getResources(); 58e07253f278a20009044de986915b380700caea2dJack Yu } 59e07253f278a20009044de986915b380700caea2dJack Yu 6085f8978e580a2172c2a1f26d42fcd09269bc581dJack Yu void carrierConfigSetStringArray(int subId, String key, String[] values) { 61e07253f278a20009044de986915b380700caea2dJack Yu if (mBundles.get(subId) == null) { 62e07253f278a20009044de986915b380700caea2dJack Yu mBundles.put(subId, new PersistableBundle()); 63e07253f278a20009044de986915b380700caea2dJack Yu } 64e07253f278a20009044de986915b380700caea2dJack Yu mBundles.get(subId).putStringArray(key, values); 65c8c761f60056204eaea0075def39cee2787f4623Derek Tan doReturn(mBundles.get(subId)).when(mCarrierConfigManager).getConfigForSubId(eq(subId)); 66e07253f278a20009044de986915b380700caea2dJack Yu } 67e07253f278a20009044de986915b380700caea2dJack Yu 68d725f1587481287838e8cbee2279abcc21232ba2Jack Yu void putResources(int id, String[] values) { 69d725f1587481287838e8cbee2279abcc21232ba2Jack Yu doReturn(values).when(mResources).getStringArray(eq(id)); 70d725f1587481287838e8cbee2279abcc21232ba2Jack Yu } 71d725f1587481287838e8cbee2279abcc21232ba2Jack Yu 72e07253f278a20009044de986915b380700caea2dJack Yu protected void tearDown() throws Exception { 7385f8978e580a2172c2a1f26d42fcd09269bc581dJack Yu mMockedServiceManager.restoreAllServices(); 74e07253f278a20009044de986915b380700caea2dJack Yu } 75e07253f278a20009044de986915b380700caea2dJack Yu 76e07253f278a20009044de986915b380700caea2dJack Yu protected static void logd(String s) { 77e07253f278a20009044de986915b380700caea2dJack Yu Log.d(TAG, s); 78e07253f278a20009044de986915b380700caea2dJack Yu } 79e07253f278a20009044de986915b380700caea2dJack Yu} 80