40 ClassPrinter::print_classes("java/lang/Object", 0x03, &s1);
41 const char* o1 = s1.freeze();
42
43 ASSERT_THAT(o1, HasSubstr("class: java/lang/Object mirror:")) << "must find java/lang/Object";
44 ASSERT_THAT(o1, HasSubstr("method wait : (J)V")) << "must find java/lang/Object::wait";
45 ASSERT_THAT(o1, HasSubstr("method finalize : ()V\n 0 return")) << "must find java/lang/Object::finalize and disasm";
46
47 // "." should also work as separator in class name
48 stringStream s2;
49 ClassPrinter::print_classes("java.lang.Object", 0x03, &s2);
50 const char* o2 = s2.freeze();
51 ASSERT_THAT(o2, HasSubstr("class: java/lang/Object mirror:")) << "must find java/lang/Object";
52
53 // 0x20 is PRINT_CLASS_DETAILS
54 stringStream s3;
55 ClassPrinter::print_classes("java.lang.Integer", 0x20, &s3);
56 const char* o3 = s3.freeze();
57 ASSERT_THAT(o3, HasSubstr("class: java/lang/Integer mirror:")) << "must find java/lang/Integer";
58 ASSERT_THAT(o3, HasSubstr("InstanceKlass: java.lang.Integer {0x")) << "must print InstanceKlass";
59 ASSERT_THAT(o3, HasSubstr("Java mirror oop for java/lang/Integer:")) << "must print mirror oop";
60 #if GTEST_USES_POSIX_RE
61 // Complex regex not available on Windows
62 ASSERT_THAT(o3, ContainsRegex("public static final 'MIN_VALUE' 'I'.* -2147483648 [(]0x80000000[)]")) << "must print static fields";
63 #endif
64 }
65
66 TEST_VM(ClassPrinter, print_methods) {
67 JavaThread* THREAD = JavaThread::current();
68 ThreadInVMfromNative invm(THREAD);
69 ResourceMark rm;
70
71 stringStream s1;
72 ClassPrinter::print_methods("*ang/Object*", "wait", 0x1, &s1);
73 const char* o1 = s1.freeze();
74 ASSERT_THAT(o1, HasSubstr("class: java/lang/Object mirror:")) << "must find java/lang/Object";
75 ASSERT_THAT(o1, HasSubstr("method wait : (J)V")) << "must find java/lang/Object::wait(long)";
76 ASSERT_THAT(o1, HasSubstr("method wait : ()V")) << "must find java/lang/Object::wait()";
77 ASSERT_THAT(o1, Not(HasSubstr("method finalize : ()V"))) << "must not find java/lang/Object::finalize";
78
79 stringStream s2;
80 ClassPrinter::print_methods("j*ang/Object*", "wait:(*J*)V", 0x1, &s2);
81 const char* o2 = s2.freeze();
82 ASSERT_THAT(o2, HasSubstr("class: java/lang/Object mirror:")) << "must find java/lang/Object";
83 ASSERT_THAT(o2, HasSubstr("method wait : (J)V")) << "must find java/lang/Object::wait(long)";
|
40 ClassPrinter::print_classes("java/lang/Object", 0x03, &s1);
41 const char* o1 = s1.freeze();
42
43 ASSERT_THAT(o1, HasSubstr("class: java/lang/Object mirror:")) << "must find java/lang/Object";
44 ASSERT_THAT(o1, HasSubstr("method wait : (J)V")) << "must find java/lang/Object::wait";
45 ASSERT_THAT(o1, HasSubstr("method finalize : ()V\n 0 return")) << "must find java/lang/Object::finalize and disasm";
46
47 // "." should also work as separator in class name
48 stringStream s2;
49 ClassPrinter::print_classes("java.lang.Object", 0x03, &s2);
50 const char* o2 = s2.freeze();
51 ASSERT_THAT(o2, HasSubstr("class: java/lang/Object mirror:")) << "must find java/lang/Object";
52
53 // 0x20 is PRINT_CLASS_DETAILS
54 stringStream s3;
55 ClassPrinter::print_classes("java.lang.Integer", 0x20, &s3);
56 const char* o3 = s3.freeze();
57 ASSERT_THAT(o3, HasSubstr("class: java/lang/Integer mirror:")) << "must find java/lang/Integer";
58 ASSERT_THAT(o3, HasSubstr("InstanceKlass: java.lang.Integer {0x")) << "must print InstanceKlass";
59 ASSERT_THAT(o3, HasSubstr("Java mirror oop for java/lang/Integer:")) << "must print mirror oop";
60 #if 0 // FIX: JDK-8374115
61 #if GTEST_USES_POSIX_RE
62 // Complex regex not available on Windows
63 ASSERT_THAT(o3, ContainsRegex("public static final 'MIN_VALUE' 'I'.* -2147483648 [(]0x80000000[)]")) << "must print static fields";
64 #endif
65 #endif
66 }
67
68 TEST_VM(ClassPrinter, print_methods) {
69 JavaThread* THREAD = JavaThread::current();
70 ThreadInVMfromNative invm(THREAD);
71 ResourceMark rm;
72
73 stringStream s1;
74 ClassPrinter::print_methods("*ang/Object*", "wait", 0x1, &s1);
75 const char* o1 = s1.freeze();
76 ASSERT_THAT(o1, HasSubstr("class: java/lang/Object mirror:")) << "must find java/lang/Object";
77 ASSERT_THAT(o1, HasSubstr("method wait : (J)V")) << "must find java/lang/Object::wait(long)";
78 ASSERT_THAT(o1, HasSubstr("method wait : ()V")) << "must find java/lang/Object::wait()";
79 ASSERT_THAT(o1, Not(HasSubstr("method finalize : ()V"))) << "must not find java/lang/Object::finalize";
80
81 stringStream s2;
82 ClassPrinter::print_methods("j*ang/Object*", "wait:(*J*)V", 0x1, &s2);
83 const char* o2 = s2.freeze();
84 ASSERT_THAT(o2, HasSubstr("class: java/lang/Object mirror:")) << "must find java/lang/Object";
85 ASSERT_THAT(o2, HasSubstr("method wait : (J)V")) << "must find java/lang/Object::wait(long)";
|