diff options
author | Ilpo Ruotsalainen <ilpo.ruotsalainen@oath.com> | 2018-11-30 12:47:29 +0100 |
---|---|---|
committer | Ilpo Ruotsalainen <ilpo.ruotsalainen@oath.com> | 2018-11-30 12:47:29 +0100 |
commit | da803bcc136708e1bade0f77c87c7dfef1d887db (patch) | |
tree | e9bf4e9dde94ab62e607b8b92fe7dfb532847c37 /abi-check-plugin | |
parent | 41583d401931e37af7d2b293d7d353e6cfae8b90 (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.java | 89 |
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"); + } +} |