diff options
author | Ilpo Ruotsalainen <ilpo.ruotsalainen@oath.com> | 2018-11-30 17:36:25 +0100 |
---|---|---|
committer | Ilpo Ruotsalainen <ilpo.ruotsalainen@oath.com> | 2018-11-30 17:36:25 +0100 |
commit | e871b324d74f1bd1f2da580dd8cad3ea9b28ae43 (patch) | |
tree | cdd3b5c12fa034b39c698a6380423ff3923355c0 /abi-check-plugin/src/test | |
parent | 17e253beea8436a2952ca5104fddde2699f042e9 (diff) |
Add more unit tests.
Diffstat (limited to 'abi-check-plugin/src/test')
-rw-r--r-- | abi-check-plugin/src/test/java/com/yahoo/abicheck/mojo/AbiCheckTest.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/abi-check-plugin/src/test/java/com/yahoo/abicheck/mojo/AbiCheckTest.java b/abi-check-plugin/src/test/java/com/yahoo/abicheck/mojo/AbiCheckTest.java index 57fc607346c..4de6f186800 100644 --- a/abi-check-plugin/src/test/java/com/yahoo/abicheck/mojo/AbiCheckTest.java +++ b/abi-check-plugin/src/test/java/com/yahoo/abicheck/mojo/AbiCheckTest.java @@ -3,8 +3,10 @@ package com.yahoo.abicheck.mojo; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import com.google.common.collect.ImmutableMap; import com.yahoo.abicheck.Public; import com.yahoo.abicheck.classtree.ClassFileTree; import com.yahoo.abicheck.signature.JavaClassSignature; @@ -12,6 +14,7 @@ import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.Map; +import org.apache.maven.plugin.logging.Log; import org.junit.jupiter.api.Test; import root.Root; import root.sub.Sub; @@ -57,4 +60,48 @@ public class AbiCheckTest { // PublicSignatureCollectorTest verifies actual signatures, no need to duplicate here } + + @Test + public void testCompareSignatures() { + Log log = mock(Log.class); + + JavaClassSignature signatureA = new JavaClassSignature( + "java.lang.Object", + Collections.emptySet(), + Collections.singletonList("public"), + Collections.singleton("public void foo()"), + Collections.singleton("public int bar")); + JavaClassSignature signatureB = new JavaClassSignature( + "java.lang.Exception", + Collections.singleton("java.lang.Runnable"), + Collections.singletonList("protected"), + Collections.singleton("public void foo(int)"), + Collections.singleton("public boolean bar")); + + Map<String, JavaClassSignature> expected = ImmutableMap.<String, JavaClassSignature>builder() + .put("test.Missing", signatureA) + .put("test.A", signatureA) + .put("test.B", signatureB) + .build(); + + Map<String, JavaClassSignature> actual = ImmutableMap.<String, JavaClassSignature>builder() + .put("test.A", signatureA) + .put("test.Extra", signatureA) + .put("test.B", signatureA) + .build(); + + assertThat(AbiCheck.compareSignatures(expected, actual, log), equalTo(false)); + + verify(log).error("Missing class: test.Missing"); + verify(log).error("Extra class: test.Extra"); + verify(log) + .error("Class test.B: Expected superclass java.lang.Exception, found java.lang.Object"); + verify(log).error("Class test.B: Missing interface java.lang.Runnable"); + verify(log).error("Class test.B: Missing attribute protected"); + verify(log).error("Class test.B: Extra attribute public"); + verify(log).error("Class test.B: Missing method public void foo(int)"); + verify(log).error("Class test.B: Extra method public void foo()"); + verify(log).error("Class test.B: Missing field public boolean bar"); + verify(log).error("Class test.B: Extra field public int bar"); + } } |