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

Commit 28d4e514 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Refactored MediaInserterTest to use Mockito instead of EasyMock."

parents c8c44e73 a725f622
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ LOCAL_JAVA_LIBRARIES := android.test.runner

LOCAL_JAVA_LANGUAGE_VERSION := 1.8

LOCAL_STATIC_JAVA_LIBRARIES := easymocklib \
LOCAL_STATIC_JAVA_LIBRARIES := \
    mockito-target \
    android-support-test \
    android-ex-camera2
+45 −58
Original line number Diff line number Diff line
@@ -16,6 +16,14 @@

package com.android.mediaframeworktest.unit;

import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Matchers.argThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;

import android.content.ContentProviderClient;
import android.content.ContentValues;
import android.content.IContentProvider;
@@ -28,14 +36,16 @@ import android.provider.MediaStore.Video;
import android.test.InstrumentationTestCase;
import android.test.suitebuilder.annotation.SmallTest;

import org.easymock.EasyMock;
import org.easymock.IArgumentMatcher;
import org.hamcrest.Description;
import org.mockito.ArgumentMatcher;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

public class MediaInserterTest extends InstrumentationTestCase {

    private MediaInserter mMediaInserter;
    private static final int TEST_BUFFER_SIZE = 10;
    private IContentProvider mMockProvider;
    private @Mock IContentProvider mMockProvider;
    private String mPackageName;

    private int mFilesCounter;
@@ -49,8 +59,8 @@ public class MediaInserterTest extends InstrumentationTestCase {
    private static final Uri sImagesUri = Images.Media.getContentUri(sVolumeName);
    private static final Uri sFilesUri = Files.getContentUri(sVolumeName);

    private static class MediaUriMatcher implements IArgumentMatcher {
        private Uri mUri;
    private static class MediaUriMatcher extends ArgumentMatcher<Uri> {
        private final Uri mUri;

        private MediaUriMatcher(Uri uri) {
            mUri = uri;
@@ -63,25 +73,30 @@ public class MediaInserterTest extends InstrumentationTestCase {
            }

            Uri actualUri = (Uri) argument;
            if (actualUri == mUri) return true;
            if (actualUri == mUri)
                return true;
            return false;
        }

        @Override
        public void appendTo(StringBuffer buffer) {
            buffer.append("expected a TableUri '").append(mUri).append("'");
        public void describeTo(Description description) {
            description
                    .appendText("expected a TableUri '")
                    .appendText(mUri.toString())
                    .appendText("'");
        }

        private static Uri expectMediaUri(Uri in) {
            EasyMock.reportMatcher(new MediaUriMatcher(in));
            return null;
    }

    private static Uri eqUri(Uri in) {
        return argThat(new MediaUriMatcher(in));
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        mMockProvider = EasyMock.createMock(IContentProvider.class);
        MockitoAnnotations.initMocks(this);

        final ContentProviderClient client = new ContentProviderClient(
                getInstrumentation().getContext().getContentResolver(), mMockProvider, true);
        mMediaInserter = new MediaInserter(client, TEST_BUFFER_SIZE);
@@ -134,61 +149,46 @@ public class MediaInserterTest extends InstrumentationTestCase {

    @SmallTest
    public void testInsertContentsLessThanBufferSize() throws Exception {
        EasyMock.replay(mMockProvider);

        fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4);
        fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3);
        fillBuffer(sVideoUri, TEST_BUFFER_SIZE - 2);
        fillBuffer(sImagesUri, TEST_BUFFER_SIZE - 1);

        EasyMock.verify(mMockProvider);
        verify(mMockProvider, never()).bulkInsert(eq(mPackageName), any(), any());
    }

    @SmallTest
    public void testInsertContentsEqualToBufferSize() throws Exception {
        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
        EasyMock.expectLastCall().times(4);
        EasyMock.replay(mMockProvider);
        when(mMockProvider.bulkInsert(eq(mPackageName), any(), any())).thenReturn(1);

        fillBuffer(sFilesUri, TEST_BUFFER_SIZE);
        fillBuffer(sAudioUri, TEST_BUFFER_SIZE);
        fillBuffer(sVideoUri, TEST_BUFFER_SIZE);
        fillBuffer(sImagesUri, TEST_BUFFER_SIZE);

        EasyMock.verify(mMockProvider);
        verify(mMockProvider, times(4)).bulkInsert(eq(mPackageName), any(), any());
    }

    @SmallTest
    public void testInsertContentsMoreThanBufferSize() throws Exception {
        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
        EasyMock.expectLastCall().times(4);
        EasyMock.replay(mMockProvider);
        when(mMockProvider.bulkInsert(eq(mPackageName), any(), any())).thenReturn(1);

        fillBuffer(sFilesUri, TEST_BUFFER_SIZE + 1);
        fillBuffer(sAudioUri, TEST_BUFFER_SIZE + 2);
        fillBuffer(sVideoUri, TEST_BUFFER_SIZE + 3);
        fillBuffer(sImagesUri, TEST_BUFFER_SIZE + 4);

        EasyMock.verify(mMockProvider);
        verify(mMockProvider, times(4)).bulkInsert(eq(mPackageName), any(), any());
    }

    @SmallTest
    public void testFlushAllWithEmptyContents() throws Exception {
        EasyMock.replay(mMockProvider);

        mMediaInserter.flushAll();

        EasyMock.verify(mMockProvider);
    }

    @SmallTest
    public void testFlushAllWithSomeContents() throws Exception {
        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
        EasyMock.expectLastCall().times(4);
        EasyMock.replay(mMockProvider);
        when(mMockProvider.bulkInsert(eq(mPackageName), any(), any())).thenReturn(1);

        fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4);
        fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3);
@@ -196,15 +196,12 @@ public class MediaInserterTest extends InstrumentationTestCase {
        fillBuffer(sImagesUri, TEST_BUFFER_SIZE - 1);
        mMediaInserter.flushAll();

        EasyMock.verify(mMockProvider);
        verify(mMockProvider, times(4)).bulkInsert(eq(mPackageName), any(), any());
    }

    @SmallTest
    public void testInsertContentsAfterFlushAll() throws Exception {
        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
        EasyMock.expectLastCall().times(8);
        EasyMock.replay(mMockProvider);
        when(mMockProvider.bulkInsert(eq(mPackageName), any(), any())).thenReturn(1);

        fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4);
        fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3);
@@ -217,28 +214,15 @@ public class MediaInserterTest extends InstrumentationTestCase {
        fillBuffer(sVideoUri, TEST_BUFFER_SIZE + 3);
        fillBuffer(sImagesUri, TEST_BUFFER_SIZE + 4);

        EasyMock.verify(mMockProvider);
        verify(mMockProvider, times(8)).bulkInsert(eq(mPackageName), any(), any());
    }

    @SmallTest
    public void testInsertContentsWithDifferentSizePerContentType() throws Exception {
        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
        MediaUriMatcher.expectMediaUri(sFilesUri),
                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
        EasyMock.expectLastCall().times(1);
        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
        MediaUriMatcher.expectMediaUri(sAudioUri),
                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
        EasyMock.expectLastCall().times(2);
        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
        MediaUriMatcher.expectMediaUri(sVideoUri),
                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
        EasyMock.expectLastCall().times(3);
        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
        MediaUriMatcher.expectMediaUri(sImagesUri),
                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
        EasyMock.expectLastCall().times(4);
        EasyMock.replay(mMockProvider);
        when(mMockProvider.bulkInsert(eq(mPackageName), eqUri(sFilesUri), any())).thenReturn(1);
        when(mMockProvider.bulkInsert(eq(mPackageName), eqUri(sAudioUri), any())).thenReturn(1);
        when(mMockProvider.bulkInsert(eq(mPackageName), eqUri(sVideoUri), any())).thenReturn(1);
        when(mMockProvider.bulkInsert(eq(mPackageName), eqUri(sImagesUri), any())).thenReturn(1);

        for (int i = 0; i < TEST_BUFFER_SIZE; ++i) {
            fillBuffer(sFilesUri, 1);
@@ -247,6 +231,9 @@ public class MediaInserterTest extends InstrumentationTestCase {
            fillBuffer(sImagesUri, 4);
        }

        EasyMock.verify(mMockProvider);
        verify(mMockProvider, times(1)).bulkInsert(eq(mPackageName), eqUri(sFilesUri), any());
        verify(mMockProvider, times(2)).bulkInsert(eq(mPackageName), eqUri(sAudioUri), any());
        verify(mMockProvider, times(3)).bulkInsert(eq(mPackageName), eqUri(sVideoUri), any());
        verify(mMockProvider, times(4)).bulkInsert(eq(mPackageName), eqUri(sImagesUri), any());
    }
}