BluetoothMapContentObserverTest.java revision acc87cca571c89322980423e190b188fdd8fa265
1package com.android.bluetooth.map;
2
3import android.content.Context;
4import android.content.ContentResolver;
5import android.content.ContentProvider;
6import android.database.sqlite.SQLiteException;
7import android.database.Cursor;
8import android.net.Uri;
9import android.os.Looper;
10import android.os.RemoteException;
11import android.os.UserManager;
12import android.provider.Telephony.Sms;
13import android.test.AndroidTestCase;
14import android.test.mock.MockContentResolver;
15import android.test.mock.MockContentProvider;
16import android.telephony.TelephonyManager;
17import android.util.Log;
18
19import junit.framework.Assert;
20
21import static org.mockito.Mockito.mock;
22import static org.mockito.Mockito.when;
23
24public class BluetoothMapContentObserverTest extends AndroidTestCase {
25
26    class ExceptionTestProvider extends MockContentProvider {
27        public ExceptionTestProvider(Context context) {
28            super(context);
29        }
30
31        @Override
32        public Cursor query(Uri uri, String[] b, String s, String[] c, String d) {
33            throw new SQLiteException();
34        }
35    }
36
37    public void testInitMsgList() {
38        if (Looper.myLooper() == null) Looper.prepare();
39
40        Context mockContext = mock(Context.class);
41        MockContentResolver mockResolver = new MockContentResolver();
42        ExceptionTestProvider mockProvider = new ExceptionTestProvider(mockContext);
43        mockResolver.addProvider("sms", mockProvider);
44
45        TelephonyManager mockTelephony = mock(TelephonyManager.class);
46        UserManager mockUserService = mock(UserManager.class);
47        BluetoothMapMasInstance mockMas = mock(BluetoothMapMasInstance.class);
48
49        // Functions that get called when BluetoothMapContentObserver is created
50        when(mockUserService.isUserUnlocked()).thenReturn(true);
51        when(mockContext.getContentResolver()).thenReturn(mockResolver);
52        when(mockContext.getSystemService(Context.TELEPHONY_SERVICE))
53            .thenReturn(mockTelephony);
54        when(mockContext.getSystemService(Context.USER_SERVICE))
55            .thenReturn(mockUserService);
56
57        BluetoothMapContentObserver observer;
58        try {
59            // The constructor of BluetoothMapContentObserver calls initMsgList
60            observer = new BluetoothMapContentObserver(mockContext, null,
61                                                       mockMas, null, true);
62        } catch(RemoteException e) {
63            fail("Failed to created BluetoothMapContentObserver object");
64        } catch(SQLiteException e) {
65            fail("Threw SQLiteException instead of failing cleanly");
66        }
67    }
68}
69