1/*
2 * Copyright (C) 2011 The Guava Authors
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5 * in compliance with the License. You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11 * or implied. See the License for the specific language governing permissions and limitations under
12 * the License.
13 */
14
15package com.google.common.collect;
16
17import static org.junit.contrib.truth.Truth.ASSERT;
18
19import com.google.common.annotations.GwtCompatible;
20
21import junit.framework.TestCase;
22
23import java.util.Arrays;
24import java.util.List;
25import java.util.SortedSet;
26
27/**
28 * Unit tests for {@code SortedIterables}.
29 *
30 * @author Louis Wasserman
31 */
32@GwtCompatible
33public class SortedIterablesTest extends TestCase {
34  @SuppressWarnings("unchecked")
35  public void testSortedCounts() {
36    List<Integer> list = Arrays.asList(3, 9, 8, 4, 5, 2, 2, 8);
37    ASSERT.that(SortedIterables.sortedCounts(Ordering.natural(), list))
38        .hasContentsInOrder(
39            Multisets.immutableEntry(2, 2), Multisets.immutableEntry(3, 1),
40            Multisets.immutableEntry(4, 1), Multisets.immutableEntry(5, 1),
41            Multisets.immutableEntry(8, 2), Multisets.immutableEntry(9, 1));
42  }
43
44  @SuppressWarnings("unchecked")
45  public void testSortedCountsIterator() {
46    List<Integer> list = Arrays.asList(3, 9, 8, 4, 5, 2, 2, 8);
47    ASSERT.that(SortedIterables.sortedCounts(Ordering.natural(), list.iterator()))
48        .hasContentsInOrder(
49            Multisets.immutableEntry(2, 2), Multisets.immutableEntry(3, 1),
50            Multisets.immutableEntry(4, 1), Multisets.immutableEntry(5, 1),
51            Multisets.immutableEntry(8, 2), Multisets.immutableEntry(9, 1));
52  }
53
54  public void testSameComparator() {
55    assertTrue(SortedIterables.hasSameComparator(Ordering.natural(), Sets.newTreeSet()));
56    // Before JDK6 (including under GWT), the TreeMap keySet is a plain Set.
57    if (Maps.newTreeMap().keySet() instanceof SortedSet) {
58      assertTrue(
59          SortedIterables.hasSameComparator(Ordering.natural(), Maps.newTreeMap().keySet()));
60    }
61    assertTrue(SortedIterables.hasSameComparator(Ordering.natural().reverse(),
62        Sets.newTreeSet(Ordering.natural().reverse())));
63  }
64}
65