blob: 7ce325423978db699a682d1882bb56849400b6ea [file] [log] [blame]
package com.android.mtp;
import android.database.Cursor;
import android.mtp.MtpConstants;
import android.mtp.MtpObjectInfo;
import android.provider.DocumentsContract;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
@SmallTest
public class MtpDatabaseTest extends AndroidTestCase {
private final String[] COLUMN_NAMES = new String[] {
DocumentsContract.Document.COLUMN_DOCUMENT_ID,
MtpDatabase.COLUMN_DEVICE_ID,
MtpDatabase.COLUMN_STORAGE_ID,
MtpDatabase.COLUMN_OBJECT_HANDLE,
MtpDatabase.COLUMN_FULL_PATH,
DocumentsContract.Document.COLUMN_MIME_TYPE,
DocumentsContract.Document.COLUMN_DISPLAY_NAME,
DocumentsContract.Document.COLUMN_SUMMARY,
DocumentsContract.Document.COLUMN_LAST_MODIFIED,
DocumentsContract.Document.COLUMN_ICON,
DocumentsContract.Document.COLUMN_FLAGS,
DocumentsContract.Document.COLUMN_SIZE
};
@Override
public void tearDown() {
MtpDatabase.deleteDatabase(getContext());
}
public void testPutRootDocument() throws Exception {
final MtpDatabase database = new MtpDatabase(getContext());
final MtpRoot root = new MtpRoot(
0,
1,
"Device A",
"Storage",
1000,
2000,
"");
database.putRootDocument(root);
final MtpRoot duplicatedNameRoot = new MtpRoot(
0,
2,
"Device A",
"Storage",
1000,
2000,
"");
database.putRootDocument(duplicatedNameRoot);
final MtpRoot strangeNameRoot = new MtpRoot(
0,
3,
"Device A",
"/@#%&<>Storage",
1000,
2000,
"");
database.putRootDocument(strangeNameRoot);
final Cursor cursor = database.queryChildDocuments(COLUMN_NAMES);
assertEquals(3, cursor.getCount());
cursor.moveToNext();
assertEquals("documentId", 1, cursor.getInt(0));
assertEquals("deviceId", 0, cursor.getInt(1));
assertEquals("storageId", 1, cursor.getInt(2));
assertTrue("objectHandle", cursor.isNull(3));
assertEquals("fullPath", "/0/Storage", cursor.getString(4));
assertEquals("mimeType", DocumentsContract.Document.MIME_TYPE_DIR, cursor.getString(5));
assertEquals("displayName", "Storage", cursor.getString(6));
assertTrue("summary", cursor.isNull(7));
assertTrue("lastModified", cursor.isNull(8));
assertTrue("icon", cursor.isNull(9));
assertEquals("flag", 0, cursor.getInt(10));
assertEquals("size", 1000, cursor.getInt(11));
cursor.moveToNext();
assertEquals("documentId", 2, cursor.getInt(0));
assertEquals("fullPath", "/0/Storage", cursor.getString(4));
cursor.moveToNext();
assertEquals("documentId", 3, cursor.getInt(0));
assertEquals("fullPath", "/0/%2F%40%23%25%26%3C%3EStorage", cursor.getString(4));
}
public void testPutDocument() throws Exception {
final MtpDatabase database = new MtpDatabase(getContext());
final MtpObjectInfo.Builder builder = new MtpObjectInfo.Builder();
builder.setObjectHandle(100);
builder.setName("test.txt");
builder.setStorageId(5);
builder.setFormat(MtpConstants.FORMAT_TEXT);
builder.setCompressedSize(1000);
database.putDocument(0, "/0/Storage", builder.build());
final Cursor cursor = database.queryChildDocuments(COLUMN_NAMES);
assertEquals(1, cursor.getCount());
cursor.moveToNext();
assertEquals("documentId", 1, cursor.getInt(0));
assertEquals("deviceId", 0, cursor.getInt(1));
assertEquals("storageId", 5, cursor.getInt(2));
assertEquals("objectHandle", 100, cursor.getInt(3));
assertEquals("fullPath", "/0/Storage/test.txt", cursor.getString(4));
assertEquals("mimeType", "text/plain", cursor.getString(5));
assertEquals("displayName", "test.txt", cursor.getString(6));
assertTrue("summary", cursor.isNull(7));
assertTrue("lastModified", cursor.isNull(8));
assertTrue("icon", cursor.isNull(9));
assertEquals(
"flag",
DocumentsContract.Document.FLAG_SUPPORTS_DELETE |
DocumentsContract.Document.FLAG_SUPPORTS_WRITE,
cursor.getInt(10));
assertEquals("size", 1000, cursor.getInt(11));
}
}