--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/jdi/sde/SourceDebugExtensionTest.java Tue Sep 12 19:03:39 2017 +0200
@@ -0,0 +1,81 @@
+/**
+ * @test
+ * @bug 4390869
+ * @bug 4460328
+ * @summary Test the new SourceDebugExtension facility
+ * @author Robert Field
+ *
+ * @library ..
+ *
+ * @run build TestScaffold VMConnection TargetListener TargetAdapter InstallSDE
+ * @run compile SourceDebugExtensionTest.java
+ * @run compile -g SourceDebugExtensionTarg.java
+ * @run driver SourceDebugExtensionTest
+ */
+import com.sun.jdi.*;
+import com.sun.jdi.event.*;
+import com.sun.jdi.request.*;
+
+import java.util.*;
+import java.io.File;
+
+public class SourceDebugExtensionTest extends TestScaffold {
+ ReferenceType targetClass;
+
+ SourceDebugExtensionTest (String args[]) {
+ super(args);
+ }
+
+ public static void main(String[] args) throws Exception {
+ testSetUp();
+ new SourceDebugExtensionTest(args).startTests();
+ }
+
+ /********** test set-up **********/
+
+ static void testSetUp() throws Exception {
+ InstallSDE.install(new File(System.getProperty("test.classes", "."),
+ "SourceDebugExtensionTarg.class"),
+ new File(System.getProperty("test.src", "."),
+ "testString"));
+ }
+
+ /********** test core **********/
+
+ protected void runTests() throws Exception {
+ /*
+ * Get to the top of main()
+ * to determine targetClass
+ */
+ BreakpointEvent bpe = startToMain("SourceDebugExtensionTarg");
+ targetClass = bpe.location().declaringType();
+
+ if (!vm().canGetSourceDebugExtension()) {
+ failure("FAIL: canGetSourceDebugExtension() is false");
+ } else {
+ println("canGetSourceDebugExtension() is true");
+ }
+
+ String expected = "An expected attribute string";
+ String sde = targetClass.sourceDebugExtension();
+ if (!sde.equals(expected)) {
+ failure("FAIL: got '" + sde +
+ "' expected: '" + expected + "'");
+ }
+
+ /*
+ * resume the target listening for events
+ */
+ listenUntilVMDisconnect();
+
+ /*
+ * deal with results of test
+ * if anything has called failure("foo") testFailed will be true
+ */
+ if (!testFailed) {
+ println("SourceDebugExtensionTest: passed");
+ } else {
+ throw new Exception("SourceDebugExtensionTest: failed");
+ }
+ }
+}