From e871b324d74f1bd1f2da580dd8cad3ea9b28ae43 Mon Sep 17 00:00:00 2001 From: Ilpo Ruotsalainen Date: Fri, 30 Nov 2018 17:36:25 +0100 Subject: Add more unit tests. --- .../java/com/yahoo/abicheck/mojo/AbiCheckTest.java | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'abi-check-plugin/src/test') 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 expected = ImmutableMap.builder() + .put("test.Missing", signatureA) + .put("test.A", signatureA) + .put("test.B", signatureB) + .build(); + + Map actual = ImmutableMap.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"); + } } -- cgit v1.2.3