aboutsummaryrefslogtreecommitdiffstats
path: root/abi-check-plugin
diff options
context:
space:
mode:
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");
+ }
+}