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