View Javadoc

1   package io.atlassian.fugue;
2   
3   import org.hamcrest.Matcher;
4   import org.hamcrest.Matchers;
5   import org.junit.Test;
6   
7   import java.util.Arrays;
8   import java.util.Iterator;
9   
10  import static io.atlassian.fugue.Iterables.unzip;
11  import static io.atlassian.fugue.Pair.pair;
12  import static io.atlassian.fugue.Pair.zip;
13  import static org.hamcrest.Matchers.contains;
14  import static org.junit.Assert.assertThat;
15  
16  public class PairsTest {
17    @Test public void zipped() {
18      final Iterable<Integer> ints = Arrays.asList(1, 2, 3);
19      final Iterable<String> strings = Arrays.asList("1", "2", "3", "4");
20      @SuppressWarnings("unchecked")
21      final Matcher<Iterable<? extends Pair<Integer, String>>> contains = contains(pair(1, "1"), pair(2, "2"), pair(3, "3"));
22      assertThat(zip(ints, strings), contains);
23    }
24  
25    @Test public void zippedDiscardsLongest() {
26      final Iterable<Integer> ints = Arrays.asList(1, 2, 3, 4, 5);
27      final Iterable<String> strings = Arrays.asList("1", "2", "3");
28      assertThat(zip(ints, strings), Matchers.<Pair<Integer, String>> iterableWithSize(3));
29    }
30  
31    @Test(expected = UnsupportedOperationException.class) public void zippedUnmodifiable() {
32      final Iterable<Integer> ints = Arrays.asList(1, 2, 3, 4, 5);
33      final Iterable<String> strings = Arrays.asList("1", "2", "3");
34      final Iterator<Pair<Integer, String>> zip = zip(ints, strings).iterator();
35      zip.next();
36      zip.remove();
37    }
38  
39    @Test public void unzipLeft() {
40      final Iterable<Pair<Integer, String>> pairs = Arrays.asList(pair(1, "1"), pair(2, "2"), pair(3, "3"), pair(4, "4"));
41      final Pair<Iterable<Integer>, Iterable<String>> ls = unzip(pairs);
42      assertThat(ls.left(), contains(1, 2, 3, 4));
43    }
44  
45    @Test public void unzipRight() {
46      final Iterable<Pair<Integer, String>> pairs = Arrays.asList(pair(1, "1"), pair(2, "2"), pair(3, "3"), pair(4, "4"));
47      final Pair<Iterable<Integer>, Iterable<String>> ls = unzip(pairs);
48      assertThat(ls.right(), contains("1", "2", "3", "4"));
49    }
50  }