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) {