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