aboutsummaryrefslogtreecommitdiff
path: root/android/guava-tests/test/com/google/common/collect/IterablesTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'android/guava-tests/test/com/google/common/collect/IterablesTest.java')
-rw-r--r--android/guava-tests/test/com/google/common/collect/IterablesTest.java1414
1 files changed, 0 insertions, 1414 deletions
diff --git a/android/guava-tests/test/com/google/common/collect/IterablesTest.java b/android/guava-tests/test/com/google/common/collect/IterablesTest.java
deleted file mode 100644
index 41772100b..000000000
--- a/android/guava-tests/test/com/google/common/collect/IterablesTest.java
+++ /dev/null
@@ -1,1414 +0,0 @@
-/*
- * Copyright (C) 2007 The Guava Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.common.collect;
-
-import static com.google.common.collect.Iterables.skip;
-import static com.google.common.collect.Lists.newArrayList;
-import static com.google.common.collect.Sets.newLinkedHashSet;
-import static com.google.common.collect.testing.IteratorFeature.MODIFIABLE;
-import static com.google.common.collect.testing.IteratorFeature.UNMODIFIABLE;
-import static com.google.common.truth.Truth.assertThat;
-import static java.util.Arrays.asList;
-import static java.util.Collections.emptyList;
-
-import com.google.common.annotations.GwtCompatible;
-import com.google.common.annotations.GwtIncompatible;
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.collect.testing.IteratorTester;
-import com.google.common.testing.ClassSanityTester;
-import com.google.common.testing.NullPointerTester;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Queue;
-import java.util.RandomAccess;
-import java.util.Set;
-import java.util.SortedSet;
-import junit.framework.AssertionFailedError;
-import junit.framework.TestCase;
-
-/**
- * Unit test for {@code Iterables}.
- *
- * @author Kevin Bourrillion
- * @author Jared Levy
- */
-@GwtCompatible(emulated = true)
-public class IterablesTest extends TestCase {
-
- public void testSize0() {
- Iterable<String> iterable = Collections.emptySet();
- assertEquals(0, Iterables.size(iterable));
- }
-
- public void testSize1Collection() {
- Iterable<String> iterable = Collections.singleton("a");
- assertEquals(1, Iterables.size(iterable));
- }
-
- public void testSize2NonCollection() {
- Iterable<Integer> iterable =
- new Iterable<Integer>() {
- @Override
- public Iterator<Integer> iterator() {
- return asList(0, 1).iterator();
- }
- };
- assertEquals(2, Iterables.size(iterable));
- }
-
- @SuppressWarnings("serial")
- public void testSize_collection_doesntIterate() {
- List<Integer> nums = asList(1, 2, 3, 4, 5);
- List<Integer> collection =
- new ArrayList<Integer>(nums) {
- @Override
- public Iterator<Integer> iterator() {
- throw new AssertionFailedError("Don't iterate me!");
- }
- };
- assertEquals(5, Iterables.size(collection));
- }
-
- private static Iterable<String> iterable(String... elements) {
- final List<String> list = asList(elements);
- return new Iterable<String>() {
- @Override
- public Iterator<String> iterator() {
- return list.iterator();
- }
- };
- }
-
- public void test_contains_null_set_yes() {
- Iterable<String> set = Sets.newHashSet("a", null, "b");
- assertTrue(Iterables.contains(set, null));
- }
-
- public void test_contains_null_set_no() {
- Iterable<String> set = Sets.newHashSet("a", "b");
- assertFalse(Iterables.contains(set, null));
- }
-
- public void test_contains_null_iterable_yes() {
- Iterable<String> set = iterable("a", null, "b");
- assertTrue(Iterables.contains(set, null));
- }
-
- public void test_contains_null_iterable_no() {
- Iterable<String> set = iterable("a", "b");
- assertFalse(Iterables.contains(set, null));
- }
-
- public void test_contains_nonnull_set_yes() {
- Iterable<String> set = Sets.newHashSet("a", null, "b");
- assertTrue(Iterables.contains(set, "b"));
- }
-
- public void test_contains_nonnull_set_no() {
- Iterable<String> set = Sets.newHashSet("a", "b");
- assertFalse(Iterables.contains(set, "c"));
- }
-
- public void test_contains_nonnull_iterable_yes() {
- Iterable<String> set = iterable("a", null, "b");
- assertTrue(Iterables.contains(set, "b"));
- }
-
- public void test_contains_nonnull_iterable_no() {
- Iterable<String> set = iterable("a", "b");
- assertFalse(Iterables.contains(set, "c"));
- }
-
- public void testGetOnlyElement_noDefault_valid() {
- Iterable<String> iterable = Collections.singletonList("foo");
- assertEquals("foo", Iterables.getOnlyElement(iterable));
- }
-
- public void testGetOnlyElement_noDefault_empty() {
- Iterable<String> iterable = Collections.emptyList();
- try {
- Iterables.getOnlyElement(iterable);
- fail();
- } catch (NoSuchElementException expected) {
- }
- }
-
- public void testGetOnlyElement_noDefault_multiple() {
- Iterable<String> iterable = asList("foo", "bar");
- try {
- Iterables.getOnlyElement(iterable);
- fail();
- } catch (IllegalArgumentException expected) {
- }
- }
-
- public void testGetOnlyElement_withDefault_singleton() {
- Iterable<String> iterable = Collections.singletonList("foo");
- assertEquals("foo", Iterables.getOnlyElement(iterable, "bar"));
- }
-
- public void testGetOnlyElement_withDefault_empty() {
- Iterable<String> iterable = Collections.emptyList();
- assertEquals("bar", Iterables.getOnlyElement(iterable, "bar"));
- }
-
- public void testGetOnlyElement_withDefault_empty_null() {
- Iterable<String> iterable = Collections.emptyList();
- assertNull(Iterables.getOnlyElement(iterable, null));
- }
-
- public void testGetOnlyElement_withDefault_multiple() {
- Iterable<String> iterable = asList("foo", "bar");
- try {
- Iterables.getOnlyElement(iterable, "x");
- fail();
- } catch (IllegalArgumentException expected) {
- }
- }
-
- @GwtIncompatible // Iterables.toArray(Iterable, Class)
- public void testToArrayEmpty() {
- Iterable<String> iterable = Collections.emptyList();
- String[] array = Iterables.toArray(iterable, String.class);
- assertTrue(Arrays.equals(new String[0], array));
- }
-
- @GwtIncompatible // Iterables.toArray(Iterable, Class)
- public void testToArraySingleton() {
- Iterable<String> iterable = Collections.singletonList("a");
- String[] array = Iterables.toArray(iterable, String.class);
- assertTrue(Arrays.equals(new String[] {"a"}, array));
- }
-
- @GwtIncompatible // Iterables.toArray(Iterable, Class)
- public void testToArray() {
- String[] sourceArray = new String[] {"a", "b", "c"};
- Iterable<String> iterable = asList(sourceArray);
- String[] newArray = Iterables.toArray(iterable, String.class);
- assertTrue(Arrays.equals(sourceArray, newArray));
- }
-
- public void testAny() {
- List<String> list = newArrayList();
- Predicate<String> predicate = Predicates.equalTo("pants");
-
- assertFalse(Iterables.any(list, predicate));
- list.add("cool");
- assertFalse(Iterables.any(list, predicate));
- list.add("pants");
- assertTrue(Iterables.any(list, predicate));
- }
-
- public void testAll() {
- List<String> list = newArrayList();
- Predicate<String> predicate = Predicates.equalTo("cool");
-
- assertTrue(Iterables.all(list, predicate));
- list.add("cool");
- assertTrue(Iterables.all(list, predicate));
- list.add("pants");
- assertFalse(Iterables.all(list, predicate));
- }
-
- public void testFind() {
- Iterable<String> list = newArrayList("cool", "pants");
- assertEquals("cool", Iterables.find(list, Predicates.equalTo("cool")));
- assertEquals("pants", Iterables.find(list, Predicates.equalTo("pants")));
- try {
- Iterables.find(list, Predicates.alwaysFalse());
- fail();
- } catch (NoSuchElementException e) {
- }
- assertEquals("cool", Iterables.find(list, Predicates.alwaysTrue()));
- assertCanIterateAgain(list);
- }
-
- public void testFind_withDefault() {
- Iterable<String> list = Lists.newArrayList("cool", "pants");
- assertEquals("cool", Iterables.find(list, Predicates.equalTo("cool"), "woot"));
- assertEquals("pants", Iterables.find(list, Predicates.equalTo("pants"), "woot"));
- assertEquals("woot", Iterables.find(list, Predicates.alwaysFalse(), "woot"));
- assertNull(Iterables.find(list, Predicates.alwaysFalse(), null));
- assertEquals("cool", Iterables.find(list, Predicates.alwaysTrue(), "woot"));
- assertCanIterateAgain(list);
- }
-
- public void testTryFind() {
- Iterable<String> list = newArrayList("cool", "pants");
- assertThat(Iterables.tryFind(list, Predicates.equalTo("cool"))).hasValue("cool");
- assertThat(Iterables.tryFind(list, Predicates.equalTo("pants"))).hasValue("pants");
- assertThat(Iterables.tryFind(list, Predicates.alwaysTrue())).hasValue("cool");
- assertThat(Iterables.tryFind(list, Predicates.alwaysFalse())).isAbsent();
- assertCanIterateAgain(list);
- }
-
- private static class TypeA {}
-
- private interface TypeB {}
-
- private static class HasBoth extends TypeA implements TypeB {}
-
- @GwtIncompatible // Iterables.filter(Iterable, Class)
- public void testFilterByType_iterator() throws Exception {
- HasBoth hasBoth = new HasBoth();
- Iterable<TypeA> alist = Lists.newArrayList(new TypeA(), new TypeA(), hasBoth, new TypeA());
- Iterable<TypeB> blist = Iterables.filter(alist, TypeB.class);
- assertThat(blist).containsExactly(hasBoth).inOrder();
- }
-
- public void testTransform_iterator() {
- List<String> input = asList("1", "2", "3");
- Iterable<Integer> result =
- Iterables.transform(
- input,
- new Function<String, Integer>() {
- @Override
- public Integer apply(String from) {
- return Integer.valueOf(from);
- }
- });
-
- List<Integer> actual = newArrayList(result);
- List<Integer> expected = asList(1, 2, 3);
- assertEquals(expected, actual);
- assertCanIterateAgain(result);
- assertEquals("[1, 2, 3]", result.toString());
- }
-
- public void testPoorlyBehavedTransform() {
- List<String> input = asList("1", null, "3");
- Iterable<Integer> result =
- Iterables.transform(
- input,
- new Function<String, Integer>() {
- @Override
- public Integer apply(String from) {
- return Integer.valueOf(from);
- }
- });
-
- Iterator<Integer> resultIterator = result.iterator();
- resultIterator.next();
-
- try {
- resultIterator.next();
- fail("Expected NFE");
- } catch (NumberFormatException expected) {
- }
- }
-
- public void testNullFriendlyTransform() {
- List<Integer> input = asList(1, 2, null, 3);
- Iterable<String> result =
- Iterables.transform(
- input,
- new Function<Integer, String>() {
- @Override
- public String apply(Integer from) {
- return String.valueOf(from);
- }
- });
-
- List<String> actual = newArrayList(result);
- List<String> expected = asList("1", "2", "null", "3");
- assertEquals(expected, actual);
- }
-
- // Far less exhaustive than the tests in IteratorsTest
- public void testCycle() {
- Iterable<String> cycle = Iterables.cycle("a", "b");
-
- int howManyChecked = 0;
- for (String string : cycle) {
- String expected = (howManyChecked % 2 == 0) ? "a" : "b";
- assertEquals(expected, string);
- if (howManyChecked++ == 5) {
- break;
- }
- }
-
- // We left the last iterator pointing to "b". But a new iterator should
- // always point to "a".
- for (String string : cycle) {
- assertEquals("a", string);
- break;
- }
-
- assertEquals("[a, b] (cycled)", cycle.toString());
- }
-
- // Again, the exhaustive tests are in IteratorsTest
- public void testConcatIterable() {
- List<Integer> list1 = newArrayList(1);
- List<Integer> list2 = newArrayList(4);
-
- @SuppressWarnings("unchecked")
- List<List<Integer>> input = newArrayList(list1, list2);
-
- Iterable<Integer> result = Iterables.concat(input);
- assertEquals(asList(1, 4), newArrayList(result));
-
- // Now change the inputs and see result dynamically change as well
-
- list1.add(2);
- List<Integer> list3 = newArrayList(3);
- input.add(1, list3);
-
- assertEquals(asList(1, 2, 3, 4), newArrayList(result));
- assertEquals("[1, 2, 3, 4]", result.toString());
- }
-
- public void testConcatVarargs() {
- List<Integer> list1 = newArrayList(1);
- List<Integer> list2 = newArrayList(4);
- List<Integer> list3 = newArrayList(7, 8);
- List<Integer> list4 = newArrayList(9);
- List<Integer> list5 = newArrayList(10);
- @SuppressWarnings("unchecked")
- Iterable<Integer> result = Iterables.concat(list1, list2, list3, list4, list5);
- assertEquals(asList(1, 4, 7, 8, 9, 10), newArrayList(result));
- assertEquals("[1, 4, 7, 8, 9, 10]", result.toString());
- }
-
- public void testConcatNullPointerException() {
- List<Integer> list1 = newArrayList(1);
- List<Integer> list2 = newArrayList(4);
-
- try {
- Iterables.concat(list1, null, list2);
- fail();
- } catch (NullPointerException expected) {
- }
- }
-
- public void testConcatPeformingFiniteCycle() {
- Iterable<Integer> iterable = asList(1, 2, 3);
- int n = 4;
- Iterable<Integer> repeated = Iterables.concat(Collections.nCopies(n, iterable));
- assertThat(repeated).containsExactly(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3).inOrder();
- }
-
- public void testPartition_badSize() {
- Iterable<Integer> source = Collections.singleton(1);
- try {
- Iterables.partition(source, 0);
- fail();
- } catch (IllegalArgumentException expected) {
- }
- }
-
- public void testPartition_empty() {
- Iterable<Integer> source = Collections.emptySet();
- Iterable<List<Integer>> partitions = Iterables.partition(source, 1);
- assertTrue(Iterables.isEmpty(partitions));
- }
-
- public void testPartition_singleton1() {
- Iterable<Integer> source = Collections.singleton(1);
- Iterable<List<Integer>> partitions = Iterables.partition(source, 1);
- assertEquals(1, Iterables.size(partitions));
- assertEquals(Collections.singletonList(1), partitions.iterator().next());
- }
-
- public void testPartition_view() {
- List<Integer> list = asList(1, 2);
- Iterable<List<Integer>> partitions = Iterables.partition(list, 2);
-
- // Changes before the partition is retrieved are reflected
- list.set(0, 3);
-
- Iterator<List<Integer>> iterator = partitions.iterator();
-
- // Changes before the partition is retrieved are reflected
- list.set(1, 4);
-
- List<Integer> first = iterator.next();
-
- // Changes after are not
- list.set(0, 5);
-
- assertEquals(ImmutableList.of(3, 4), first);
- }
-
- @GwtIncompatible // ?
- // TODO: Figure out why this is failing in GWT.
- public void testPartitionRandomAccessInput() {
- Iterable<Integer> source = asList(1, 2, 3);
- Iterable<List<Integer>> partitions = Iterables.partition(source, 2);
- Iterator<List<Integer>> iterator = partitions.iterator();
- assertTrue(iterator.next() instanceof RandomAccess);
- assertTrue(iterator.next() instanceof RandomAccess);
- }
-
- @GwtIncompatible // ?
- // TODO: Figure out why this is failing in GWT.
- public void testPartitionNonRandomAccessInput() {
- Iterable<Integer> source = Lists.newLinkedList(asList(1, 2, 3));
- Iterable<List<Integer>> partitions = Iterables.partition(source, 2);
- Iterator<List<Integer>> iterator = partitions.iterator();
- // Even though the input list doesn't implement RandomAccess, the output
- // lists do.
- assertTrue(iterator.next() instanceof RandomAccess);
- assertTrue(iterator.next() instanceof RandomAccess);
- }
-
- public void testPaddedPartition_basic() {
- List<Integer> list = asList(1, 2, 3, 4, 5);
- Iterable<List<Integer>> partitions = Iterables.paddedPartition(list, 2);
- assertEquals(3, Iterables.size(partitions));
- assertEquals(asList(5, null), Iterables.getLast(partitions));
- }
-
- public void testPaddedPartitionRandomAccessInput() {
- Iterable<Integer> source = asList(1, 2, 3);
- Iterable<List<Integer>> partitions = Iterables.paddedPartition(source, 2);
- Iterator<List<Integer>> iterator = partitions.iterator();
- assertTrue(iterator.next() instanceof RandomAccess);
- assertTrue(iterator.next() instanceof RandomAccess);
- }
-
- public void testPaddedPartitionNonRandomAccessInput() {
- Iterable<Integer> source = Lists.newLinkedList(asList(1, 2, 3));
- Iterable<List<Integer>> partitions = Iterables.paddedPartition(source, 2);
- Iterator<List<Integer>> iterator = partitions.iterator();
- // Even though the input list doesn't implement RandomAccess, the output
- // lists do.
- assertTrue(iterator.next() instanceof RandomAccess);
- assertTrue(iterator.next() instanceof RandomAccess);
- }
-
- // More tests in IteratorsTest
- public void testAddAllToList() {
- List<String> alreadyThere = newArrayList("already", "there");
- List<String> freshlyAdded = newArrayList("freshly", "added");
-
- boolean changed = Iterables.addAll(alreadyThere, freshlyAdded);
- assertThat(alreadyThere).containsExactly("already", "there", "freshly", "added").inOrder();
- assertTrue(changed);
- }
-
- private static void assertCanIterateAgain(Iterable<?> iterable) {
- for (@SuppressWarnings("unused") Object obj : iterable) {}
- }
-
- @GwtIncompatible // NullPointerTester
- public void testNullPointerExceptions() {
- NullPointerTester tester = new NullPointerTester();
- tester.testAllPublicStaticMethods(Iterables.class);
- }
-
- // More exhaustive tests are in IteratorsTest.
- public void testElementsEqual() throws Exception {
- Iterable<?> a;
- Iterable<?> b;
-
- // A few elements.
- a = asList(4, 8, 15, 16, 23, 42);
- b = asList(4, 8, 15, 16, 23, 42);
- assertTrue(Iterables.elementsEqual(a, b));
-
- // An element differs.
- a = asList(4, 8, 15, 12, 23, 42);
- b = asList(4, 8, 15, 16, 23, 42);
- assertFalse(Iterables.elementsEqual(a, b));
-
- // null versus non-null.
- a = asList(4, 8, 15, null, 23, 42);
- b = asList(4, 8, 15, 16, 23, 42);
- assertFalse(Iterables.elementsEqual(a, b));
- assertFalse(Iterables.elementsEqual(b, a));
-
- // Different lengths.
- a = asList(4, 8, 15, 16, 23);
- b = asList(4, 8, 15, 16, 23, 42);
- assertFalse(Iterables.elementsEqual(a, b));
- assertFalse(Iterables.elementsEqual(b, a));
- }
-
- public void testToString() {
- List<String> list = Collections.emptyList();
- assertEquals("[]", Iterables.toString(list));
-
- list = newArrayList("yam", "bam", "jam", "ham");
- assertEquals("[yam, bam, jam, ham]", Iterables.toString(list));
- }
-
- public void testLimit() {
- Iterable<String> iterable = newArrayList("foo", "bar", "baz");
- Iterable<String> limited = Iterables.limit(iterable, 2);
-
- List<String> expected = ImmutableList.of("foo", "bar");
- List<String> actual = newArrayList(limited);
- assertEquals(expected, actual);
- assertCanIterateAgain(limited);
- assertEquals("[foo, bar]", limited.toString());
- }
-
- public void testLimit_illegalArgument() {
- List<String> list = newArrayList("a", "b", "c");
- try {
- Iterables.limit(list, -1);
- fail();
- } catch (IllegalArgumentException expected) {
- }
- }
-
- public void testIsEmpty() {
- Iterable<String> emptyList = Collections.emptyList();
- assertTrue(Iterables.isEmpty(emptyList));
-
- Iterable<String> singletonList = Collections.singletonList("foo");
- assertFalse(Iterables.isEmpty(singletonList));
- }
-
- public void testSkip_simple() {
- Collection<String> set = ImmutableSet.of("a", "b", "c", "d", "e");
- assertEquals(newArrayList("c", "d", "e"), newArrayList(skip(set, 2)));
- assertEquals("[c, d, e]", skip(set, 2).toString());
- }
-
- public void testSkip_simpleList() {
- Collection<String> list = newArrayList("a", "b", "c", "d", "e");
- assertEquals(newArrayList("c", "d", "e"), newArrayList(skip(list, 2)));
- assertEquals("[c, d, e]", skip(list, 2).toString());
- }
-
- public void testSkip_pastEnd() {
- Collection<String> set = ImmutableSet.of("a", "b");
- assertEquals(emptyList(), newArrayList(skip(set, 20)));
- }
-
- public void testSkip_pastEndList() {
- Collection<String> list = newArrayList("a", "b");
- assertEquals(emptyList(), newArrayList(skip(list, 20)));
- }
-
- public void testSkip_skipNone() {
- Collection<String> set = ImmutableSet.of("a", "b");
- assertEquals(newArrayList("a", "b"), newArrayList(skip(set, 0)));
- }
-
- public void testSkip_skipNoneList() {
- Collection<String> list = newArrayList("a", "b");
- assertEquals(newArrayList("a", "b"), newArrayList(skip(list, 0)));
- }
-
- public void testSkip_removal() {
- Collection<String> set = Sets.newHashSet("a", "b");
- Iterator<String> iterator = skip(set, 2).iterator();
- try {
- iterator.next();
- } catch (NoSuchElementException suppressed) {
- // We want remove() to fail even after a failed call to next().
- }
- try {
- iterator.remove();
- fail("Expected IllegalStateException");
- } catch (IllegalStateException expected) {
- }
- }
-
- public void testSkip_allOfMutableList_modifiable() {
- List<String> list = newArrayList("a", "b");
- Iterator<String> iterator = skip(list, 2).iterator();
- try {
- iterator.remove();
- fail("Expected IllegalStateException");
- } catch (IllegalStateException expected) {
- }
- }
-
- public void testSkip_allOfImmutableList_modifiable() {
- List<String> list = ImmutableList.of("a", "b");
- Iterator<String> iterator = skip(list, 2).iterator();
- try {
- iterator.remove();
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException expected) {
- }
- }
-
- @GwtIncompatible // slow (~35s)
- public void testSkip_iterator() {
- new IteratorTester<Integer>(
- 5, MODIFIABLE, newArrayList(2, 3), IteratorTester.KnownOrder.KNOWN_ORDER) {
- @Override
- protected Iterator<Integer> newTargetIterator() {
- return skip(newLinkedHashSet(asList(1, 2, 3)), 1).iterator();
- }
- }.test();
- }
-
- @GwtIncompatible // slow (~35s)
- public void testSkip_iteratorList() {
- new IteratorTester<Integer>(
- 5, MODIFIABLE, newArrayList(2, 3), IteratorTester.KnownOrder.KNOWN_ORDER) {
- @Override
- protected Iterator<Integer> newTargetIterator() {
- return skip(newArrayList(1, 2, 3), 1).iterator();
- }
- }.test();
- }
-
- public void testSkip_nonStructurallyModifiedList() throws Exception {
- List<String> list = newArrayList("a", "b", "c");
- Iterable<String> tail = skip(list, 1);
- Iterator<String> tailIterator = tail.iterator();
- list.set(2, "C");
- assertEquals("b", tailIterator.next());
- assertEquals("C", tailIterator.next());
- assertFalse(tailIterator.hasNext());
- }
-
- public void testSkip_structurallyModifiedSkipSome() throws Exception {
- Collection<String> set = newLinkedHashSet(asList("a", "b", "c"));
- Iterable<String> tail = skip(set, 1);
- set.remove("b");
- set.addAll(newArrayList("A", "B", "C"));
- assertThat(tail).containsExactly("c", "A", "B", "C").inOrder();
- }
-
- public void testSkip_structurallyModifiedSkipSomeList() throws Exception {
- List<String> list = newArrayList("a", "b", "c");
- Iterable<String> tail = skip(list, 1);
- list.subList(1, 3).clear();
- list.addAll(0, newArrayList("A", "B", "C"));
- assertThat(tail).containsExactly("B", "C", "a").inOrder();
- }
-
- public void testSkip_structurallyModifiedSkipAll() throws Exception {
- Collection<String> set = newLinkedHashSet(asList("a", "b", "c"));
- Iterable<String> tail = skip(set, 2);
- set.remove("a");
- set.remove("b");
- assertFalse(tail.iterator().hasNext());
- }
-
- public void testSkip_structurallyModifiedSkipAllList() throws Exception {
- List<String> list = newArrayList("a", "b", "c");
- Iterable<String> tail = skip(list, 2);
- list.subList(0, 2).clear();
- assertTrue(Iterables.isEmpty(tail));
- }
-
- public void testSkip_illegalArgument() {
- List<String> list = newArrayList("a", "b", "c");
- try {
- skip(list, -1);
- fail();
- } catch (IllegalArgumentException expected) {
- }
- }
-
- private void testGetOnAbc(Iterable<String> iterable) {
- try {
- Iterables.get(iterable, -1);
- fail();
- } catch (IndexOutOfBoundsException expected) {
- }
- assertEquals("a", Iterables.get(iterable, 0));
- assertEquals("b", Iterables.get(iterable, 1));
- assertEquals("c", Iterables.get(iterable, 2));
- try {
- Iterables.get(iterable, 3);
- fail();
- } catch (IndexOutOfBoundsException nsee) {
- }
- try {
- Iterables.get(iterable, 4);
- fail();
- } catch (IndexOutOfBoundsException nsee) {
- }
- }
-
- private void testGetOnEmpty(Iterable<String> iterable) {
- try {
- Iterables.get(iterable, 0);
- fail();
- } catch (IndexOutOfBoundsException expected) {
- }
- }
-
- public void testGet_list() {
- testGetOnAbc(newArrayList("a", "b", "c"));
- }
-
- public void testGet_emptyList() {
- testGetOnEmpty(Collections.<String>emptyList());
- }
-
- public void testGet_sortedSet() {
- testGetOnAbc(ImmutableSortedSet.of("b", "c", "a"));
- }
-
- public void testGet_emptySortedSet() {
- testGetOnEmpty(ImmutableSortedSet.<String>of());
- }
-
- public void testGet_iterable() {
- testGetOnAbc(ImmutableSet.of("a", "b", "c"));
- }
-
- public void testGet_emptyIterable() {
- testGetOnEmpty(Sets.<String>newHashSet());
- }
-
- public void testGet_withDefault_negativePosition() {
- try {
- Iterables.get(newArrayList("a", "b", "c"), -1, "d");
- fail();
- } catch (IndexOutOfBoundsException expected) {
- // pass
- }
- }
-
- public void testGet_withDefault_simple() {
- ArrayList<String> list = newArrayList("a", "b", "c");
- assertEquals("b", Iterables.get(list, 1, "d"));
- }
-
- public void testGet_withDefault_iterable() {
- Set<String> set = ImmutableSet.of("a", "b", "c");
- assertEquals("b", Iterables.get(set, 1, "d"));
- }
-
- public void testGet_withDefault_last() {
- ArrayList<String> list = newArrayList("a", "b", "c");
- assertEquals("c", Iterables.get(list, 2, "d"));
- }
-
- public void testGet_withDefault_lastPlusOne() {
- ArrayList<String> list = newArrayList("a", "b", "c");
- assertEquals("d", Iterables.get(list, 3, "d"));
- }
-
- public void testGet_withDefault_doesntIterate() {
- List<String> list = new DiesOnIteratorArrayList();
- list.add("a");
- assertEquals("a", Iterables.get(list, 0, "b"));
- }
-
- public void testGetFirst_withDefault_singleton() {
- Iterable<String> iterable = Collections.singletonList("foo");
- assertEquals("foo", Iterables.getFirst(iterable, "bar"));
- }
-
- public void testGetFirst_withDefault_empty() {
- Iterable<String> iterable = Collections.emptyList();
- assertEquals("bar", Iterables.getFirst(iterable, "bar"));
- }
-
- public void testGetFirst_withDefault_empty_null() {
- Iterable<String> iterable = Collections.emptyList();
- assertNull(Iterables.getFirst(iterable, null));
- }
-
- public void testGetFirst_withDefault_multiple() {
- Iterable<String> iterable = asList("foo", "bar");
- assertEquals("foo", Iterables.getFirst(iterable, "qux"));
- }
-
- public void testGetLast_list() {
- List<String> list = newArrayList("a", "b", "c");
- assertEquals("c", Iterables.getLast(list));
- }
-
- public void testGetLast_emptyList() {
- List<String> list = Collections.emptyList();
- try {
- Iterables.getLast(list);
- fail();
- } catch (NoSuchElementException e) {
- }
- }
-
- public void testGetLast_sortedSet() {
- SortedSet<String> sortedSet = ImmutableSortedSet.of("b", "c", "a");
- assertEquals("c", Iterables.getLast(sortedSet));
- }
-
- public void testGetLast_withDefault_singleton() {
- Iterable<String> iterable = Collections.singletonList("foo");
- assertEquals("foo", Iterables.getLast(iterable, "bar"));
- }
-
- public void testGetLast_withDefault_empty() {
- Iterable<String> iterable = Collections.emptyList();
- assertEquals("bar", Iterables.getLast(iterable, "bar"));
- }
-
- public void testGetLast_withDefault_empty_null() {
- Iterable<String> iterable = Collections.emptyList();
- assertNull(Iterables.getLast(iterable, null));
- }
-
- public void testGetLast_withDefault_multiple() {
- Iterable<String> iterable = asList("foo", "bar");
- assertEquals("bar", Iterables.getLast(iterable, "qux"));
- }
-
- /**
- * {@link ArrayList} extension that forbids the use of {@link Collection#iterator} for tests that
- * need to prove that it isn't called.
- */
- private static class DiesOnIteratorArrayList extends ArrayList<String> {
- /** @throws UnsupportedOperationException all the time */
- @Override
- public Iterator<String> iterator() {
- throw new UnsupportedOperationException();
- }
- }
-
- public void testGetLast_withDefault_not_empty_list() {
- // TODO: verify that this is the best testing strategy.
- List<String> diesOnIteratorList = new DiesOnIteratorArrayList();
- diesOnIteratorList.add("bar");
-
- assertEquals("bar", Iterables.getLast(diesOnIteratorList, "qux"));
- }
-
- public void testGetLast_emptySortedSet() {
- SortedSet<String> sortedSet = ImmutableSortedSet.of();
- try {
- Iterables.getLast(sortedSet);
- fail();
- } catch (NoSuchElementException e) {
- }
- }
-
- public void testGetLast_iterable() {
- Set<String> set = ImmutableSet.of("a", "b", "c");
- assertEquals("c", Iterables.getLast(set));
- }
-
- public void testGetLast_emptyIterable() {
- Set<String> set = Sets.newHashSet();
- try {
- Iterables.getLast(set);
- fail();
- } catch (NoSuchElementException e) {
- }
- }
-
- public void testUnmodifiableIterable() {
- List<String> list = newArrayList("a", "b", "c");
- Iterable<String> iterable = Iterables.unmodifiableIterable(list);
- Iterator<String> iterator = iterable.iterator();
- iterator.next();
- try {
- iterator.remove();
- fail();
- } catch (UnsupportedOperationException expected) {
- }
- assertEquals("[a, b, c]", iterable.toString());
- }
-
- @SuppressWarnings("deprecation") // test of deprecated method
- public void testUnmodifiableIterableShortCircuit() {
- List<String> list = newArrayList("a", "b", "c");
- Iterable<String> iterable = Iterables.unmodifiableIterable(list);
- Iterable<String> iterable2 = Iterables.unmodifiableIterable(iterable);
- assertSame(iterable, iterable2);
- ImmutableList<String> immutableList = ImmutableList.of("a", "b", "c");
- assertSame(immutableList, Iterables.unmodifiableIterable(immutableList));
- assertSame(immutableList, Iterables.unmodifiableIterable((List<String>) immutableList));
- }
-
- public void testFrequency_multiset() {
- Multiset<String> multiset = ImmutableMultiset.of("a", "b", "a", "c", "b", "a");
- assertEquals(3, Iterables.frequency(multiset, "a"));
- assertEquals(2, Iterables.frequency(multiset, "b"));
- assertEquals(1, Iterables.frequency(multiset, "c"));
- assertEquals(0, Iterables.frequency(multiset, "d"));
- assertEquals(0, Iterables.frequency(multiset, 4.2));
- assertEquals(0, Iterables.frequency(multiset, null));
- }
-
- public void testFrequency_set() {
- Set<String> set = Sets.newHashSet("a", "b", "c");
- assertEquals(1, Iterables.frequency(set, "a"));
- assertEquals(1, Iterables.frequency(set, "b"));
- assertEquals(1, Iterables.frequency(set, "c"));
- assertEquals(0, Iterables.frequency(set, "d"));
- assertEquals(0, Iterables.frequency(set, 4.2));
- assertEquals(0, Iterables.frequency(set, null));
- }
-
- public void testFrequency_list() {
- List<String> list = newArrayList("a", "b", "a", "c", "b", "a");
- assertEquals(3, Iterables.frequency(list, "a"));
- assertEquals(2, Iterables.frequency(list, "b"));
- assertEquals(1, Iterables.frequency(list, "c"));
- assertEquals(0, Iterables.frequency(list, "d"));
- assertEquals(0, Iterables.frequency(list, 4.2));
- assertEquals(0, Iterables.frequency(list, null));
- }
-
- public void testRemoveAll_collection() {
- List<String> list = newArrayList("a", "b", "c", "d", "e");
- assertTrue(Iterables.removeAll(list, newArrayList("b", "d", "f")));
- assertEquals(newArrayList("a", "c", "e"), list);
- assertFalse(Iterables.removeAll(list, newArrayList("x", "y", "z")));
- assertEquals(newArrayList("a", "c", "e"), list);
- }
-
- public void testRemoveAll_iterable() {
- final List<String> list = newArrayList("a", "b", "c", "d", "e");
- Iterable<String> iterable =
- new Iterable<String>() {
- @Override
- public Iterator<String> iterator() {
- return list.iterator();
- }
- };
- assertTrue(Iterables.removeAll(iterable, newArrayList("b", "d", "f")));
- assertEquals(newArrayList("a", "c", "e"), list);
- assertFalse(Iterables.removeAll(iterable, newArrayList("x", "y", "z")));
- assertEquals(newArrayList("a", "c", "e"), list);
- }
-
- public void testRetainAll_collection() {
- List<String> list = newArrayList("a", "b", "c", "d", "e");
- assertTrue(Iterables.retainAll(list, newArrayList("b", "d", "f")));
- assertEquals(newArrayList("b", "d"), list);
- assertFalse(Iterables.retainAll(list, newArrayList("b", "e", "d")));
- assertEquals(newArrayList("b", "d"), list);
- }
-
- public void testRetainAll_iterable() {
- final List<String> list = newArrayList("a", "b", "c", "d", "e");
- Iterable<String> iterable =
- new Iterable<String>() {
- @Override
- public Iterator<String> iterator() {
- return list.iterator();
- }
- };
- assertTrue(Iterables.retainAll(iterable, newArrayList("b", "d", "f")));
- assertEquals(newArrayList("b", "d"), list);
- assertFalse(Iterables.retainAll(iterable, newArrayList("b", "e", "d")));
- assertEquals(newArrayList("b", "d"), list);
- }
-
- public void testRemoveIf_randomAccess() {
- List<String> list = newArrayList("a", "b", "c", "d", "e");
- assertTrue(
- Iterables.removeIf(
- list,
- new Predicate<String>() {
- @Override
- public boolean apply(String s) {
- return s.equals("b") || s.equals("d") || s.equals("f");
- }
- }));
- assertEquals(newArrayList("a", "c", "e"), list);
- assertFalse(
- Iterables.removeIf(
- list,
- new Predicate<String>() {
- @Override
- public boolean apply(String s) {
- return s.equals("x") || s.equals("y") || s.equals("z");
- }
- }));
- assertEquals(newArrayList("a", "c", "e"), list);
- }
-
- public void testRemoveIf_randomAccess_notPermittingDuplicates() {
- // https://github.com/google/guava/issues/1596
- List<String> uniqueList = newArrayList("a", "b", "c", "d", "e");
- assertThat(uniqueList).containsNoDuplicates();
-
- assertTrue(uniqueList instanceof RandomAccess);
- assertTrue(
- Iterables.removeIf(
- uniqueList,
- new Predicate<String>() {
- @Override
- public boolean apply(String s) {
- return s.equals("b") || s.equals("d") || s.equals("f");
- }
- }));
- assertEquals(newArrayList("a", "c", "e"), uniqueList);
- assertFalse(
- Iterables.removeIf(
- uniqueList,
- new Predicate<String>() {
- @Override
- public boolean apply(String s) {
- return s.equals("x") || s.equals("y") || s.equals("z");
- }
- }));
- assertEquals(newArrayList("a", "c", "e"), uniqueList);
- }
-
- public void testRemoveIf_transformedList() {
- List<String> list = newArrayList("1", "2", "3", "4", "5");
- List<Integer> transformed =
- Lists.transform(
- list,
- new Function<String, Integer>() {
- @Override
- public Integer apply(String s) {
- return Integer.valueOf(s);
- }
- });
- assertTrue(
- Iterables.removeIf(
- transformed,
- new Predicate<Integer>() {
- @Override
- public boolean apply(Integer n) {
- return (n & 1) == 0; // isEven()
- }
- }));
- assertEquals(newArrayList("1", "3", "5"), list);
- assertFalse(
- Iterables.removeIf(
- transformed,
- new Predicate<Integer>() {
- @Override
- public boolean apply(Integer n) {
- return (n & 1) == 0; // isEven()
- }
- }));
- assertEquals(newArrayList("1", "3", "5"), list);
- }
-
- public void testRemoveIf_noRandomAccess() {
- List<String> list = Lists.newLinkedList(asList("a", "b", "c", "d", "e"));
- assertTrue(
- Iterables.removeIf(
- list,
- new Predicate<String>() {
- @Override
- public boolean apply(String s) {
- return s.equals("b") || s.equals("d") || s.equals("f");
- }
- }));
- assertEquals(newArrayList("a", "c", "e"), list);
- assertFalse(
- Iterables.removeIf(
- list,
- new Predicate<String>() {
- @Override
- public boolean apply(String s) {
- return s.equals("x") || s.equals("y") || s.equals("z");
- }
- }));
- assertEquals(newArrayList("a", "c", "e"), list);
- }
-
- public void testRemoveIf_iterable() {
- final List<String> list = Lists.newLinkedList(asList("a", "b", "c", "d", "e"));
- Iterable<String> iterable =
- new Iterable<String>() {
- @Override
- public Iterator<String> iterator() {
- return list.iterator();
- }
- };
- assertTrue(
- Iterables.removeIf(
- iterable,
- new Predicate<String>() {
- @Override
- public boolean apply(String s) {
- return s.equals("b") || s.equals("d") || s.equals("f");
- }
- }));
- assertEquals(newArrayList("a", "c", "e"), list);
- assertFalse(
- Iterables.removeIf(
- iterable,
- new Predicate<String>() {
- @Override
- public boolean apply(String s) {
- return s.equals("x") || s.equals("y") || s.equals("z");
- }
- }));
- assertEquals(newArrayList("a", "c", "e"), list);
- }
-
- // The Maps returned by Maps.filterEntries(), Maps.filterKeys(), and
- // Maps.filterValues() are not tested with removeIf() since Maps are not
- // Iterable. Those returned by Iterators.filter() and Iterables.filter()
- // are not tested because they are unmodifiable.
-
- public void testIterableWithToString() {
- assertEquals("[]", create().toString());
- assertEquals("[a]", create("a").toString());
- assertEquals("[a, b, c]", create("a", "b", "c").toString());
- assertEquals("[c, a, a]", create("c", "a", "a").toString());
- }
-
- public void testIterableWithToStringNull() {
- assertEquals("[null]", create((String) null).toString());
- assertEquals("[null, null]", create(null, null).toString());
- assertEquals("[, null, a]", create("", null, "a").toString());
- }
-
- /** Returns a new iterable over the specified strings. */
- private static Iterable<String> create(String... strings) {
- final List<String> list = asList(strings);
- return new FluentIterable<String>() {
- @Override
- public Iterator<String> iterator() {
- return list.iterator();
- }
- };
- }
-
- public void testConsumingIterable() {
- // Test data
- List<String> list = Lists.newArrayList(asList("a", "b"));
-
- // Test & Verify
- Iterable<String> consumingIterable = Iterables.consumingIterable(list);
- assertEquals("Iterables.consumingIterable(...)", consumingIterable.toString());
- Iterator<String> consumingIterator = consumingIterable.iterator();
-
- assertThat(list).containsExactly("a", "b").inOrder();
-
- assertTrue(consumingIterator.hasNext());
- assertThat(list).containsExactly("a", "b").inOrder();
- assertEquals("a", consumingIterator.next());
- assertThat(list).contains("b");
-
- assertTrue(consumingIterator.hasNext());
- assertEquals("b", consumingIterator.next());
- assertThat(list).isEmpty();
-
- assertFalse(consumingIterator.hasNext());
- }
-
- @GwtIncompatible // ?
- // TODO: Figure out why this is failing in GWT.
- public void testConsumingIterable_duelingIterators() {
- // Test data
- List<String> list = Lists.newArrayList(asList("a", "b"));
-
- // Test & Verify
- Iterator<String> i1 = Iterables.consumingIterable(list).iterator();
- Iterator<String> i2 = Iterables.consumingIterable(list).iterator();
-
- i1.next();
- try {
- i2.next();
- fail("Concurrent modification should throw an exception.");
- } catch (ConcurrentModificationException cme) {
- // Pass
- }
- }
-
- public void testConsumingIterable_queue_iterator() {
- final List<Integer> items = ImmutableList.of(4, 8, 15, 16, 23, 42);
- new IteratorTester<Integer>(3, UNMODIFIABLE, items, IteratorTester.KnownOrder.KNOWN_ORDER) {
- @Override
- protected Iterator<Integer> newTargetIterator() {
- return Iterables.consumingIterable(Lists.newLinkedList(items)).iterator();
- }
- }.test();
- }
-
- public void testConsumingIterable_queue_removesFromQueue() {
- Queue<Integer> queue = Lists.newLinkedList(asList(5, 14));
-
- Iterator<Integer> consumingIterator = Iterables.consumingIterable(queue).iterator();
-
- assertEquals(5, queue.peek().intValue());
- assertEquals(5, consumingIterator.next().intValue());
-
- assertEquals(14, queue.peek().intValue());
- assertTrue(consumingIterator.hasNext());
- assertTrue(queue.isEmpty());
- }
-
- public void testConsumingIterable_noIteratorCall() {
- Queue<Integer> queue = new UnIterableQueue<>(Lists.newLinkedList(asList(5, 14)));
-
- Iterator<Integer> consumingIterator = Iterables.consumingIterable(queue).iterator();
- /*
- * Make sure that we can get an element off without calling
- * UnIterableQueue.iterator().
- */
- assertEquals(5, consumingIterator.next().intValue());
- }
-
- private static class UnIterableQueue<T> extends ForwardingQueue<T> {
- private final Queue<T> queue;
-
- UnIterableQueue(Queue<T> queue) {
- this.queue = queue;
- }
-
- @Override
- public Iterator<T> iterator() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- protected Queue<T> delegate() {
- return queue;
- }
- }
-
- public void testIndexOf_empty() {
- List<String> list = new ArrayList<>();
- assertEquals(-1, Iterables.indexOf(list, Predicates.equalTo("")));
- }
-
- public void testIndexOf_oneElement() {
- List<String> list = Lists.newArrayList("bob");
- assertEquals(0, Iterables.indexOf(list, Predicates.equalTo("bob")));
- assertEquals(-1, Iterables.indexOf(list, Predicates.equalTo("jack")));
- }
-
- public void testIndexOf_twoElements() {
- List<String> list = Lists.newArrayList("mary", "bob");
- assertEquals(0, Iterables.indexOf(list, Predicates.equalTo("mary")));
- assertEquals(1, Iterables.indexOf(list, Predicates.equalTo("bob")));
- assertEquals(-1, Iterables.indexOf(list, Predicates.equalTo("jack")));
- }
-
- public void testIndexOf_withDuplicates() {
- List<String> list = Lists.newArrayList("mary", "bob", "bob", "bob", "sam");
- assertEquals(0, Iterables.indexOf(list, Predicates.equalTo("mary")));
- assertEquals(1, Iterables.indexOf(list, Predicates.equalTo("bob")));
- assertEquals(4, Iterables.indexOf(list, Predicates.equalTo("sam")));
- assertEquals(-1, Iterables.indexOf(list, Predicates.equalTo("jack")));
- }
-
- private static final Predicate<CharSequence> STARTSWITH_A =
- new Predicate<CharSequence>() {
- @Override
- public boolean apply(CharSequence input) {
- return (input.length() > 0) && (input.charAt(0) == 'a');
- }
- };
-
- public void testIndexOf_genericPredicate() {
- List<CharSequence> sequences = Lists.newArrayList();
- sequences.add("bob");
- sequences.add(new StringBuilder("charlie"));
- sequences.add(new StringBuffer("henry"));
- sequences.add(new StringBuilder("apple"));
- sequences.add("lemon");
-
- assertEquals(3, Iterables.indexOf(sequences, STARTSWITH_A));
- }
-
- public void testIndexOf_genericPredicate2() {
- List<String> sequences = Lists.newArrayList("bob", "charlie", "henry", "apple", "lemon");
- assertEquals(3, Iterables.indexOf(sequences, STARTSWITH_A));
- }
-
- public void testMergeSorted_empty() {
- // Setup
- Iterable<Iterable<Integer>> elements = ImmutableList.of();
-
- // Test
- Iterable<Integer> iterable = Iterables.mergeSorted(elements, Ordering.natural());
-
- // Verify
- Iterator<Integer> iterator = iterable.iterator();
- assertFalse(iterator.hasNext());
- try {
- iterator.next();
- fail("next() on empty iterator should throw NoSuchElementException");
- } catch (NoSuchElementException e) {
- // Huzzah!
- }
- }
-
- public void testMergeSorted_single_empty() {
- // Setup
- Iterable<Integer> iterable0 = ImmutableList.of();
- Iterable<Iterable<Integer>> iterables = ImmutableList.of(iterable0);
-
- // Test & Verify
- verifyMergeSorted(iterables, ImmutableList.<Integer>of());
- }
-
- public void testMergeSorted_single() {
- // Setup
- Iterable<Integer> iterable0 = ImmutableList.of(1, 2, 3);
- Iterable<Iterable<Integer>> iterables = ImmutableList.of(iterable0);
-
- // Test & Verify
- verifyMergeSorted(iterables, iterable0);
- }
-
- public void testMergeSorted_pyramid() {
- List<Iterable<Integer>> iterables = Lists.newLinkedList();
- List<Integer> allIntegers = Lists.newArrayList();
-
- // Creates iterators like: {{}, {0}, {0, 1}, {0, 1, 2}, ...}
- for (int i = 0; i < 10; i++) {
- List<Integer> list = Lists.newLinkedList();
- for (int j = 0; j < i; j++) {
- list.add(j);
- allIntegers.add(j);
- }
- iterables.add(Ordering.natural().sortedCopy(list));
- }
-
- verifyMergeSorted(iterables, allIntegers);
- }
-
- // Like the pyramid, but creates more unique values, along with repeated ones.
- public void testMergeSorted_skipping_pyramid() {
- List<Iterable<Integer>> iterables = Lists.newLinkedList();
- List<Integer> allIntegers = Lists.newArrayList();
-
- for (int i = 0; i < 20; i++) {
- List<Integer> list = Lists.newLinkedList();
- for (int j = 0; j < i; j++) {
- list.add(j * i);
- allIntegers.add(j * i);
- }
- iterables.add(Ordering.natural().sortedCopy(list));
- }
-
- verifyMergeSorted(iterables, allIntegers);
- }
-
- @GwtIncompatible // reflection
- public void testIterables_nullCheck() throws Exception {
- new ClassSanityTester()
- .forAllPublicStaticMethods(Iterables.class)
- .thatReturn(Iterable.class)
- .testNulls();
- }
-
- private static void verifyMergeSorted(
- Iterable<Iterable<Integer>> iterables, Iterable<Integer> unsortedExpected) {
- Iterable<Integer> expected = Ordering.natural().sortedCopy(unsortedExpected);
-
- Iterable<Integer> mergedIterator = Iterables.mergeSorted(iterables, Ordering.natural());
-
- assertEquals(Lists.newLinkedList(expected), Lists.newLinkedList(mergedIterator));
- }
-}