Merge "Fixed HeaderViewListAdapterTest"
diff --git a/tests/SignatureTest/src/android/tests/sigtest/SignatureTest.java b/tests/SignatureTest/src/android/tests/sigtest/SignatureTest.java
index a2acefe..8001130 100644
--- a/tests/SignatureTest/src/android/tests/sigtest/SignatureTest.java
+++ b/tests/SignatureTest/src/android/tests/sigtest/SignatureTest.java
@@ -77,7 +77,7 @@
TAG_PACKAGE, TAG_CLASS, TAG_INTERFACE, TAG_IMPLEMENTS, TAG_CONSTRUCTOR,
TAG_METHOD, TAG_PARAM, TAG_EXCEPTION, TAG_FIELD }));
}
-
+
public static final void beginDocument(XmlPullParser parser, String firstElementName) throws XmlPullParserException, IOException
{
int type;
@@ -87,7 +87,7 @@
if (type != XmlPullParser.START_TAG) {
throw new XmlPullParserException("No start tag found");
}
-
+
if (!parser.getName().equals(firstElementName)) {
throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
", expected " + firstElementName);
@@ -109,7 +109,7 @@
while ((type=parser.next()) != XmlPullParser.START_TAG
&& type != XmlPullParser.END_DOCUMENT
&& type != XmlPullParser.END_TAG) {
-
+
}
if (type == XmlPullParser.END_TAG) {
@@ -144,14 +144,14 @@
currentClass.addConstructor(constructor);
currentMethod = constructor;
} else if (tagname.equals(TAG_METHOD)) {
- currentMethod = loadMethodInfo(parser);
+ currentMethod = loadMethodInfo(currentClass.getClassName(), parser);
currentClass.addMethod(currentMethod);
} else if (tagname.equals(TAG_PARAM)) {
currentMethod.addParam(parser.getAttributeValue(null, ATTRIBUTE_TYPE));
} else if (tagname.equals(TAG_EXCEPTION)) {
currentMethod.addException(parser.getAttributeValue(null, ATTRIBUTE_TYPE));
} else if (tagname.equals(TAG_FIELD)) {
- JDiffField field = loadFieldInfo(parser);
+ JDiffField field = loadFieldInfo(currentClass.getClassName(), parser);
currentClass.addField(field);
} else {
throw new RuntimeException(
@@ -179,25 +179,28 @@
/**
* Load field information from xml to memory.
*
+ * @param className of the class being examined which will be shown in error messages
+ * @param parser The XmlPullParser which carries the xml information.
* @return the new field
*/
- private JDiffField loadFieldInfo(XmlPullParser parser) {
+ private JDiffField loadFieldInfo(String className, XmlPullParser parser) {
String fieldName = parser.getAttributeValue(null, ATTRIBUTE_NAME);
String fieldType = parser.getAttributeValue(null, ATTRIBUTE_TYPE);
- int modifier = jdiffModifierToReflectionFormat(parser);
+ int modifier = jdiffModifierToReflectionFormat(className, parser);
return new JDiffField(fieldName, fieldType, modifier);
}
/**
* Load method information from xml to memory.
*
+ * @param className of the class being examined which will be shown in error messages
* @param parser The XmlPullParser which carries the xml information.
* @return the newly loaded method.
*/
- private JDiffMethod loadMethodInfo(XmlPullParser parser) {
+ private JDiffMethod loadMethodInfo(String className, XmlPullParser parser) {
String methodName = parser.getAttributeValue(null, ATTRIBUTE_NAME);
String returnType = parser.getAttributeValue(null, ATTRIBUTE_RETURN);
- int modifier = jdiffModifierToReflectionFormat(parser);
+ int modifier = jdiffModifierToReflectionFormat(className, parser);
return new JDiffMethod(methodName, modifier, returnType);
}
@@ -210,10 +213,9 @@
*/
private JDiffConstructor loadConstructorInfo(XmlPullParser parser,
JDiffClassDescription currentClass) {
- int modifier = jdiffModifierToReflectionFormat(parser);
- JDiffConstructor constructor = new JDiffConstructor(currentClass.getClassName(), modifier);
-
- return constructor;
+ String name = currentClass.getClassName();
+ int modifier = jdiffModifierToReflectionFormat(name, parser);
+ return new JDiffConstructor(name, modifier);
}
/**
@@ -231,7 +233,7 @@
JDiffClassDescription currentClass = new JDiffClassDescription(pkg,
className,
resultObserver);
- currentClass.setModifier(jdiffModifierToReflectionFormat(parser));
+ currentClass.setModifier(jdiffModifierToReflectionFormat(className, parser));
currentClass.setType(isInterface ? JDiffClassDescription.JDiffType.INTERFACE :
JDiffClassDescription.JDiffType.CLASS);
currentClass.setExtendsClass(parser.getAttributeValue(null, ATTRIBUTE_EXTENDS));
@@ -241,11 +243,12 @@
/**
* Convert string modifier to int modifier.
*
+ * @param name of the class/method/field being examined which will be shown in error messages
* @param key modifier name
* @param value modifier value
* @return converted modifier value
*/
- private static int modifierDescriptionToReflectedType(String key, String value){
+ private static int modifierDescriptionToReflectedType(String name, String key, String value) {
if (key.equals(MODIFIER_ABSTRACT)) {
return value.equals("true") ? Modifier.ABSTRACT : 0;
} else if (key.equals(MODIFIER_FINAL)) {
@@ -262,8 +265,7 @@
return value.equals("true") ? Modifier.VOLATILE : 0;
} else if (key.equals(MODIFIER_VISIBILITY)) {
if (value.equals(MODIFIER_PRIVATE)) {
- throw new RuntimeException(
- "should not be private method/field here");
+ throw new RuntimeException("Private visibility found in API spec: " + name);
} else if (value.equals(MODIFIER_PROTECTED)) {
return Modifier.PROTECTED;
} else if (value.equals(MODIFIER_PUBLIC)) {
@@ -273,8 +275,7 @@
// which is package private. We should return 0 for this modifier.
return 0;
} else {
- throw new RuntimeException(
- "Unknow modifier:" + value);
+ throw new RuntimeException("Unknown modifier found in API spec: " + value);
}
}
return 0;
@@ -283,13 +284,14 @@
/**
* Transfer string modifier to int one.
*
+ * @param name of the class/method/field being examined which will be shown in error messages
* @param parser XML resource parser
* @return converted modifier
*/
- private static int jdiffModifierToReflectionFormat(XmlPullParser parser){
+ private static int jdiffModifierToReflectionFormat(String name, XmlPullParser parser){
int modifier = 0;
for (int i = 0;i < parser.getAttributeCount();i++) {
- modifier |= modifierDescriptionToReflectedType(parser.getAttributeName(i),
+ modifier |= modifierDescriptionToReflectedType(name, parser.getAttributeName(i),
parser.getAttributeValue(i));
}
return modifier;
diff --git a/tests/SignatureTest/src/android/tests/sigtest/SignatureTestActivity.java b/tests/SignatureTest/src/android/tests/sigtest/SignatureTestActivity.java
index 90b08b8..9c81cef 100644
--- a/tests/SignatureTest/src/android/tests/sigtest/SignatureTestActivity.java
+++ b/tests/SignatureTest/src/android/tests/sigtest/SignatureTestActivity.java
@@ -111,16 +111,9 @@
if (!excludeSet.contains(f.getName())) {
try {
sigTest.start(r.getXml(f.getInt(rClass)));
- } catch (NotFoundException e) {
- throw new RuntimeException(e);
- } catch (IllegalArgumentException e) {
- throw new RuntimeException(e);
- } catch (IllegalAccessException e) {
- throw new RuntimeException(e);
- } catch (XmlPullParserException e) {
- throw new RuntimeException(e);
- } catch (IOException e) {
- throw new RuntimeException(e);
+ } catch (Exception e) {
+ mResultObserver.notifyFailure(FAILURE_TYPE.CAUGHT_EXCEPTION, e.getMessage(),
+ e.getMessage());
}
}
}
diff --git a/tests/tests/graphics/src/android/graphics/cts/AvoidXfermodeTest.java b/tests/tests/graphics/src/android/graphics/cts/AvoidXfermodeTest.java
index 74eda03..13be1d5 100644
--- a/tests/tests/graphics/src/android/graphics/cts/AvoidXfermodeTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/AvoidXfermodeTest.java
@@ -47,7 +47,6 @@
)
@ToBeFixed(bug = "2034547",
explanation = "AvoidXfermode does not work as expected with tolerance 0.")
- @KnownFailure(value="bug 2136225")
public void testAvoidXfermode() {
Paint greenPaint;
Paint redAvoidingGreenPaint;
diff --git a/tests/tests/graphics/src/android/graphics/cts/ColorMatrixTest.java b/tests/tests/graphics/src/android/graphics/cts/ColorMatrixTest.java
index e92e1ec..7f55ddb 100644
--- a/tests/tests/graphics/src/android/graphics/cts/ColorMatrixTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/ColorMatrixTest.java
@@ -33,6 +33,8 @@
15, 16, 17, 18, 19
};
+ private static final float TOLERANCE = 0.0000001f;
+
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -199,22 +201,22 @@
mColorMatrix.setRotate(0, 180);
float[] ret = mColorMatrix.getArray();
- assertEquals(-1.0f, ret[6]);
- assertEquals(-1.0f, ret[12]);
- assertEquals(-8.742278E-8f, ret[7]);
- assertEquals(8.742278E-8f, ret[11]);
+ assertEquals(-1.0f, ret[6], TOLERANCE);
+ assertEquals(-1.0f, ret[12], TOLERANCE);
+ assertEquals(0, ret[7], TOLERANCE);
+ assertEquals(0, ret[11], TOLERANCE);
mColorMatrix.setRotate(1, 180);
- assertEquals(-1.0f, ret[0]);
- assertEquals(-1.0f, ret[17]);
- assertEquals(-8.742278E-8f, ret[2]);
- assertEquals(8.742278E-8f, ret[15]);
+ assertEquals(-1.0f, ret[0], TOLERANCE);
+ assertEquals(-1.0f, ret[12], TOLERANCE);
+ assertEquals(0, ret[2], TOLERANCE);
+ assertEquals(0, ret[10], TOLERANCE);
mColorMatrix.setRotate(2, 180);
- assertEquals(-1.0f, ret[0]);
- assertEquals(-1.0f, ret[6]);
- assertEquals(-8.742278E-8f, ret[1]);
- assertEquals(8.742278E-8f, ret[5]);
+ assertEquals(-1.0f, ret[0], TOLERANCE);
+ assertEquals(-1.0f, ret[6], TOLERANCE);
+ assertEquals(0, ret[1], TOLERANCE);
+ assertEquals(0, ret[5], TOLERANCE);
}
@TestTargets({
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
index 5f1072b..979d24c 100644
--- a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
@@ -233,7 +233,7 @@
if (LOGV) Log.v(TAG, "Wait for preview callback");
if (!mPreviewDone.block(WAIT_FOR_COMMAND_TO_COMPLETE)) {
// timeout could be expected or unexpected. The caller will decide.
- if (LOGV) Log.v(TAG, "waitForPreviewDone: timeout");
+ Log.v(TAG, "waitForPreviewDone: timeout");
}
mPreviewDone.close();
}
@@ -241,7 +241,7 @@
private void waitForFocusDone() {
if (!mFocusDone.block(WAIT_FOR_FOCUS_TO_COMPLETE)) {
// timeout could be expected or unexpected. The caller will decide.
- if (LOGV) Log.v(TAG, "waitForFocusDone: timeout");
+ Log.v(TAG, "waitForFocusDone: timeout");
}
mFocusDone.close();
}
@@ -249,7 +249,7 @@
private void waitForSnapshotDone() {
if (!mSnapshotDone.block(WAIT_FOR_SNAPSHOT_TO_COMPLETE)) {
// timeout could be expected or unexpected. The caller will decide.
- if (LOGV) Log.v(TAG, "waitForSnapshotDone: timeout");
+ Log.v(TAG, "waitForSnapshotDone: timeout");
}
mSnapshotDone.close();
}
@@ -819,4 +819,69 @@
recorder.release();
}
}
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "addCallbackBuffer",
+ args = {byte[].class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setPreviewCallbackWithBuffer",
+ args = {android.hardware.Camera.PreviewCallback.class}
+ )
+ })
+ public void testPreviewCallbackWithBuffer() throws Exception {
+ initializeMessageLooper();
+ SurfaceHolder surfaceHolder;
+ surfaceHolder = CameraStubActivity.mSurfaceView.getHolder();
+ mCamera.setPreviewDisplay(surfaceHolder);
+ Size size = mCamera.getParameters().getPreviewSize();
+ PreviewCallbackWithBuffer callback = new PreviewCallbackWithBuffer();
+ callback.mBuffer1 = new byte[size.width * size.height * 3 / 2 + 1];
+ callback.mBuffer2 = new byte[size.width * size.height * 3 / 2 + 1];
+ callback.mBuffer3 = new byte[size.width * size.height * 3 / 2 + 1];
+
+ // Test if we can get the preview callbacks with specified buffers.
+ mCamera.addCallbackBuffer(callback.mBuffer1);
+ mCamera.addCallbackBuffer(callback.mBuffer2);
+ mCamera.setPreviewCallbackWithBuffer(callback);
+ mCamera.startPreview();
+ waitForPreviewDone();
+ assertEquals(1, callback.mNumCbWithBuffer1);
+ assertEquals(1, callback.mNumCbWithBuffer2);
+ assertEquals(0, callback.mNumCbWithBuffer3);
+
+ // Test if preview callback with buffer still works during preview.
+ callback.mNumCbWithBuffer1 = callback.mNumCbWithBuffer2 = 0;
+ mCamera.addCallbackBuffer(callback.mBuffer3);
+ waitForPreviewDone();
+ assertEquals(0, callback.mNumCbWithBuffer1);
+ assertEquals(0, callback.mNumCbWithBuffer2);
+ assertEquals(1, callback.mNumCbWithBuffer3);
+ terminateMessageLooper();
+ }
+
+ private final class PreviewCallbackWithBuffer implements PreviewCallback {
+ public int mNumCbWithBuffer1, mNumCbWithBuffer2, mNumCbWithBuffer3;
+ public byte[] mBuffer1, mBuffer2, mBuffer3;
+ public void onPreviewFrame(byte[] data, Camera camera) {
+ assert(data != null);
+ if (data == mBuffer1) {
+ mNumCbWithBuffer1++;
+ } else if (data == mBuffer2) {
+ mNumCbWithBuffer2++;
+ } else if (data == mBuffer3) {
+ mNumCbWithBuffer3++;
+ } else {
+ fail("Invalid byte array.");
+ }
+
+ if ((mNumCbWithBuffer1 == 1 && mNumCbWithBuffer2 == 1)
+ || mNumCbWithBuffer3 == 1) {
+ mPreviewDone.open();
+ }
+ }
+ }
}
diff --git a/tests/tests/widget/src/android/widget/cts/ExpandableListViewTest.java b/tests/tests/widget/src/android/widget/cts/ExpandableListViewTest.java
index 8fecc39..af420b4 100644
--- a/tests/tests/widget/src/android/widget/cts/ExpandableListViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/ExpandableListViewTest.java
@@ -16,6 +16,14 @@
package android.widget.cts;
+import com.android.cts.stub.R;
+
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+import dalvik.annotation.ToBeFixed;
+
import org.xmlpull.v1.XmlPullParser;
import android.content.Context;
@@ -36,16 +44,6 @@
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ExpandableListView.OnGroupClickListener;
-import android.widget.ExpandableListView.OnGroupCollapseListener;
-import android.widget.ExpandableListView.OnGroupExpandListener;
-
-import com.android.cts.stub.R;
-
-import dalvik.annotation.TestTargets;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.ToBeFixed;
@TestTargetClass(ExpandableListView.class)
public class ExpandableListViewTest extends AndroidTestCase {
@@ -334,9 +332,19 @@
expandableListView.setAdapter(new MockExpandableListAdapter());
assertEquals(0, expandableListView.getExpandableListPosition(0));
- assertEquals(1L<<32, expandableListView.getExpandableListPosition(1));
- assertEquals(2L<<32, expandableListView.getExpandableListPosition(2));
- assertEquals(3L<<32, expandableListView.getExpandableListPosition(3));
+
+ // Group 0 is not expanded, position 1 is invalid
+ assertEquals(ExpandableListView.PACKED_POSITION_VALUE_NULL,
+ expandableListView.getExpandableListPosition(1));
+
+ // Position 1 becomes valid when group 0 is expanded
+ expandableListView.expandGroup(0);
+ assertEquals(ExpandableListView.getPackedPositionForChild(0, 0),
+ expandableListView.getExpandableListPosition(1));
+
+ // Position 2 is still invalid (only one child).
+ assertEquals(ExpandableListView.PACKED_POSITION_VALUE_NULL,
+ expandableListView.getExpandableListPosition(2));
}
@TestTargetNew(
@@ -780,6 +788,7 @@
super(context, attrs, defStyle);
}
+ @Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
}