Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9711ad86 authored by Kihong Seong's avatar Kihong Seong
Browse files

Add FilterInfoTest and tests for BluetoothMapContent

Bug: 237467631
Test: Ran each test with atest
Change-Id: I1c386633eed4c0190652f65fdfcc678b2512a760
Merged-In: I1c386633eed4c0190652f65fdfcc678b2512a760
(cherry picked from commit e9472c47)
parent a8776d1b
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import com.android.bluetooth.map.BluetoothMapUtils.TYPE;
import com.android.bluetooth.map.BluetoothMapbMessageMime.MimePart;
import com.android.bluetooth.mapapi.BluetoothMapContract;
import com.android.bluetooth.mapapi.BluetoothMapContract.ConversationColumns;
import com.android.internal.annotations.VisibleForTesting;

import com.google.android.mms.pdu.CharacterSets;
import com.google.android.mms.pdu.PduHeaders;
@@ -145,7 +146,8 @@ public class BluetoothMapContent {

    private final Context mContext;
    private final ContentResolver mResolver;
    private final String mBaseUri;
    @VisibleForTesting
    final String mBaseUri;
    private final BluetoothMapAccountItem mAccount;
    /* The MasInstance reference is used to update persistent (over a connection) version counters*/
    private final BluetoothMapMasInstance mMasInstance;
@@ -252,7 +254,8 @@ public class BluetoothMapContent {
        MMS_SMS_THREAD_COL_RECIPIENT_IDS = projection.indexOf(Threads.RECIPIENT_IDS);
    }

    private class FilterInfo {
    @VisibleForTesting
    static class FilterInfo {
        public static final int TYPE_SMS = 0;
        public static final int TYPE_MMS = 1;
        public static final int TYPE_EMAIL = 2;
+24 −0
Original line number Diff line number Diff line
@@ -24,10 +24,12 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.provider.Telephony;

import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;

import com.android.bluetooth.BluetoothMethodProxy;
@@ -44,6 +46,12 @@ import org.mockito.Spy;
public class BluetoothMapContentTest {
    private static final String TEST_TEXT = "text";

    private Context mTargetContext;

    @Mock
    private BluetoothMapAccountItem mAccountItem;
    @Mock
    private BluetoothMapMasInstance mMasInstance;
    @Mock
    private ContentResolver mContentResolver;
    @Spy
@@ -51,6 +59,7 @@ public class BluetoothMapContentTest {

    @Before
    public void setUp() {
        mTargetContext = InstrumentationRegistry.getTargetContext();
        MockitoAnnotations.initMocks(this);
        BluetoothMethodProxy.setInstanceForTesting(mMapMethodProxy);
    }
@@ -60,6 +69,21 @@ public class BluetoothMapContentTest {
        BluetoothMethodProxy.setInstanceForTesting(null);
    }

    @Test
    public void constructor_withNonNullAccountItem() {
        BluetoothMapContent content = new BluetoothMapContent(mTargetContext, mAccountItem,
                mMasInstance);

        assertThat(content.mBaseUri).isNotNull();
    }

    @Test
    public void constructor_withNullAccountItem() {
        BluetoothMapContent content = new BluetoothMapContent(mTargetContext, null, mMasInstance);

        assertThat(content.mBaseUri).isNull();
    }

    @Test
    public void getTextPartsMms() {
        final long id = 1111;
+192 −0
Original line number Diff line number Diff line
/*
 * Copyright 2022 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.bluetooth.map;

import static com.google.common.truth.Truth.assertThat;

import android.database.MatrixCursor;
import android.provider.BaseColumns;
import android.provider.Telephony.Mms;
import android.provider.Telephony.Sms;

import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

import com.android.bluetooth.mapapi.BluetoothMapContract;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@SmallTest
@RunWith(AndroidJUnit4.class)
public class FilterInfoTest {
    private BluetoothMapContent.FilterInfo mFilterInfo;

    @Before
    public void setUp() {
        mFilterInfo = new BluetoothMapContent.FilterInfo();
    }

    @Test
    public void setMessageColumns() {
        MatrixCursor cursor = new MatrixCursor(new String[] {
                BluetoothMapContract.MessageColumns._ID,
                BluetoothMapContract.MessageColumns.DATE,
                BluetoothMapContract.MessageColumns.SUBJECT,
                BluetoothMapContract.MessageColumns.FOLDER_ID,
                BluetoothMapContract.MessageColumns.FLAG_READ,
                BluetoothMapContract.MessageColumns.MESSAGE_SIZE,
                BluetoothMapContract.MessageColumns.FROM_LIST,
                BluetoothMapContract.MessageColumns.TO_LIST,
                BluetoothMapContract.MessageColumns.FLAG_ATTACHMENT,
                BluetoothMapContract.MessageColumns.ATTACHMENT_SIZE,
                BluetoothMapContract.MessageColumns.FLAG_HIGH_PRIORITY,
                BluetoothMapContract.MessageColumns.FLAG_PROTECTED,
                BluetoothMapContract.MessageColumns.RECEPTION_STATE,
                BluetoothMapContract.MessageColumns.DEVILERY_STATE,
                BluetoothMapContract.MessageColumns.THREAD_ID});

        mFilterInfo.setMessageColumns(cursor);

        assertThat(mFilterInfo.mMessageColId).isEqualTo(0);
        assertThat(mFilterInfo.mMessageColDate).isEqualTo(1);
        assertThat(mFilterInfo.mMessageColSubject).isEqualTo(2);
        assertThat(mFilterInfo.mMessageColFolder).isEqualTo(3);
        assertThat(mFilterInfo.mMessageColRead).isEqualTo(4);
        assertThat(mFilterInfo.mMessageColSize).isEqualTo(5);
        assertThat(mFilterInfo.mMessageColFromAddress).isEqualTo(6);
        assertThat(mFilterInfo.mMessageColToAddress).isEqualTo(7);
        assertThat(mFilterInfo.mMessageColAttachment).isEqualTo(8);
        assertThat(mFilterInfo.mMessageColAttachmentSize).isEqualTo(9);
        assertThat(mFilterInfo.mMessageColPriority).isEqualTo(10);
        assertThat(mFilterInfo.mMessageColProtected).isEqualTo(11);
        assertThat(mFilterInfo.mMessageColReception).isEqualTo(12);
        assertThat(mFilterInfo.mMessageColDelivery).isEqualTo(13);
        assertThat(mFilterInfo.mMessageColThreadId).isEqualTo(14);
    }

    @Test
    public void setEmailMessageColumns() {
        MatrixCursor cursor = new MatrixCursor(
                new String[] {BluetoothMapContract.MessageColumns.CC_LIST,
                        BluetoothMapContract.MessageColumns.BCC_LIST,
                        BluetoothMapContract.MessageColumns.REPLY_TO_LIST});

        mFilterInfo.setEmailMessageColumns(cursor);

        assertThat(mFilterInfo.mMessageColCcAddress).isEqualTo(0);
        assertThat(mFilterInfo.mMessageColBccAddress).isEqualTo(1);
        assertThat(mFilterInfo.mMessageColReplyTo).isEqualTo(2);
    }

    @Test
    public void setImMessageColumns() {
        MatrixCursor cursor = new MatrixCursor(
                new String[] {BluetoothMapContract.MessageColumns.THREAD_NAME,
                        BluetoothMapContract.MessageColumns.ATTACHMENT_MINE_TYPES,
                        BluetoothMapContract.MessageColumns.BODY});

        mFilterInfo.setImMessageColumns(cursor);

        assertThat(mFilterInfo.mMessageColThreadName).isEqualTo(0);
        assertThat(mFilterInfo.mMessageColAttachmentMime).isEqualTo(1);
        assertThat(mFilterInfo.mMessageColBody).isEqualTo(2);
    }

    @Test
    public void setEmailImConvoColumns() {
        MatrixCursor cursor = new MatrixCursor(
                new String[] {BluetoothMapContract.ConversationColumns.THREAD_ID,
                        BluetoothMapContract.ConversationColumns.LAST_THREAD_ACTIVITY,
                        BluetoothMapContract.ConversationColumns.THREAD_NAME,
                        BluetoothMapContract.ConversationColumns.READ_STATUS,
                        BluetoothMapContract.ConversationColumns.VERSION_COUNTER,
                        BluetoothMapContract.ConversationColumns.SUMMARY});

        mFilterInfo.setEmailImConvoColumns(cursor);

        assertThat(mFilterInfo.mConvoColConvoId).isEqualTo(0);
        assertThat(mFilterInfo.mConvoColLastActivity).isEqualTo(1);
        assertThat(mFilterInfo.mConvoColName).isEqualTo(2);
        assertThat(mFilterInfo.mConvoColRead).isEqualTo(3);
        assertThat(mFilterInfo.mConvoColVersionCounter).isEqualTo(4);
        assertThat(mFilterInfo.mConvoColSummary).isEqualTo(5);
    }

    @Test
    public void setEmailImConvoContactColumns() {
        MatrixCursor cursor = new MatrixCursor(
                new String[] {BluetoothMapContract.ConvoContactColumns.X_BT_UID,
                        BluetoothMapContract.ConvoContactColumns.CHAT_STATE,
                        BluetoothMapContract.ConvoContactColumns.UCI,
                        BluetoothMapContract.ConvoContactColumns.NICKNAME,
                        BluetoothMapContract.ConvoContactColumns.LAST_ACTIVE,
                        BluetoothMapContract.ConvoContactColumns.NAME,
                        BluetoothMapContract.ConvoContactColumns.PRESENCE_STATE,
                        BluetoothMapContract.ConvoContactColumns.STATUS_TEXT,
                        BluetoothMapContract.ConvoContactColumns.PRIORITY});

        mFilterInfo.setEmailImConvoContactColumns(cursor);

        assertThat(mFilterInfo.mContactColBtUid).isEqualTo(0);
        assertThat(mFilterInfo.mContactColChatState).isEqualTo(1);
        assertThat(mFilterInfo.mContactColContactUci).isEqualTo(2);
        assertThat(mFilterInfo.mContactColNickname).isEqualTo(3);
        assertThat(mFilterInfo.mContactColLastActive).isEqualTo(4);
        assertThat(mFilterInfo.mContactColName).isEqualTo(5);
        assertThat(mFilterInfo.mContactColPresenceState).isEqualTo(6);
        assertThat(mFilterInfo.mContactColPresenceText).isEqualTo(7);
        assertThat(mFilterInfo.mContactColPriority).isEqualTo(8);
    }

    @Test
    public void setSmsColumns() {
        MatrixCursor cursor = new MatrixCursor(new String[]{BaseColumns._ID, Sms.TYPE, Sms.READ,
                Sms.BODY, Sms.ADDRESS, Sms.DATE, Sms.THREAD_ID});

        mFilterInfo.setSmsColumns(cursor);

        assertThat(mFilterInfo.mSmsColId).isEqualTo(0);
        assertThat(mFilterInfo.mSmsColFolder).isEqualTo(1);
        assertThat(mFilterInfo.mSmsColRead).isEqualTo(2);
        assertThat(mFilterInfo.mSmsColSubject).isEqualTo(3);
        assertThat(mFilterInfo.mSmsColAddress).isEqualTo(4);
        assertThat(mFilterInfo.mSmsColDate).isEqualTo(5);
        assertThat(mFilterInfo.mSmsColType).isEqualTo(1);
        assertThat(mFilterInfo.mSmsColThreadId).isEqualTo(6);
    }

    @Test
    public void setMmsColumns() {
        MatrixCursor cursor = new MatrixCursor(
                new String[] {BaseColumns._ID, Mms.MESSAGE_BOX, Mms.READ, Mms.MESSAGE_SIZE,
                        Mms.TEXT_ONLY, Mms.DATE, Mms.SUBJECT, Mms.THREAD_ID});

        mFilterInfo.setMmsColumns(cursor);

        assertThat(mFilterInfo.mMmsColId).isEqualTo(0);
        assertThat(mFilterInfo.mMmsColFolder).isEqualTo(1);
        assertThat(mFilterInfo.mMmsColRead).isEqualTo(2);
        assertThat(mFilterInfo.mMmsColAttachmentSize).isEqualTo(3);
        assertThat(mFilterInfo.mMmsColTextOnly).isEqualTo(4);
        assertThat(mFilterInfo.mMmsColSize).isEqualTo(3);
        assertThat(mFilterInfo.mMmsColDate).isEqualTo(5);
        assertThat(mFilterInfo.mMmsColSubject).isEqualTo(6);
        assertThat(mFilterInfo.mMmsColThreadId).isEqualTo(7);
    }
}