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.

SignatureAttributeTest.java 3.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package javassist.bytecode;
  2. import junit.framework.TestCase;
  3. import java.util.HashMap;
  4. public class SignatureAttributeTest extends TestCase {
  5. public void test1() {
  6. final String signature = "TX;TY;La/b/C$D$E$J$K;"; //a sequence of three ReferenceTypeSignature
  7. final HashMap<String, String> map = new HashMap<>();
  8. map.put("a/b/C$D$E$J$K", "o/p/Q$R$S$T$U");
  9. map.put("e/F$G$H$I", "v/W$X$Y$Z");
  10. final String signatureRenamed = SignatureAttribute.renameClass(signature, map);
  11. assertEquals("TX;TY;Lo/p/Q$R$S$T$U;", signatureRenamed);
  12. }
  13. public void test2() {
  14. final String signature = "La/b/C<TA;TB;>.D<Ljava/lang/Integer;>;"; //a ClassTypeSignature
  15. final HashMap<String, String> map = new HashMap<>();
  16. map.put("a/b/C$D", "o/p/Q$R");
  17. map.put("java/lang/Integer", "java/lang/Long");
  18. final String signatureRenamed = SignatureAttribute.renameClass(signature, map);
  19. assertEquals("Lo/p/Q<TA;TB;>.R<Ljava/lang/Long;>;", signatureRenamed);
  20. }
  21. public void test3() {
  22. final String signature = "BJLB<TX;Lc/D$E;>.F<TY;>;TZ;"; //a sequence of four JavaTypeSignature
  23. final HashMap<String, String> map = new HashMap<>();
  24. map.put("B$F", "P$T");
  25. map.put("c/D$E", "q/R$S");
  26. final String signatureRenamed = SignatureAttribute.renameClass(signature, map);
  27. assertEquals("BJLP<TX;Lq/R$S;>.T<TY;>;TZ;", signatureRenamed);
  28. }
  29. public void test4() {
  30. final String signature = "La/b/C<TX;>;[[Ld/E<+TY;-Ljava/lang/Object;*>;Z"; //a sequence of three JavaTypeSignature
  31. final HashMap<String, String> map = new HashMap<>();
  32. map.put("java/lang/Object", "java/util/Map");
  33. map.put("d/E", "F");
  34. final String signatureRenamed = SignatureAttribute.renameClass(signature, map);
  35. assertEquals("La/b/C<TX;>;[[LF<+TY;-Ljava/util/Map;*>;Z", signatureRenamed);
  36. }
  37. public void test5() {
  38. final String signature = "La/b/C$D$E<TX;Le/F$G<TY;TZ;>.H$I<TU;TV;>;>.J$K;"; //a ClassTypeSignature
  39. final HashMap<String, String> map = new HashMap<>();
  40. map.put("a/b/C$D$E$J$K", "o/p/Q$R$S$T$U");
  41. map.put("e/F$G$H$I", "v/W$X$Y$Z");
  42. final String signatureRenamed = SignatureAttribute.renameClass(signature, map);
  43. assertEquals("Lo/p/Q$R$S<TX;Lv/W$X<TY;TZ;>.Y$Z<TU;TV;>;>.T$U;", signatureRenamed);
  44. }
  45. public void test6() {
  46. final String signature = "<X:La/B$C<TY;>.D<TZ;>;:Le/F$G;>Lh/I$J;"; //a ClassSignature
  47. final HashMap<String, String> map = new HashMap<>();
  48. map.put("a/B$C$D", "o/P$Q$R");
  49. map.put("e/F$G", "s/T$U");
  50. map.put("h/I$J", "v/W$X");
  51. final String signatureRenamed = SignatureAttribute.renameClass(signature, map);
  52. assertEquals("<X:Lo/P$Q<TY;>.R<TZ;>;:Ls/T$U;>Lv/W$X;", signatureRenamed);
  53. }
  54. public void test7() {
  55. final String signature = "<A:La/B$C;:Ld/E<TX;>.F<TY;>;:TZ;B:Ljava/lang/Thread;>(LX;TA;LA;)V^Ljava/lang/Exception;"; //a MethodSignature
  56. final HashMap<String, String> map = new HashMap<>();
  57. map.put("A", "P");
  58. map.put("a/B$C", "s/T$U");
  59. map.put("d/E$F", "v/W$X");
  60. map.put("X", "V");
  61. map.put("java/lang/Exception", "java/lang/RuntimeException");
  62. final String signatureRenamed = SignatureAttribute.renameClass(signature, map);
  63. assertEquals("<A:Ls/T$U;:Lv/W<TX;>.X<TY;>;:TZ;B:Ljava/lang/Thread;>(LV;TA;LP;)V^Ljava/lang/RuntimeException;", signatureRenamed);
  64. }
  65. public static void main(String[] s) {
  66. new SignatureAttributeTest().test1();
  67. new SignatureAttributeTest().test2();
  68. new SignatureAttributeTest().test3();
  69. new SignatureAttributeTest().test4();
  70. new SignatureAttributeTest().test5();
  71. new SignatureAttributeTest().test6();
  72. new SignatureAttributeTest().test7();
  73. }
  74. }