18e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang/*
28e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang * Copyright (C) 2011 The Android Open Source Project
38e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang *
48e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang * Licensed under the Apache License, Version 2.0 (the "License");
58e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang * you may not use this file except in compliance with the License.
68e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang * You may obtain a copy of the License at
78e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang *
88e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang *      http://www.apache.org/licenses/LICENSE-2.0
98e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang *
108e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang * Unless required by applicable law or agreed to in writing, software
118e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang * distributed under the License is distributed on an "AS IS" BASIS,
128e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang * See the License for the specific language governing permissions and
148e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang * limitations under the License.
158e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang */
168e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
178e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangpackage com.android.mediaframeworktest.unit;
188e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1960cfad80bdf61db436643927337c2fb30186e99dJeff Sharkeyimport android.content.ContentProviderClient;
208e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.content.ContentValues;
218e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.content.IContentProvider;
228e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.media.MediaInserter;
238e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.net.Uri;
248e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.provider.MediaStore.Audio;
258e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.provider.MediaStore.Files;
268e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.provider.MediaStore.Images;
278e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.provider.MediaStore.Video;
288e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.test.InstrumentationTestCase;
298e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.test.suitebuilder.annotation.SmallTest;
308e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
318e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport org.easymock.EasyMock;
328e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport org.easymock.IArgumentMatcher;
338e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
348e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangpublic class MediaInserterTest extends InstrumentationTestCase {
358e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
368e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private MediaInserter mMediaInserter;
378e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final int TEST_BUFFER_SIZE = 10;
388e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private IContentProvider mMockProvider;
399139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn    private String mPackageName;
408e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
418e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private int mFilesCounter;
428e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private int mAudioCounter;
438e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private int mVideoCounter;
448e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private int mImagesCounter;
458e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
468e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final String sVolumeName = "external";
478e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final Uri sAudioUri = Audio.Media.getContentUri(sVolumeName);
488e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final Uri sVideoUri = Video.Media.getContentUri(sVolumeName);
498e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final Uri sImagesUri = Images.Media.getContentUri(sVolumeName);
508e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final Uri sFilesUri = Files.getContentUri(sVolumeName);
518e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
528e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static class MediaUriMatcher implements IArgumentMatcher {
538e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        private Uri mUri;
548e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
558e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        private MediaUriMatcher(Uri uri) {
568e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            mUri = uri;
578e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
588e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
598e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        @Override
608e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        public boolean matches(Object argument) {
618e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            if (!(argument instanceof Uri)) {
628e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                return false;
638e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            }
648e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
658e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            Uri actualUri = (Uri) argument;
668e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            if (actualUri == mUri) return true;
678e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            return false;
688e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
698e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
708e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        @Override
718e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        public void appendTo(StringBuffer buffer) {
728e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            buffer.append("expected a TableUri '").append(mUri).append("'");
738e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
748e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
758e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        private static Uri expectMediaUri(Uri in) {
768e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            EasyMock.reportMatcher(new MediaUriMatcher(in));
778e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            return null;
788e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
798e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
808e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
818e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @Override
828e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    protected void setUp() throws Exception {
838e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        super.setUp();
848e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mMockProvider = EasyMock.createMock(IContentProvider.class);
8560cfad80bdf61db436643927337c2fb30186e99dJeff Sharkey        final ContentProviderClient client = new ContentProviderClient(
8660cfad80bdf61db436643927337c2fb30186e99dJeff Sharkey                getInstrumentation().getContext().getContentResolver(), mMockProvider, true);
8760cfad80bdf61db436643927337c2fb30186e99dJeff Sharkey        mMediaInserter = new MediaInserter(client, TEST_BUFFER_SIZE);
888a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock        mPackageName = getInstrumentation().getContext().getPackageName();
898e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mFilesCounter = 0;
908e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mAudioCounter = 0;
918e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mVideoCounter = 0;
928e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mImagesCounter = 0;
938e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
948e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
958e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private ContentValues createFileContent() {
968e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        ContentValues values = new ContentValues();
978e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        values.put("_data", "/mnt/sdcard/file" + ++mFilesCounter);
988e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        return values;
998e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1008e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1018e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private ContentValues createAudioContent() {
1028e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        ContentValues values = new ContentValues();
1038e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        values.put("_data", "/mnt/sdcard/audio" + ++mAudioCounter);
1048e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        return values;
1058e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1068e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1078e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private ContentValues createVideoContent() {
1088e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        ContentValues values = new ContentValues();
1098e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        values.put("_data", "/mnt/sdcard/video" + ++mVideoCounter);
1108e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        return values;
1118e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1128e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1138e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private ContentValues createImageContent() {
1148e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        ContentValues values = new ContentValues();
1158e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        values.put("_data", "/mnt/sdcard/image" + ++mImagesCounter);
1168e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        return values;
1178e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1188e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1198e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private ContentValues createContent(Uri uri) {
1208e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        if (uri == sFilesUri) return createFileContent();
1218e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        else if (uri == sAudioUri) return createAudioContent();
1228e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        else if (uri == sVideoUri) return createVideoContent();
1238e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        else if (uri == sImagesUri) return createImageContent();
1248e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        else throw new IllegalArgumentException("Unknown URL: " + uri.toString());
1258e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1268e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1278e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private void fillBuffer(Uri uri, int numberOfFiles) throws Exception {
1288e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        ContentValues values;
1298e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        for (int i = 0; i < numberOfFiles; ++i) {
1308e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            values = createContent(uri);
1318e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            mMediaInserter.insert(uri, values);
1328e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
1338e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1348e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1358e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
1368e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testInsertContentsLessThanBufferSize() throws Exception {
1378e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
1388e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1398e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4);
1408e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3);
1418e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE - 2);
1428e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE - 1);
1438e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1448e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
1458e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1468e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1478e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
1488e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testInsertContentsEqualToBufferSize() throws Exception {
1499139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
1508e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
1518e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(4);
1528e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
1538e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1548e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE);
1558e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE);
1568e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE);
1578e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE);
1588e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1598e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
1608e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1618e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1628e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
1638e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testInsertContentsMoreThanBufferSize() throws Exception {
1649139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
1658e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
1668e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(4);
1678e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
1688e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1698e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE + 1);
1708e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE + 2);
1718e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE + 3);
1728e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE + 4);
1738e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1748e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
1758e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1768e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1778e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
1788e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testFlushAllWithEmptyContents() throws Exception {
1798e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
1808e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1818e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mMediaInserter.flushAll();
1828e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1838e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
1848e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1858e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1868e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
1878e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testFlushAllWithSomeContents() throws Exception {
1889139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
1898e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
1908e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(4);
1918e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
1928e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1938e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4);
1948e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3);
1958e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE - 2);
1968e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE - 1);
1978e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mMediaInserter.flushAll();
1988e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1998e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
2008e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
2018e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2028e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
2038e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testInsertContentsAfterFlushAll() throws Exception {
2049139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
2058e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
2068e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(8);
2078e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
2088e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2098e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4);
2108e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3);
2118e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE - 2);
2128e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE - 1);
2138e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mMediaInserter.flushAll();
2148e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2158e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE + 1);
2168e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE + 2);
2178e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE + 3);
2188e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE + 4);
2198e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2208e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
2218e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
2228e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2238e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
2248e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testInsertContentsWithDifferentSizePerContentType() throws Exception {
2259139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
2268a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock        MediaUriMatcher.expectMediaUri(sFilesUri),
2278e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
2288e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(1);
2299139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
2308a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock        MediaUriMatcher.expectMediaUri(sAudioUri),
2318e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
2328e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(2);
2339139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
2348a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock        MediaUriMatcher.expectMediaUri(sVideoUri),
2358e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
2368e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(3);
2379139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
2388a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock        MediaUriMatcher.expectMediaUri(sImagesUri),
2398e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
2408e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(4);
2418e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
2428e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2438e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        for (int i = 0; i < TEST_BUFFER_SIZE; ++i) {
2448e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            fillBuffer(sFilesUri, 1);
2458e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            fillBuffer(sAudioUri, 2);
2468e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            fillBuffer(sVideoUri, 3);
2478e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            fillBuffer(sImagesUri, 4);
2488e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
2498e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2508e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
2518e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
2528e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang}
253