1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.atlassian.fugue;
17
18 import static io.atlassian.fugue.Iterables.zip;
19 import static io.atlassian.fugue.Iterables.zipWith;
20 import static io.atlassian.fugue.Iterables.zipWithIndex;
21 import static io.atlassian.fugue.Pair.pair;
22 import static java.util.Arrays.asList;
23 import static org.hamcrest.Matchers.contains;
24 import static org.junit.Assert.assertThat;
25
26 import org.hamcrest.Matcher;
27 import org.junit.Test;
28
29 public class IterablesZipTest {
30 @Test public void zipFromLists() {
31 assertThat(zip(asList(4, 3, 2, 1), asList(1, 2, 3, 4)), genericContains(pair(4, 1), pair(3, 2), pair(2, 3), pair(1, 4)));
32 }
33
34 @SuppressWarnings("unchecked") @Test public void zipFromLongerFirstList() {
35 assertThat(zip(asList(4, 2, 3, 1, 12), asList(1, 2, 3, 4)), genericContains(pair(4, 1), pair(2, 2), pair(3, 3), pair(1, 4)));
36 }
37
38 @SuppressWarnings("unchecked") @Test public void zipFromLongerLastList() {
39 assertThat(zip(asList(4, 3, 2, 1), asList(6, 2, 5, 4, 5, 6)), genericContains(pair(4, 6), pair(3, 2), pair(2, 5), pair(1, 4)));
40 }
41
42 @Test public void zipWithFrom() {
43 assertThat(zipWith(UtilityFunctions.product).apply(asList(4, 3, 2, 8), asList(2, 4, 6, 8)), contains(8, 12, 12, 64));
44 }
45
46 @Test public void testZipWithIndex() {
47 @SuppressWarnings("unchecked")
48 final Matcher<Iterable<? extends Pair<String, Integer>>> containsPairs = contains(pair("a", 0), pair("b", 1), pair("c", 2));
49 assertThat(zipWithIndex(asList("a", "b", "c")), containsPairs);
50 }
51
52 @SuppressWarnings("unchecked") @SafeVarargs private final <A> Matcher<Iterable<? extends A>> genericContains(final A... as) {
53 return contains(as);
54 }
55 }