summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorGilles Debunne <debunne@google.com>2010-02-25 13:49:53 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-02-25 13:49:53 -0800
commitaa635db5c65351a43ce17ceaed5909018383d88d (patch)
tree587b18aa50e62281d6800225764b7421542c8cea /core
parentd82968d8d8f3ac5908e6cb76b6e8989092f41c27 (diff)
parent192ab903887bbb8e7c7b6da5c581573850e30f46 (diff)
downloadframeworks_base-aa635db5c65351a43ce17ceaed5909018383d88d.zip
frameworks_base-aa635db5c65351a43ce17ceaed5909018383d88d.tar.gz
frameworks_base-aa635db5c65351a43ce17ceaed5909018383d88d.tar.bz2
Merge "New test on ContextMenuInfo packed positions."
Diffstat (limited to 'core')
-rw-r--r--core/java/android/test/InstrumentationTestCase.java8
-rw-r--r--core/java/android/widget/ExpandableListConnector.java3
-rw-r--r--core/tests/coretests/src/android/widget/expandablelistview/ExpandableListBasicTest.java70
-rw-r--r--core/tests/coretests/src/android/widget/expandablelistview/ExpandableListWithHeaders.java9
-rw-r--r--core/tests/coretests/src/android/widget/expandablelistview/ExpandableListWithHeadersTest.java17
-rw-r--r--core/tests/coretests/src/android/widget/expandablelistview/InflatedExpandableListView.java2
-rw-r--r--core/tests/coretests/src/android/widget/expandablelistview/PositionTesterContextMenuListener.java43
7 files changed, 121 insertions, 31 deletions
diff --git a/core/java/android/test/InstrumentationTestCase.java b/core/java/android/test/InstrumentationTestCase.java
index 22d95d1..cd33d8a 100644
--- a/core/java/android/test/InstrumentationTestCase.java
+++ b/core/java/android/test/InstrumentationTestCase.java
@@ -16,8 +16,6 @@
package android.test;
-import junit.framework.TestCase;
-
import android.app.Activity;
import android.app.Instrumentation;
import android.content.Intent;
@@ -26,9 +24,11 @@ import android.util.Log;
import android.view.KeyEvent;
import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-import java.lang.reflect.InvocationTargetException;
+
+import junit.framework.TestCase;
/**
* A test case that has access to {@link Instrumentation}.
@@ -86,7 +86,6 @@ public class InstrumentationTestCase extends TestCase {
* @param extras Optional extra stuff to pass to the activity.
* @return The activity, or null if non launched.
*/
- @SuppressWarnings("unchecked")
public final <T extends Activity> T launchActivity(
String pkg,
Class<T> activityCls,
@@ -338,6 +337,7 @@ public class InstrumentationTestCase extends TestCase {
*
* @throws Exception
*/
+ @Override
protected void tearDown() throws Exception {
Runtime.getRuntime().gc();
Runtime.getRuntime().runFinalization();
diff --git a/core/java/android/widget/ExpandableListConnector.java b/core/java/android/widget/ExpandableListConnector.java
index ccce7c1..9c43e9b 100644
--- a/core/java/android/widget/ExpandableListConnector.java
+++ b/core/java/android/widget/ExpandableListConnector.java
@@ -25,7 +25,6 @@ import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.List;
/*
* Implementation notes:
@@ -637,7 +636,7 @@ class ExpandableListConnector extends BaseAdapter implements Filterable {
// Check to see if it's already expanded
if (posMetadata.groupMetadata != null) return false;
- /* Restrict number of exp groups to mMaxExpGroupCount */
+ /* Restrict number of expanded groups to mMaxExpGroupCount */
if (mExpGroupMetadataList.size() >= mMaxExpGroupCount) {
/* Collapse a group */
// TODO: Collapse something not on the screen instead of the first one?
diff --git a/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListBasicTest.java b/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListBasicTest.java
index 23a4cde..22bbabc 100644
--- a/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListBasicTest.java
+++ b/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListBasicTest.java
@@ -16,29 +16,28 @@
package android.widget.expandablelistview;
-import android.widget.expandablelistview.ExpandableListSimple;
+import android.app.Instrumentation;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.MediumTest;
import android.util.ExpandableListScenario;
import android.util.ListUtil;
import android.util.ExpandableListScenario.MyGroup;
-
-import java.util.List;
-
-import android.test.ActivityInstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
+import android.view.View;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
-public class ExpandableListBasicTest extends ActivityInstrumentationTestCase<ExpandableListSimple> {
+import java.util.List;
+
+public class ExpandableListBasicTest extends ActivityInstrumentationTestCase2<ExpandableListSimple> {
private ExpandableListScenario mActivity;
private ExpandableListView mListView;
private ExpandableListAdapter mAdapter;
private ListUtil mListUtil;
public ExpandableListBasicTest() {
- super("com.android.frameworks.coretests",
- ExpandableListSimple.class);
+ super(ExpandableListSimple.class);
}
@Override
@@ -87,7 +86,6 @@ public class ExpandableListBasicTest extends ActivityInstrumentationTestCase<Exp
@MediumTest
public void testExpandedGroupMovement() {
-
// Expand the first group
mListUtil.arrowScrollToSelectedPosition(0);
sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
@@ -125,5 +123,55 @@ public class ExpandableListBasicTest extends ActivityInstrumentationTestCase<Exp
assertFalse("The expanded state was given to the inserted group",
mListView.isGroupExpanded(0));
}
-
+
+ // Static utility method, shared by different ExpandableListView scenario.
+ static void checkGroupAndChildPositions(ExpandableListView elv,
+ ActivityInstrumentationTestCase2<? extends ExpandableListScenario> activityInstrumentation) {
+ // Add a position tester ContextMenu listener to the ExpandableListView
+ PositionTesterContextMenuListener menuListener = new PositionTesterContextMenuListener();
+ elv.setOnCreateContextMenuListener(menuListener);
+
+ ListUtil listUtil = new ListUtil(elv, activityInstrumentation.getInstrumentation());
+ ExpandableListAdapter adapter = elv.getExpandableListAdapter();
+ Instrumentation instrumentation = activityInstrumentation.getInstrumentation();
+
+ int index = elv.getHeaderViewsCount();
+ int groupCount = adapter.getGroupCount();
+ for (int groupIndex = 0; groupIndex < groupCount; groupIndex++) {
+
+ // Expand group
+ assertFalse("Group is already expanded", elv.isGroupExpanded(groupIndex));
+ listUtil.arrowScrollToSelectedPosition(index);
+ instrumentation.waitForIdleSync();
+ activityInstrumentation.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
+ activityInstrumentation.getInstrumentation().waitForIdleSync();
+ assertTrue("Group did not expand " + groupIndex, elv.isGroupExpanded(groupIndex));
+
+ // Check group index in context menu
+ menuListener.expectGroupContextMenu(groupIndex);
+ // Make sure the group is visible so that getChild finds it
+ listUtil.arrowScrollToSelectedPosition(index);
+ View groupChild = elv.getChildAt(index - elv.getFirstVisiblePosition());
+ elv.showContextMenuForChild(groupChild);
+ index++;
+
+ final int childrenCount = adapter.getChildrenCount(groupIndex);
+ for (int childIndex = 0; childIndex < childrenCount; childIndex++) {
+ // Check child index in context menu
+ listUtil.arrowScrollToSelectedPosition(index);
+ menuListener.expectChildContextMenu(groupIndex, childIndex);
+ View child = elv.getChildAt(index - elv.getFirstVisiblePosition());
+ elv.showContextMenuForChild(child);
+ index++;
+ }
+ }
+
+ // Cleanup: remove the listener we added.
+ elv.setOnCreateContextMenuListener(null);
+ }
+
+ @MediumTest
+ public void testGroupChildPositions() {
+ checkGroupAndChildPositions(mListView, this);
+ }
}
diff --git a/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListWithHeaders.java b/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListWithHeaders.java
index 7965f9f..2251c1d 100644
--- a/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListWithHeaders.java
+++ b/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListWithHeaders.java
@@ -16,13 +16,10 @@
package android.widget.expandablelistview;
-import android.util.ExpandableListScenario;
-
import android.os.Bundle;
+import android.util.ExpandableListScenario;
import android.widget.Button;
import android.widget.ExpandableListView;
-import android.widget.ListAdapter;
-import android.widget.ListView;
public class ExpandableListWithHeaders extends ExpandableListScenario {
private static final int[] sNumChildren = {1, 4, 3, 2, 6};
@@ -46,13 +43,13 @@ public class ExpandableListWithHeaders extends ExpandableListScenario {
for (int i = 0; i < sNumOfHeadersAndFooters; i++) {
Button header = new Button(this);
- header.setText("Header View");
+ header.setText("Header View " + i);
expandableListView.addHeaderView(header);
}
for (int i = 0; i < sNumOfHeadersAndFooters; i++) {
Button footer = new Button(this);
- footer.setText("Footer View");
+ footer.setText("Footer View " + i);
expandableListView.addFooterView(footer);
}
diff --git a/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListWithHeadersTest.java b/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListWithHeadersTest.java
index 50d0929..ca07e6b 100644
--- a/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListWithHeadersTest.java
+++ b/core/tests/coretests/src/android/widget/expandablelistview/ExpandableListWithHeadersTest.java
@@ -16,22 +16,20 @@
package android.widget.expandablelistview;
-import android.test.ActivityInstrumentationTestCase;
+import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
+import android.util.ListUtil;
import android.view.KeyEvent;
import android.widget.ExpandableListView;
-import android.widget.expandablelistview.ExpandableListWithHeaders;
-import android.util.ListUtil;
-
-public class ExpandableListWithHeadersTest extends ActivityInstrumentationTestCase<ExpandableListWithHeaders> {
+public class ExpandableListWithHeadersTest extends
+ ActivityInstrumentationTestCase2<ExpandableListWithHeaders> {
private ExpandableListView mExpandableListView;
private ListUtil mListUtil;
public ExpandableListWithHeadersTest() {
- super("com.android.frameworks.coretests",
- ExpandableListWithHeaders.class);
+ super(ExpandableListWithHeaders.class);
}
@Override
@@ -63,4 +61,9 @@ public class ExpandableListWithHeadersTest extends ActivityInstrumentationTestCa
getInstrumentation().waitForIdleSync();
assertTrue(mExpandableListView.isGroupExpanded(0));
}
+
+ @MediumTest
+ public void testGroupChildPositions() {
+ ExpandableListBasicTest.checkGroupAndChildPositions(mExpandableListView, this);
+ }
}
diff --git a/core/tests/coretests/src/android/widget/expandablelistview/InflatedExpandableListView.java b/core/tests/coretests/src/android/widget/expandablelistview/InflatedExpandableListView.java
index 08b0d31..f4c9d56 100644
--- a/core/tests/coretests/src/android/widget/expandablelistview/InflatedExpandableListView.java
+++ b/core/tests/coretests/src/android/widget/expandablelistview/InflatedExpandableListView.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.view.widget.expandablelistview;
+package android.widget.expandablelistview;
import com.android.frameworks.coretests.R;
diff --git a/core/tests/coretests/src/android/widget/expandablelistview/PositionTesterContextMenuListener.java b/core/tests/coretests/src/android/widget/expandablelistview/PositionTesterContextMenuListener.java
new file mode 100644
index 0000000..b96bca1
--- /dev/null
+++ b/core/tests/coretests/src/android/widget/expandablelistview/PositionTesterContextMenuListener.java
@@ -0,0 +1,43 @@
+package android.widget.expandablelistview;
+
+import android.view.ContextMenu;
+import android.view.View;
+import android.view.ContextMenu.ContextMenuInfo;
+import android.view.View.OnCreateContextMenuListener;
+import android.widget.ExpandableListView;
+
+import junit.framework.Assert;
+
+public class PositionTesterContextMenuListener implements OnCreateContextMenuListener {
+
+ private int groupPosition, childPosition;
+
+ private int testType; // as returned by getPackedPositionType
+
+ public void expectGroupContextMenu(int groupPosition) {
+ this.groupPosition = groupPosition;
+ testType = ExpandableListView.PACKED_POSITION_TYPE_GROUP;
+ }
+
+ public void expectChildContextMenu(int groupPosition, int childPosition) {
+ this.groupPosition = groupPosition;
+ this.childPosition = childPosition;
+ testType = ExpandableListView.PACKED_POSITION_TYPE_CHILD;
+ }
+
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
+ ExpandableListView.ExpandableListContextMenuInfo elvMenuInfo = (ExpandableListView.ExpandableListContextMenuInfo) menuInfo;
+ long packedPosition = elvMenuInfo.packedPosition;
+
+ int packedPositionType = ExpandableListView.getPackedPositionType(packedPosition);
+ Assert.assertEquals("Wrong packed position type", testType, packedPositionType);
+
+ int packedPositionGroup = ExpandableListView.getPackedPositionGroup(packedPosition);
+ Assert.assertEquals("Wrong group position", groupPosition, packedPositionGroup);
+
+ if (testType == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
+ int packedPositionChild = ExpandableListView.getPackedPositionChild(packedPosition);
+ Assert.assertEquals("Wrong child position", childPosition, packedPositionChild);
+ }
+ }
+}