aboutsummaryrefslogtreecommitdiffstats
path: root/abi-check-plugin
diff options
context:
space:
mode:
authorIlpo Ruotsalainen <ilpo.ruotsalainen@oath.com>2018-11-30 12:47:29 +0100
committerIlpo Ruotsalainen <ilpo.ruotsalainen@oath.com>2018-11-30 12:47:29 +0100
commitda803bcc136708e1bade0f77c87c7dfef1d887db (patch)
treee9bf4e9dde94ab62e607b8b92fe7dfb532847c37 /abi-check-plugin
parent41583d401931e37af7d2b293d7d353e6cfae8b90 (diff)
Add unit tests for SetMatcher.
Diffstat (limited to 'abi-check-plugin')
-rw-r--r--abi-check-plugin/src/test/java/com/yahoo/abicheck/SetMatcherTest.java89
1 files changed, 89 insertions, 0 deletions
diff --git a/abi-check-plugin/src/test/java/com/yahoo/abicheck/SetMatcherTest.java b/abi-check-plugin/src/test/java/com/yahoo/abicheck/SetMatcherTest.java
new file mode 100644
index 00000000000..37755147fb2
--- /dev/null
+++ b/abi-check-plugin/src/test/java/com/yahoo/abicheck/SetMatcherTest.java
@@ -0,0 +1,89 @@
+package com.yahoo.abicheck;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import com.google.common.collect.ImmutableSet;
+import com.yahoo.abicheck.setmatcher.SetMatcher;
+import java.util.Collections;
+import java.util.Set;
+import java.util.function.Consumer;
+import java.util.function.Predicate;
+import org.junit.jupiter.api.Test;
+
+public class SetMatcherTest {
+
+ @Test
+ public void testMissing() {
+ Set<String> a = ImmutableSet.of("a", "b");
+
+ @SuppressWarnings("unchecked") Consumer<String> missing = mock(Consumer.class);
+ @SuppressWarnings("unchecked") Consumer<String> extra = mock(Consumer.class);
+ @SuppressWarnings("unchecked") Predicate<String> itemsMatch = mock(Predicate.class);
+
+ when(itemsMatch.test("a")).thenReturn(true);
+
+ assertThat(SetMatcher.compare(a, Collections.singleton("a"), itemsMatch, missing, extra),
+ equalTo(false));
+
+ verify(missing, times(1)).accept("b");
+ verify(extra, never()).accept(any());
+ verify(itemsMatch, times(1)).test("a");
+ }
+
+ @Test
+ public void testExtra() {
+ Set<String> a = ImmutableSet.of("a");
+
+ @SuppressWarnings("unchecked") Consumer<String> missing = mock(Consumer.class);
+ @SuppressWarnings("unchecked") Consumer<String> extra = mock(Consumer.class);
+ @SuppressWarnings("unchecked") Predicate<String> itemsMatch = mock(Predicate.class);
+
+ when(itemsMatch.test("a")).thenReturn(true);
+
+ assertThat(SetMatcher.compare(a, ImmutableSet.of("a", "b"), itemsMatch, missing, extra),
+ equalTo(false));
+
+ verify(missing, never()).accept(any());
+ verify(extra, times(1)).accept("b");
+ verify(itemsMatch, times(1)).test("a");
+ }
+
+ @Test
+ public void testItemsMatch() {
+ @SuppressWarnings("unchecked") Consumer<String> missing = mock(Consumer.class);
+ @SuppressWarnings("unchecked") Consumer<String> extra = mock(Consumer.class);
+ @SuppressWarnings("unchecked") Predicate<String> itemsMatch = mock(Predicate.class);
+
+ when(itemsMatch.test("a")).thenReturn(false);
+
+ assertThat(SetMatcher
+ .compare(Collections.singleton("a"), Collections.singleton("a"), itemsMatch, missing,
+ extra), equalTo(false));
+
+ verify(itemsMatch, times(1)).test("a");
+ }
+
+ @Test
+ public void testCompleteMatch() {
+ @SuppressWarnings("unchecked") Consumer<String> missing = mock(Consumer.class);
+ @SuppressWarnings("unchecked") Consumer<String> extra = mock(Consumer.class);
+ @SuppressWarnings("unchecked") Predicate<String> itemsMatch = mock(Predicate.class);
+
+ when(itemsMatch.test("a")).thenReturn(true);
+
+ assertThat(SetMatcher
+ .compare(Collections.singleton("a"), Collections.singleton("a"), itemsMatch, missing,
+ extra), equalTo(true));
+
+ verify(missing, never()).accept(any());
+ verify(extra, never()).accept(any());
+ verify(itemsMatch, times(1)).test("a");
+ }
+}