You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ConstantPoolToStringTest.java 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /* *******************************************************************
  2. * Copyright (c) 2018 Contributors
  3. * All rights reserved.
  4. * This program and the accompanying materials are made available
  5. * under the terms of the Eclipse Public License v 2.0
  6. * which accompanies this distribution and is available at
  7. * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
  8. *
  9. * Contributors:
  10. * Andy Clement - initial implementation
  11. * ******************************************************************/
  12. package org.aspectj.apache.bcel.classfile.tests;
  13. import org.aspectj.apache.bcel.classfile.ConstantPool;
  14. import org.aspectj.apache.bcel.classfile.JavaClass;
  15. import org.aspectj.apache.bcel.classfile.Method;
  16. import org.aspectj.apache.bcel.util.SyntheticRepository;
  17. public class ConstantPoolToStringTest extends BcelTestCase {
  18. @Override
  19. protected void setUp() throws Exception {
  20. super.setUp();
  21. }
  22. public void testToStringLambdaElements() throws ClassNotFoundException {
  23. SyntheticRepository repos = createRepos("lambda.jar");
  24. JavaClass clazz = repos.loadClass("Code");
  25. ConstantPool pool = clazz.getConstantPool();
  26. Method[] methods = clazz.getMethods();
  27. String codeString = methods[1].getCode().getCodeString();
  28. assertEquals("Code(max_stack = 1, max_locals = 2, code_length = 13)\n" +
  29. "0: invokedynamic #0.run ()Ljava/lang/Runnable; (2)\n" +
  30. "5: astore_1\n" +
  31. "6: aload_1\n" +
  32. "7: invokeinterface java.lang.Runnable.run ()V (3) 1 0\n" +
  33. "12: return\n",codeString);
  34. // #20 = MethodHandle 6:#32 // REF_invokeStatic java/lang/invoke/LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
  35. String cts = pool.constantToString(pool.getConstant(20));
  36. assertEquals("6:java.lang.invoke.LambdaMetafactory.metafactory (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;",cts);
  37. // #21 = MethodType #10 // ()V
  38. cts = pool.constantToString(pool.getConstant(21));
  39. assertEquals("()V",cts);
  40. }
  41. @Override
  42. protected void tearDown() throws Exception {
  43. super.tearDown();
  44. }
  45. }