diff options
author | Pietro Braione <pietro.braione@gmail.com> | 2020-01-22 15:06:11 +0100 |
---|---|---|
committer | Pietro Braione <pietro.braione@gmail.com> | 2020-01-22 15:06:11 +0100 |
commit | a3005aaf4e0c903c11d3ca3cc3681eea92064b45 (patch) | |
tree | 916c0d1e0b63c2608ae1e0b4593a9860f7400af6 /src/test/javassist/bytecode | |
parent | 87826031561c75238bdf99e812829f195b831d5c (diff) | |
download | javassist-a3005aaf4e0c903c11d3ca3cc3681eea92064b45.tar.gz javassist-a3005aaf4e0c903c11d3ca3cc3681eea92064b45.zip |
Fixes to support the full syntax of possible signatures
Diffstat (limited to 'src/test/javassist/bytecode')
-rw-r--r-- | src/test/javassist/bytecode/SignatureAttributeTest.java | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/test/javassist/bytecode/SignatureAttributeTest.java b/src/test/javassist/bytecode/SignatureAttributeTest.java new file mode 100644 index 00000000..1bf654d4 --- /dev/null +++ b/src/test/javassist/bytecode/SignatureAttributeTest.java @@ -0,0 +1,84 @@ +package javassist.bytecode; + +import static org.junit.Assert.assertEquals; + +import java.util.HashMap; + +public class SignatureAttributeTest { + void test1() { + final String signature = "TX;TY;La/b/C$D$E$J$K;"; //a sequence of three ReferenceTypeSignature + final HashMap<String, String> map = new HashMap<>(); + map.put("a/b/C$D$E$J$K", "o/p/Q$R$S$T$U"); + map.put("e/F$G$H$I", "v/W$X$Y$Z"); + final String signatureRenamed = SignatureAttribute.renameClass(signature, map); + assertEquals("TX;TY;Lo/p/Q$R$S$T$U;", signatureRenamed); + } + + void test2() { + final String signature = "La/b/C<TA;TB;>.D<Ljava/lang/Integer;>;"; //a ClassTypeSignature + final HashMap<String, String> map = new HashMap<>(); + map.put("a/b/C$D", "o/p/Q$R"); + map.put("java/lang/Integer", "java/lang/Long"); + final String signatureRenamed = SignatureAttribute.renameClass(signature, map); + assertEquals("Lo/p/Q<TA;TB;>.R<Ljava/lang/Long;>;", signatureRenamed); + } + + void test3() { + final String signature = "BJLB<TX;Lc/D$E;>.F<TY;>;TZ;"; //a sequence of four JavaTypeSignature + final HashMap<String, String> map = new HashMap<>(); + map.put("B$F", "P$T"); + map.put("c/D$E", "q/R$S"); + final String signatureRenamed = SignatureAttribute.renameClass(signature, map); + assertEquals("BJLP<TX;Lq/R$S;>.T<TY;>;TZ;", signatureRenamed); + } + + void test4() { + final String signature = "La/b/C<TX;>;[[Ld/E<+TY;-Ljava/lang/Object;*>;Z"; //a sequence of three JavaTypeSignature + final HashMap<String, String> map = new HashMap<>(); + map.put("java/lang/Object", "java/util/Map"); + map.put("d/E", "F"); + final String signatureRenamed = SignatureAttribute.renameClass(signature, map); + assertEquals("La/b/C<TX;>;[[LF<+TY;-Ljava/util/Map;*>;Z", signatureRenamed); + } + + void test5() { + final String signature = "La/b/C$D$E<TX;Le/F$G<TY;TZ;>.H$I<TU;TV;>;>.J$K;"; //a ClassTypeSignature + final HashMap<String, String> map = new HashMap<>(); + map.put("a/b/C$D$E$J$K", "o/p/Q$R$S$T$U"); + map.put("e/F$G$H$I", "v/W$X$Y$Z"); + final String signatureRenamed = SignatureAttribute.renameClass(signature, map); + assertEquals("Lo/p/Q$R$S<TX;Lv/W$X<TY;TZ;>.Y$Z<TU;TV;>;>.T$U;", signatureRenamed); + } + + void test6() { + final String signature = "<X:La/B$C<TY;>.D<TZ;>;:Le/F$G;>Lh/I$J;"; //a ClassSignature + final HashMap<String, String> map = new HashMap<>(); + map.put("a/B$C$D", "o/P$Q$R"); + map.put("e/F$G", "s/T$U"); + map.put("h/I$J", "v/W$X"); + final String signatureRenamed = SignatureAttribute.renameClass(signature, map); + assertEquals("<X:Lo/P$Q<TY;>.R<TZ;>;:Ls/T$U;>Lv/W$X;", signatureRenamed); + } + + void test7() { + 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 + final HashMap<String, String> map = new HashMap<>(); + map.put("A", "P"); + map.put("a/B$C", "s/T$U"); + map.put("d/E$F", "v/W$X"); + map.put("X", "V"); + map.put("java/lang/Exception", "java/lang/RuntimeException"); + final String signatureRenamed = SignatureAttribute.renameClass(signature, map); + assertEquals("<A:Ls/T$U;:Lv/W<TX;>.X<TY;>;:TZ;B:Ljava/lang/Thread;>(LV;TA;LP;)V^Ljava/lang/RuntimeException;", signatureRenamed); + } + + public static void main(String[] s) { + new SignatureAttributeTest().test1(); + new SignatureAttributeTest().test2(); + new SignatureAttributeTest().test3(); + new SignatureAttributeTest().test4(); + new SignatureAttributeTest().test5(); + new SignatureAttributeTest().test6(); + new SignatureAttributeTest().test7(); + } +} |