Make NewInstanceString test returned String contents.
Bug: 30951794
Test: mm -j24 run-jdwp-tests-host
(cherry-picked from commit be5386b80c1e649da468c1c0e2e247784c8e9991)
Change-Id: I2e8e693a9a4b921b55c7965262dd90cd3f67fcfa
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ClassType/AbstractNewInstanceTestCase.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ClassType/AbstractNewInstanceTestCase.java
index faf7720..4120863 100644
--- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ClassType/AbstractNewInstanceTestCase.java
+++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ClassType/AbstractNewInstanceTestCase.java
@@ -78,8 +78,9 @@
* @param constructorSignature the constructor signature
* @param provider the arguments provider
* @param expectedTag the expected JDWP tag
+ * @return the tagged object returned by the constructor
*/
- protected void checkNewInstanceTag(String typeSignature, String constructorSignature,
+ protected TaggedObject checkNewInstanceTag(String typeSignature, String constructorSignature,
ConstructorArgumentsProvider provider, byte expectedTag) {
synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
@@ -144,5 +145,7 @@
// Debuggee is suspended on the breakpoint: resume it now.
resumeDebuggee();
+
+ return objectResult;
}
}
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ClassType/NewInstanceStringTest.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ClassType/NewInstanceStringTest.java
index 751c953..ec618f0 100644
--- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ClassType/NewInstanceStringTest.java
+++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ClassType/NewInstanceStringTest.java
@@ -19,6 +19,7 @@
package org.apache.harmony.jpda.tests.jdwp.ClassType;
import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
+import org.apache.harmony.jpda.tests.framework.jdwp.TaggedObject;
import org.apache.harmony.jpda.tests.framework.jdwp.Value;
import java.util.List;
@@ -38,7 +39,7 @@
* <code>java.lang.String()</code>.
*/
public void testNewInstanceString_NoArgConstructor() {
- runTestNewInstanceString("()V", new NoConstructorArgumentProvider());
+ runTestNewInstanceString("()V", "", new NoConstructorArgumentProvider());
}
/**
@@ -46,7 +47,7 @@
* <code>java.lang.String(byte[])</code>.
*/
public void testNewInstanceString_ByteArrayArgConstructor() {
- runTestNewInstanceString("([B)V", new ConstructorArgumentsProvider() {
+ runTestNewInstanceString("([B)V", "my test string", new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
@@ -63,7 +64,7 @@
* <code>java.lang.String(byte[], int, int)</code>.
*/
public void testNewInstanceString_ByteArrayIntIntConstructor() {
- runTestNewInstanceString("([BII)V", new ConstructorArgumentsProvider() {
+ runTestNewInstanceString("([BII)V", "m", new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
// Pass a reference to BYTE_ARRAY static field.
@@ -81,7 +82,8 @@
* <code>java.lang.String(byte[], int, int, java.lang.String)</code>.
*/
public void testNewInstanceString_ByteArrayIntIntStringConstructor() {
- runTestNewInstanceString("([BIILjava/lang/String;)V", new ConstructorArgumentsProvider() {
+ runTestNewInstanceString("([BIILjava/lang/String;)V", "m",
+ new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
// Pass a reference to BYTE_ARRAY and STRING_CHARSET static
@@ -102,7 +104,8 @@
* <code>java.lang.String(byte[], java.lang.String)</code>.
*/
public void testNewInstanceString_ByteArrayStringConstructor() {
- runTestNewInstanceString("([BLjava/lang/String;)V", new ConstructorArgumentsProvider() {
+ runTestNewInstanceString("([BLjava/lang/String;)V", "my test string",
+ new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
// Pass a reference to BYTE_ARRAY and STRING_CHARSET static
@@ -122,7 +125,7 @@
* .
*/
public void testNewInstanceString_ByteArrayIntIntCharsetConstructor() {
- runTestNewInstanceString("([BIILjava/nio/charset/Charset;)V",
+ runTestNewInstanceString("([BIILjava/nio/charset/Charset;)V", "m",
new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
@@ -144,7 +147,7 @@
* <code>java.lang.String(byte[], java.nio.charset.Charset)</code>.
*/
public void testNewInstanceString_ByteArrayCharsetConstructor() {
- runTestNewInstanceString("([BLjava/nio/charset/Charset;)V",
+ runTestNewInstanceString("([BLjava/nio/charset/Charset;)V", "my test string",
new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
@@ -164,7 +167,7 @@
* <code>java.lang.String(char[])</code>.
*/
public void testNewInstanceString_CharArrayConstructor() {
- runTestNewInstanceString("([C)V", new ConstructorArgumentsProvider() {
+ runTestNewInstanceString("([C)V", "my test string", new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
// Pass a reference to CHAR_ARRAY static field.
@@ -180,7 +183,7 @@
* <code>java.lang.String(char[], int, int)</code>.
*/
public void testNewInstanceString_CharArrayIntIntConstructor() {
- runTestNewInstanceString("([CII)V", new ConstructorArgumentsProvider() {
+ runTestNewInstanceString("([CII)V", "m", new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
// Pass a reference to CHAR_ARRAY static field.
@@ -198,7 +201,8 @@
* <code>java.lang.String(java.lang.String)</code>.
*/
public void testNewInstanceString_StringConstructor() {
- runTestNewInstanceString("(Ljava/lang/String;)V", new ConstructorArgumentsProvider() {
+ runTestNewInstanceString("(Ljava/lang/String;)V", "my test string",
+ new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
// Pass a reference to TEST_STRING static field.
@@ -214,7 +218,8 @@
* <code>java.lang.String(java.lang.StringBuffer)</code>.
*/
public void testNewInstanceString_StringBufferConstructor() {
- runTestNewInstanceString("(Ljava/lang/StringBuffer;)V", new ConstructorArgumentsProvider() {
+ runTestNewInstanceString("(Ljava/lang/StringBuffer;)V", "my test string",
+ new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
// Pass a reference to STRING_BUFFER static field.
@@ -230,7 +235,7 @@
* <code>java.lang.String(int[], * int, int)</code>.
*/
public void testNewInstanceString_IntArrayIntIntConstructor() {
- runTestNewInstanceString("([III)V", new ConstructorArgumentsProvider() {
+ runTestNewInstanceString("([III)V", "m", new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
// Pass a reference to INT_ARRAY static field.
@@ -248,7 +253,7 @@
* <code>java.lang.String(java.lang.StringBuilder)</code>.
*/
public void testNewInstanceString_StringBuilderConstructor() {
- runTestNewInstanceString("(Ljava/lang/StringBuilder;)V",
+ runTestNewInstanceString("(Ljava/lang/StringBuilder;)V", "my test string",
new ConstructorArgumentsProvider() {
@Override
public void provideConstructorArguments(List<Value> constructorArguments) {
@@ -264,10 +269,15 @@
/**
* Exercises ClassType.NewInstance command for java.lang.String.
*/
- private void runTestNewInstanceString(String constructorSignature,
+ private void runTestNewInstanceString(String constructorSignature, String expectedString,
ConstructorArgumentsProvider provider) {
- checkNewInstanceTag("Ljava/lang/String;", constructorSignature, provider,
- JDWPConstants.Tag.STRING_TAG);
+ TaggedObject result = checkNewInstanceTag("Ljava/lang/String;", constructorSignature,
+ provider, JDWPConstants.Tag.STRING_TAG);
+
+ // Get the character data out of the new String and check that it's expected.
+ String resultString = getStringValue(result.objectID);
+ assertString("ClassType::NewInstance command returned invalid string,",
+ expectedString, resultString);
}
private Value getStaticFieldValue(long classId, String fieldName) {