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
198e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.content.ContentValues;
208e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.content.IContentProvider;
218e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.media.MediaInserter;
228e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.net.Uri;
238e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.provider.MediaStore.Audio;
248e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.provider.MediaStore.Files;
258e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.provider.MediaStore.Images;
268e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.provider.MediaStore.Video;
278e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.test.InstrumentationTestCase;
288e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport android.test.suitebuilder.annotation.SmallTest;
298e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
308e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport dalvik.annotation.TestTargetClass;
318e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
328e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport org.easymock.EasyMock;
338e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangimport org.easymock.IArgumentMatcher;
348e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
358e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang@TestTargetClass(MediaInserter.class)
368e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kangpublic class MediaInserterTest extends InstrumentationTestCase {
378e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
388e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private MediaInserter mMediaInserter;
398e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final int TEST_BUFFER_SIZE = 10;
408e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private IContentProvider mMockProvider;
419139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn    private String mPackageName;
428e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
438e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private int mFilesCounter;
448e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private int mAudioCounter;
458e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private int mVideoCounter;
468e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private int mImagesCounter;
478e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
488e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final String sVolumeName = "external";
498e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final Uri sAudioUri = Audio.Media.getContentUri(sVolumeName);
508e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final Uri sVideoUri = Video.Media.getContentUri(sVolumeName);
518e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final Uri sImagesUri = Images.Media.getContentUri(sVolumeName);
528e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static final Uri sFilesUri = Files.getContentUri(sVolumeName);
538e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
548e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private static class MediaUriMatcher implements IArgumentMatcher {
558e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        private Uri mUri;
568e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
578e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        private MediaUriMatcher(Uri uri) {
588e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            mUri = uri;
598e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
608e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
618e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        @Override
628e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        public boolean matches(Object argument) {
638e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            if (!(argument instanceof Uri)) {
648e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                return false;
658e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            }
668e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
678e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            Uri actualUri = (Uri) argument;
688e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            if (actualUri == mUri) return true;
698e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            return false;
708e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
718e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
728e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        @Override
738e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        public void appendTo(StringBuffer buffer) {
748e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            buffer.append("expected a TableUri '").append(mUri).append("'");
758e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
768e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
778e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        private static Uri expectMediaUri(Uri in) {
788e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            EasyMock.reportMatcher(new MediaUriMatcher(in));
798e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            return null;
808e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
818e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
828e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
838e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @Override
848e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    protected void setUp() throws Exception {
858e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        super.setUp();
868e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mMockProvider = EasyMock.createMock(IContentProvider.class);
879139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        mMediaInserter = new MediaInserter(mMockProvider,
888a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock        mPackageName, TEST_BUFFER_SIZE);
898a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock        mPackageName = getInstrumentation().getContext().getPackageName();
908e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mFilesCounter = 0;
918e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mAudioCounter = 0;
928e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mVideoCounter = 0;
938e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mImagesCounter = 0;
948e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
958e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
968e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private ContentValues createFileContent() {
978e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        ContentValues values = new ContentValues();
988e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        values.put("_data", "/mnt/sdcard/file" + ++mFilesCounter);
998e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        return values;
1008e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1018e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1028e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private ContentValues createAudioContent() {
1038e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        ContentValues values = new ContentValues();
1048e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        values.put("_data", "/mnt/sdcard/audio" + ++mAudioCounter);
1058e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        return values;
1068e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1078e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1088e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private ContentValues createVideoContent() {
1098e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        ContentValues values = new ContentValues();
1108e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        values.put("_data", "/mnt/sdcard/video" + ++mVideoCounter);
1118e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        return values;
1128e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1138e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1148e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private ContentValues createImageContent() {
1158e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        ContentValues values = new ContentValues();
1168e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        values.put("_data", "/mnt/sdcard/image" + ++mImagesCounter);
1178e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        return values;
1188e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1198e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1208e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private ContentValues createContent(Uri uri) {
1218e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        if (uri == sFilesUri) return createFileContent();
1228e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        else if (uri == sAudioUri) return createAudioContent();
1238e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        else if (uri == sVideoUri) return createVideoContent();
1248e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        else if (uri == sImagesUri) return createImageContent();
1258e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        else throw new IllegalArgumentException("Unknown URL: " + uri.toString());
1268e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1278e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1288e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    private void fillBuffer(Uri uri, int numberOfFiles) throws Exception {
1298e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        ContentValues values;
1308e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        for (int i = 0; i < numberOfFiles; ++i) {
1318e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            values = createContent(uri);
1328e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            mMediaInserter.insert(uri, values);
1338e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
1348e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1358e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1368e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
1378e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testInsertContentsLessThanBufferSize() throws Exception {
1388e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
1398e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1408e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4);
1418e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3);
1428e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE - 2);
1438e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE - 1);
1448e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1458e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
1468e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1478e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1488e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
1498e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testInsertContentsEqualToBufferSize() throws Exception {
1509139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
1518e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
1528e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(4);
1538e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
1548e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1558e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE);
1568e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE);
1578e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE);
1588e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE);
1598e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1608e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
1618e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1628e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1638e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
1648e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testInsertContentsMoreThanBufferSize() throws Exception {
1659139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
1668e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
1678e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(4);
1688e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
1698e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1708e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE + 1);
1718e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE + 2);
1728e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE + 3);
1738e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE + 4);
1748e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1758e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
1768e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1778e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1788e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
1798e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testFlushAllWithEmptyContents() throws Exception {
1808e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
1818e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1828e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mMediaInserter.flushAll();
1838e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1848e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
1858e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
1868e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1878e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
1888e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testFlushAllWithSomeContents() throws Exception {
1899139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
1908e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
1918e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(4);
1928e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
1938e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
1948e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4);
1958e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3);
1968e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE - 2);
1978e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE - 1);
1988e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mMediaInserter.flushAll();
1998e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2008e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
2018e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
2028e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2038e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
2048e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testInsertContentsAfterFlushAll() throws Exception {
2059139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
2068e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (Uri) EasyMock.anyObject(), (ContentValues[]) EasyMock.anyObject())).andReturn(1);
2078e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(8);
2088e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
2098e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2108e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE - 4);
2118e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE - 3);
2128e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE - 2);
2138e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE - 1);
2148e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        mMediaInserter.flushAll();
2158e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2168e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sFilesUri, TEST_BUFFER_SIZE + 1);
2178e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sAudioUri, TEST_BUFFER_SIZE + 2);
2188e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sVideoUri, TEST_BUFFER_SIZE + 3);
2198e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        fillBuffer(sImagesUri, TEST_BUFFER_SIZE + 4);
2208e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2218e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
2228e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
2238e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2248e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    @SmallTest
2258e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    public void testInsertContentsWithDifferentSizePerContentType() throws Exception {
2269139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
2278a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock        MediaUriMatcher.expectMediaUri(sFilesUri),
2288e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
2298e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(1);
2309139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
2318a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock        MediaUriMatcher.expectMediaUri(sAudioUri),
2328e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
2338e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(2);
2349139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
2358a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock        MediaUriMatcher.expectMediaUri(sVideoUri),
2368e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
2378e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(3);
2389139625aaed3b553eb7a336a2a340b19056057a1Dianne Hackborn        EasyMock.expect(mMockProvider.bulkInsert(mPackageName,
2398a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock        MediaUriMatcher.expectMediaUri(sImagesUri),
2408e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang                (ContentValues[]) EasyMock.anyObject())).andReturn(1);
2418e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.expectLastCall().times(4);
2428e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.replay(mMockProvider);
2438e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2448e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        for (int i = 0; i < TEST_BUFFER_SIZE; ++i) {
2458e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            fillBuffer(sFilesUri, 1);
2468e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            fillBuffer(sAudioUri, 2);
2478e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            fillBuffer(sVideoUri, 3);
2488e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang            fillBuffer(sImagesUri, 4);
2498e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        }
2508e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang
2518e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang        EasyMock.verify(mMockProvider);
2528e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang    }
2538e2ed8d512ade2ea481b3a292556782b17a74674Dongwon Kang}
254