summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ben Kwa <kenobi@google.com> 2015-09-30 14:14:16 -0700
committer Ben Kwa <kenobi@google.com> 2015-09-30 15:12:52 -0700
commit272c02041ce9e63f14a1db7bb5a3b9c7944c0198 (patch)
treed11df9b79cbd068d89ee84923221503c7a0ba256
parent94b486d32c10d5ffbd8627977ca4759c246ecf4b (diff)
Consolidate unit tests.
- Move all unit tests to be run under the android framework. - Add a unit test for ag/776629 - Make DirectoryFragment.Model tests properly simulate finalization conditions. Change-Id: Ie33d097154d464149fd8c0c24bf66ada677db4ad
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java30
-rw-r--r--packages/DocumentsUI/tests/src/com/android/documentsui/DirectoryFragmentModelTest.java37
-rw-r--r--packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManagerTest.java77
-rw-r--r--packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManager_GridModelTest.java17
-rw-r--r--packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManager_SelectionTest.java56
-rw-r--r--packages/DocumentsUI/tests/src/com/android/documentsui/UnitTests.java46
6 files changed, 107 insertions, 156 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
index 2893cd2b8b96..3c6be6e47b11 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
@@ -820,9 +820,9 @@ public class DirectoryFragment extends Fragment {
mModel.undoDeletion();
} else {
mModel.finalizeDeletion(
- new Runnable() {
+ new Model.DeletionListener() {
@Override
- public void run() {
+ public void onError() {
Shared.makeSnackbar(
activity,
R.string.toast_failed_delete,
@@ -1865,9 +1865,9 @@ public class DirectoryFragment extends Fragment {
* @param view The view which will be used to interact with the user (e.g. surfacing
* snackbars) for errors, info, etc.
*/
- void finalizeDeletion(Runnable errorCallback) {
+ void finalizeDeletion(DeletionListener listener) {
final ContentResolver resolver = mContext.getContentResolver();
- DeleteFilesTask task = new DeleteFilesTask(resolver, errorCallback);
+ DeleteFilesTask task = new DeleteFilesTask(resolver, listener);
task.execute();
}
@@ -1877,16 +1877,16 @@ public class DirectoryFragment extends Fragment {
*/
private class DeleteFilesTask extends AsyncTask<Void, Void, List<DocumentInfo>> {
private ContentResolver mResolver;
- private Runnable mErrorCallback;
+ private DeletionListener mListener;
/**
* @param resolver A ContentResolver for performing the actual file deletions.
* @param errorCallback A Runnable that is executed in the event that one or more errors
* occured while copying files. Execution will occur on the UI thread.
*/
- public DeleteFilesTask(ContentResolver resolver, Runnable errorCallback) {
+ public DeleteFilesTask(ContentResolver resolver, DeletionListener listener) {
mResolver = resolver;
- mErrorCallback = errorCallback;
+ mListener = listener;
}
@Override
@@ -1920,15 +1920,29 @@ public class DirectoryFragment extends Fragment {
if (hadTrouble) {
// TODO show which files failed? b/23720103
- mErrorCallback.run();
+ mListener.onError();
if (DEBUG) Log.d(TAG, "Deletion task completed. Some deletions failed.");
} else {
if (DEBUG) Log.d(TAG, "Deletion task completed successfully.");
}
mMarkedForDeletion.clear();
+
+ mListener.onCompletion();
}
}
+ static class DeletionListener {
+ /**
+ * Called when deletion has completed (regardless of whether an error occurred).
+ */
+ void onCompletion() {}
+
+ /**
+ * Called at the end of a deletion operation that produced one or more errors.
+ */
+ void onError() {}
+ }
+
void addUpdateListener(UpdateListener listener) {
checkState(mUpdateListener == null);
mUpdateListener = listener;
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/DirectoryFragmentModelTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/DirectoryFragmentModelTest.java
index 1895a6e66450..98ffb77c4cd6 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/DirectoryFragmentModelTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/DirectoryFragmentModelTest.java
@@ -34,6 +34,9 @@ import com.android.documentsui.MultiSelectManager.Selection;
import com.android.documentsui.model.DocumentInfo;
import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
public class DirectoryFragmentModelTest extends AndroidTestCase {
@@ -77,14 +80,6 @@ public class DirectoryFragmentModelTest extends AndroidTestCase {
delete(2, 4);
assertEquals(ITEM_COUNT - 2, model.getItemCount());
-
- // Finalize the deletion. Provide a callback that just ignores errors.
- model.finalizeDeletion(
- new Runnable() {
- @Override
- public void run() {}
- });
- assertEquals(ITEM_COUNT - 2, model.getItemCount());
}
// Tests that the item count is correct after a deletion is undone.
@@ -95,7 +90,6 @@ public class DirectoryFragmentModelTest extends AndroidTestCase {
// Undo the deletion
model.undoDeletion();
assertEquals(ITEM_COUNT, model.getItemCount());
-
}
// Tests that the right things are marked for deletion.
@@ -125,6 +119,15 @@ public class DirectoryFragmentModelTest extends AndroidTestCase {
assertEquals("0", docs.get(0).documentId);
assertEquals("1", docs.get(1).documentId);
assertEquals("4", docs.get(2).documentId);
+
+ TestDeletionListener testListener = new TestDeletionListener();
+ model.finalizeDeletion(testListener);
+ testListener.waitForDone();
+
+ docs = getDocumentInfo(0, 1, 2);
+ assertEquals("0", docs.get(0).documentId);
+ assertEquals("1", docs.get(1).documentId);
+ assertEquals("2", docs.get(2).documentId);
}
// Tests that Model.getItem returns the right items after a deletion is undone.
@@ -176,4 +179,20 @@ public class DirectoryFragmentModelTest extends AndroidTestCase {
return null;
}
}
+
+ private static class TestDeletionListener extends Model.DeletionListener {
+ final CountDownLatch mSignal = new CountDownLatch(1);
+
+ @Override
+ public void onCompletion() {
+ mSignal.countDown();
+ }
+
+ public void waitForDone() {
+ try {
+ boolean timeout = mSignal.await(10, TimeUnit.SECONDS);
+ assertTrue("Timed out waiting for deletion completion", timeout);
+ } catch (InterruptedException e) {}
+ }
+ }
}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManagerTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManagerTest.java
index 25d4ed4183f0..2447469f9c64 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManagerTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManagerTest.java
@@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.support.v7.widget.RecyclerView;
+import android.test.AndroidTestCase;
import android.util.SparseBooleanArray;
import android.view.MotionEvent;
import android.view.View;
@@ -27,8 +28,6 @@ import android.view.ViewGroup;
import com.android.documentsui.MultiSelectManager.Selection;
-import org.junit.Before;
-import org.junit.Test;
import org.mockito.Mockito;
import java.util.ArrayList;
@@ -36,7 +35,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
-public class MultiSelectManagerTest {
+public class MultiSelectManagerTest extends AndroidTestCase {
private static final List<String> items;
static {
@@ -54,7 +53,6 @@ public class MultiSelectManagerTest {
private TestCallback mCallback;
private EventHelper mEventHelper;
- @Before
public void setUp() throws Exception {
mAdapter = new TestAdapter(items);
mCallback = new TestCallback();
@@ -63,65 +61,61 @@ public class MultiSelectManagerTest {
mManager.addCallback(mCallback);
}
- @Test
- public void mouseClick_StartsSelectionMode() {
+ public void testMouseClick_StartsSelectionMode() {
click(7);
assertSelection(7);
}
- @Test
- public void mouseClick_ShiftClickExtendsSelection() {
+ public void testMouseClick_NotifiesSelectionChanged() {
+ click(7);
+ mCallback.assertSelectionChanged();
+ }
+
+ public void testMouseClick_ShiftClickExtendsSelection() {
longPress(7);
shiftClick(11);
assertRangeSelection(7, 11);
}
- @Test
- public void mouseClick_NoPosition_ClearsSelection() {
+ public void testMouseClick_NoPosition_ClearsSelection() {
longPress(7);
click(11);
click(RecyclerView.NO_POSITION);
assertSelection();
}
- @Test
- public void setSelectionFocusBegin() {
+ public void testSetSelectionFocusBegin() {
mManager.setItemSelected(7, true);
mManager.setSelectionFocusBegin(7);
shiftClick(11);
assertRangeSelection(7, 11);
}
- @Test
- public void longPress_StartsSelectionMode() {
+ public void testLongPress_StartsSelectionMode() {
longPress(7);
assertSelection(7);
}
- @Test
- public void longPress_SecondPressExtendsSelection() {
+ public void testLongPress_SecondPressExtendsSelection() {
longPress(7);
longPress(99);
assertSelection(7, 99);
}
- @Test
- public void singleTapUp_UnselectsSelectedItem() {
+ public void testSingleTapUp_UnselectsSelectedItem() {
longPress(7);
tap(7);
assertSelection();
}
- @Test
- public void singleTapUp_NoPosition_ClearsSelection() {
+ public void testSingleTapUp_NoPosition_ClearsSelection() {
longPress(7);
tap(11);
tap(RecyclerView.NO_POSITION);
assertSelection();
}
- @Test
- public void singleTapUp_ExtendsSelection() {
+ public void testSingleTapUp_ExtendsSelection() {
longPress(99);
tap(7);
tap(13);
@@ -129,30 +123,26 @@ public class MultiSelectManagerTest {
assertSelection(7, 99, 13, 129899);
}
- @Test
- public void singleTapUp_ShiftCreatesRangeSelection() {
+ public void testSingleTapUp_ShiftCreatesRangeSelection() {
longPress(7);
shiftTap(17);
assertRangeSelection(7, 17);
}
- @Test
- public void singleTapUp_ShiftCreatesRangeSeletion_Backwards() {
+ public void testSingleTapUp_ShiftCreatesRangeSeletion_Backwards() {
longPress(17);
shiftTap(7);
assertRangeSelection(7, 17);
}
- @Test
- public void singleTapUp_SecondShiftClickExtendsSelection() {
+ public void testSingleTapUp_SecondShiftClickExtendsSelection() {
longPress(7);
shiftTap(11);
shiftTap(17);
assertRangeSelection(7, 17);
}
- @Test
- public void singleTapUp_MultipleContiguousRangesSelected() {
+ public void testSingleTapUp_MultipleContiguousRangesSelected() {
longPress(7);
shiftTap(11);
tap(20);
@@ -162,16 +152,14 @@ public class MultiSelectManagerTest {
assertSelectionSize(11);
}
- @Test
- public void singleTapUp_ShiftReducesSelectionRange_FromPreviousShiftClick() {
+ public void testSingleTapUp_ShiftReducesSelectionRange_FromPreviousShiftClick() {
longPress(7);
shiftTap(17);
shiftTap(10);
assertRangeSelection(7, 10);
}
- @Test
- public void singleTapUp_ShiftReducesSelectionRange_FromPreviousShiftClick_Backwards() {
+ public void testSingleTapUp_ShiftReducesSelectionRange_FromPreviousShiftClick_Backwards() {
mManager.onLongPress(TestInputEvent.tap(17));
shiftTap(7);
shiftTap(14);
@@ -179,16 +167,14 @@ public class MultiSelectManagerTest {
}
- @Test
- public void singleTapUp_ShiftReversesSelectionDirection() {
+ public void testSingleTapUp_ShiftReversesSelectionDirection() {
longPress(7);
shiftTap(17);
shiftTap(0);
assertRangeSelection(0, 7);
}
- @Test
- public void singleSelectMode() {
+ public void testSingleSelectMode() {
mManager = new MultiSelectManager(mAdapter, mEventHelper, MultiSelectManager.MODE_SINGLE);
mManager.addCallback(mCallback);
longPress(20);
@@ -196,8 +182,7 @@ public class MultiSelectManagerTest {
assertSelection(13);
}
- @Test
- public void singleSelectMode_ShiftTap() {
+ public void testSingleSelectMode_ShiftTap() {
mManager = new MultiSelectManager(mAdapter, mEventHelper, MultiSelectManager.MODE_SINGLE);
mManager.addCallback(mCallback);
longPress(13);
@@ -205,8 +190,7 @@ public class MultiSelectManagerTest {
assertSelection(20);
}
- @Test
- public void provisionaSelection() {
+ public void testProvisionalSelection() {
Selection s = mManager.getSelection();
assertSelection();
@@ -298,6 +282,7 @@ public class MultiSelectManagerTest {
Set<Integer> ignored = new HashSet<>();
private int mLastChangedPosition;
private boolean mLastChangedSelected;
+ private boolean mSelectionChanged = false;
@Override
public void onItemStateChanged(int position, boolean selected) {
@@ -311,7 +296,13 @@ public class MultiSelectManagerTest {
}
@Override
- public void onSelectionChanged() {}
+ public void onSelectionChanged() {
+ mSelectionChanged = true;
+ }
+
+ void assertSelectionChanged() {
+ assertTrue(mSelectionChanged);
+ }
}
private static final class TestHolder extends RecyclerView.ViewHolder {
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManager_GridModelTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManager_GridModelTest.java
index 87d7e15a4072..aa50b48e6c16 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManager_GridModelTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManager_GridModelTest.java
@@ -22,14 +22,12 @@ import static org.junit.Assert.assertTrue;
import android.graphics.Point;
import android.graphics.Rect;
import android.support.v7.widget.RecyclerView.OnScrollListener;
+import android.test.AndroidTestCase;
import android.util.SparseBooleanArray;
import com.android.documentsui.MultiSelectManager.GridModel;
-import org.junit.After;
-import org.junit.Test;
-
-public class MultiSelectManager_GridModelTest {
+public class MultiSelectManager_GridModelTest extends AndroidTestCase {
private static final int VIEW_PADDING_PX = 5;
private static final int CHILD_VIEW_EDGE_PX = 100;
@@ -53,14 +51,13 @@ public class MultiSelectManager_GridModelTest {
});
}
- @After
+ @Override
public void tearDown() {
model = null;
helper = null;
lastSelection = null;
}
- @Test
public void testSelectionLeftOfItems() {
setUp(20, 5);
model.startSelection(new Point(0, 10));
@@ -69,7 +66,6 @@ public class MultiSelectManager_GridModelTest {
assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
}
- @Test
public void testSelectionRightOfItems() {
setUp(20, 4);
model.startSelection(new Point(viewWidth - 1, 10));
@@ -78,7 +74,6 @@ public class MultiSelectManager_GridModelTest {
assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
}
- @Test
public void testSelectionAboveItems() {
setUp(20, 4);
model.startSelection(new Point(10, 0));
@@ -87,7 +82,6 @@ public class MultiSelectManager_GridModelTest {
assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
}
- @Test
public void testSelectionBelowItems() {
setUp(5, 4);
model.startSelection(new Point(10, VIEWPORT_HEIGHT - 1));
@@ -96,7 +90,6 @@ public class MultiSelectManager_GridModelTest {
assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
}
- @Test
public void testVerticalSelectionBetweenItems() {
setUp(20, 4);
model.startSelection(new Point(106, 0));
@@ -105,7 +98,6 @@ public class MultiSelectManager_GridModelTest {
assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
}
- @Test
public void testHorizontalSelectionBetweenItems() {
setUp(20, 4);
model.startSelection(new Point(0, 105));
@@ -114,7 +106,6 @@ public class MultiSelectManager_GridModelTest {
assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
}
- @Test
public void testGrowingAndShrinkingSelection() {
setUp(20, 4);
model.startSelection(new Point(0, 0));
@@ -145,7 +136,6 @@ public class MultiSelectManager_GridModelTest {
assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
}
- @Test
public void testSelectionMovingAroundOrigin() {
setUp(16, 4);
model.startSelection(new Point(210, 210));
@@ -160,7 +150,6 @@ public class MultiSelectManager_GridModelTest {
assertEquals(10, model.getPositionNearestOrigin());
}
- @Test
public void testScrollingBandSelect() {
setUp(40, 4);
model.startSelection(new Point(0, 0));
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManager_SelectionTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManager_SelectionTest.java
index 51b542b2ae8c..eddf4ef6fede 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManager_SelectionTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/MultiSelectManager_SelectionTest.java
@@ -18,16 +18,16 @@ package com.android.documentsui;
import static org.junit.Assert.*;
+import android.test.AndroidTestCase;
+
import com.android.documentsui.MultiSelectManager.Selection;
-import org.junit.Before;
-import org.junit.Test;
-public class MultiSelectManager_SelectionTest {
+public class MultiSelectManager_SelectionTest extends AndroidTestCase{
private Selection selection;
- @Before
+ @Override
public void setUp() throws Exception {
selection = new Selection();
selection.add(3);
@@ -35,8 +35,7 @@ public class MultiSelectManager_SelectionTest {
selection.add(9);
}
- @Test
- public void add() {
+ public void testAdd() {
// We added in setUp.
assertEquals(3, selection.size());
assertContains(3);
@@ -44,29 +43,25 @@ public class MultiSelectManager_SelectionTest {
assertContains(9);
}
- @Test
- public void remove() {
+ public void testRemove() {
selection.remove(3);
selection.remove(5);
assertEquals(1, selection.size());
assertContains(9);
}
- @Test
- public void clear() {
+ public void testClear() {
selection.clear();
assertEquals(0, selection.size());
}
- @Test
- public void isEmpty() {
+ public void testIsEmpty() {
assertTrue(new Selection().isEmpty());
selection.clear();
assertTrue(selection.isEmpty());
}
- @Test
- public void sizeAndGet() {
+ public void testSizeAndGet() {
Selection other = new Selection();
for (int i = 0; i < selection.size(); i++) {
other.add(selection.get(i));
@@ -74,13 +69,11 @@ public class MultiSelectManager_SelectionTest {
assertEquals(selection.size(), other.size());
}
- @Test
- public void equalsSelf() {
+ public void testEqualsSelf() {
assertEquals(selection, selection);
}
- @Test
- public void equalsOther() {
+ public void testEqualsOther() {
Selection other = new Selection();
other.add(3);
other.add(5);
@@ -89,23 +82,20 @@ public class MultiSelectManager_SelectionTest {
assertEquals(selection.hashCode(), other.hashCode());
}
- @Test
- public void equalsCopy() {
+ public void testEqualsCopy() {
Selection other = new Selection();
other.copyFrom(selection);
assertEquals(selection, other);
assertEquals(selection.hashCode(), other.hashCode());
}
- @Test
- public void notEquals() {
+ public void testNotEquals() {
Selection other = new Selection();
other.add(789);
assertFalse(selection.equals(other));
}
- @Test
- public void expandBefore() {
+ public void testExpandBefore() {
selection.expand(2, 10);
assertEquals(3, selection.size());
assertContains(13);
@@ -113,8 +103,7 @@ public class MultiSelectManager_SelectionTest {
assertContains(19);
}
- @Test
- public void expandAfter() {
+ public void testExpandAfter() {
selection.expand(10, 10);
assertEquals(3, selection.size());
assertContains(3);
@@ -122,8 +111,7 @@ public class MultiSelectManager_SelectionTest {
assertContains(9);
}
- @Test
- public void expandSplit() {
+ public void testExpandSplit() {
selection.expand(5, 10);
assertEquals(3, selection.size());
assertContains(3);
@@ -131,8 +119,7 @@ public class MultiSelectManager_SelectionTest {
assertContains(19);
}
- @Test
- public void expandEncompased() {
+ public void testExpandEncompased() {
selection.expand(2, 10);
assertEquals(3, selection.size());
assertContains(13);
@@ -140,8 +127,7 @@ public class MultiSelectManager_SelectionTest {
assertContains(19);
}
- @Test
- public void collapseBefore() {
+ public void testCollapseBefore() {
selection.collapse(0, 2);
assertEquals(3, selection.size());
assertContains(1);
@@ -149,8 +135,7 @@ public class MultiSelectManager_SelectionTest {
assertContains(7);
}
- @Test
- public void collapseAfter() {
+ public void testCollapseAfter() {
selection.collapse(10, 10);
assertEquals(3, selection.size());
assertContains(3);
@@ -158,8 +143,7 @@ public class MultiSelectManager_SelectionTest {
assertContains(9);
}
- @Test
- public void collapseAcross() {
+ public void testCollapseAcross() {
selection.collapse(0, 10);
assertEquals(0, selection.size());
}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/UnitTests.java b/packages/DocumentsUI/tests/src/com/android/documentsui/UnitTests.java
deleted file mode 100644
index be3f2515057e..000000000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/UnitTests.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-@RunWith(Suite.class)
-@SuiteClasses({
- MultiSelectManager_GridModelTest.class,
- MultiSelectManager_SelectionTest.class,
- MultiSelectManagerTest.class
-})
-
-/**
- * This test suite can be run using the "art" runtime (which can be built
- * via the `build-art-host` target.) You'll also need to "mma -j32" the
- * DocumentsUI package to ensure all deps are built.
- *
- * <p>Once the dependencies have been built, the tests can be executed as follows:
- *
- * <pre>
- * CP=$OUT/system/framework/framework.jar:\
- * $OUT/system/framework/core-junit.jar:\
- * $OUT/system/app/DocumentsUI/DocumentsUI.apk:\
- * $OUT/data/app/DocumentsUITests/DocumentsUITests.apk
- *
- * art -cp $CP org.junit.runner.JUnitCore com.android.documentsui.UnitTests
- * </pre>
- */
-public class UnitTests {}