From 98206bd41d1b5bfe2e691d2bdf2b1c6abb742022 Mon Sep 17 00:00:00 2001 From: Ilpo Ruotsalainen Date: Thu, 29 Nov 2018 16:04:50 +0100 Subject: Add test for PublicSignatureCollector. --- .../abicheck/PublicSignatureCollectorTest.java | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 abi-check-plugin/src/test/java/com/yahoo/abicheck/PublicSignatureCollectorTest.java (limited to 'abi-check-plugin/src') diff --git a/abi-check-plugin/src/test/java/com/yahoo/abicheck/PublicSignatureCollectorTest.java b/abi-check-plugin/src/test/java/com/yahoo/abicheck/PublicSignatureCollectorTest.java new file mode 100644 index 00000000000..784a81de50c --- /dev/null +++ b/abi-check-plugin/src/test/java/com/yahoo/abicheck/PublicSignatureCollectorTest.java @@ -0,0 +1,92 @@ +package com.yahoo.abicheck; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.equalTo; + +import com.yahoo.abicheck.collector.PublicSignatureCollector; +import com.yahoo.abicheck.signature.JavaClassSignature; +import java.io.IOException; +import java.util.Map; +import java.util.function.Function; +import org.junit.jupiter.api.Test; +import org.objectweb.asm.ClassReader; + +public class PublicSignatureCollectorTest { + + @Test + public void testCollection() throws IOException { + String testClassName = "com.yahoo.abicheck.PublicSignatureCollectorTest$TestClass"; + ClassReader r = new ClassReader(testClassName); + PublicSignatureCollector collector = new PublicSignatureCollector(); + r.accept(collector, 0); + + Map signatures = collector.getClassSignatures(); + assertThat(signatures.size(), equalTo(1)); + JavaClassSignature s = signatures.get(testClassName); + assertThat(s.superClass, equalTo("java.lang.Object")); + assertThat(s.interfaces, + containsInAnyOrder("java.lang.Runnable", "java.util.function.Function")); + assertThat(s.attributes, contains("public")); + assertThat(s.fields, containsInAnyOrder( + "public static int staticPublicField", + "protected static int staticProtectedField", + "public boolean publicField", + "protected boolean protectedField")); + assertThat(s.methods, containsInAnyOrder( + "public void ()", + "public static java.lang.String staticPublicMethod()", + "protected static java.lang.String staticProtectedMethod()", + "public java.lang.Object publicMethod()", + "protected java.lang.Object protectedMethod()", + "public void run()", + "public java.lang.Void apply(java.lang.Void)", + "public bridge synthetic java.lang.Object apply(java.lang.Object)" + )); + } + + public static class TestClass implements Runnable, Function { + + public static int staticPublicField = 1; + protected static int staticProtectedField = 2; + private static int staticPrivateField = 3; + public boolean publicField = true; + protected boolean protectedField = true; + private boolean privateField = true; + + public static String staticPublicMethod() { + return ""; + } + + protected static String staticProtectedMethod() { + return ""; + } + + private static String staticPrivateMethod() { + return ""; + } + + public Object publicMethod() { + return null; + } + + protected Object protectedMethod() { + return null; + } + + private Object privateMethod() { + return null; + } + + @Override + public void run() { + + } + + @Override + public Void apply(Void aVoid) { + return null; + } + } +} -- cgit v1.2.3