< prev index next >

test/java/lang/StackWalker/Basic.java

Print this page

        

*** 21,38 **** * questions. */ /* * @test ! * @bug 8140450 * @summary Basic test for the StackWalker::walk method * @run testng Basic */ import java.lang.StackWalker.StackFrame; import java.util.List; import java.util.stream.Collectors; import static java.lang.StackWalker.Option.*; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; --- 21,40 ---- * questions. */ /* * @test ! * @bug 8140450 8173898 * @summary Basic test for the StackWalker::walk method * @run testng Basic */ import java.lang.StackWalker.StackFrame; import java.util.List; + import java.util.Objects; import java.util.stream.Collectors; + import java.util.stream.Stream; import static java.lang.StackWalker.Option.*; import org.testng.annotations.DataProvider; import org.testng.annotations.Test;
*** 58,67 **** --- 60,83 ---- for (int estimate : estimates) { test.walk(estimate); } } + @Test + /** + * @bug 8173898 + */ + public static void testConstructor() throws Exception { + System.out.println("testConstructor:"); + List<String> found = ((Dummy)Dummy.class.getMethod("create") + .invoke(null)).found; + assertEquals(List.of(Dummy.class.getName()+"::<init>", + Dummy.class.getName()+"::create", + Basic.class.getName()+"::testConstructor"), + found); + } + private final int depth; Basic(int depth) { this.depth = depth; }
*** 75,84 **** --- 91,127 ---- System.out.format("depth=%d estimate=%d expected=%d walked=%d%n", depth, estimate, limit, frames.size()); assertEquals(limit, frames.size()); } + static class Dummy { + static final StackWalker walker = + StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE); + List<String> found; + public Dummy() { + found = walker.walk(this::parse); + } + public boolean accept(StackFrame f) { + if (!f.getDeclaringClass().getName().contains(".")) { + System.out.println(" " + f); + return true; + } + return false; + } + public String frame(StackFrame f) { + return f.getDeclaringClass().getName() + "::" + f.getMethodName(); + } + List<String> parse(Stream<StackFrame> s) { + return s.filter(this::accept) + .map(this::frame) + .collect(Collectors.toList()); + } + public static Dummy create() throws Exception { + return Dummy.class.getConstructor().newInstance(); + } + } + class StackBuilder { private final int stackDepth; private final int limit; private int depth = 0; private List<StackFrame> result;
*** 134,139 **** --- 177,188 ---- static void assertEquals(int x, int y) { if (x != y) { throw new RuntimeException(x + " != " + y); } } + + static void assertEquals(Object x, Object y) { + if (!Objects.equals(x,y)) { + throw new RuntimeException(x + " != " + y); + } + } }
< prev index next >