11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/*
21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2011 The Guava Authors
31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * in compliance with the License. You may obtain a copy of the License at
61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0
81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unless required by applicable law or agreed to in writing, software distributed under the License
101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * or implied. See the License for the specific language governing permissions and limitations under
121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * the License.
131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */
141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage com.google.common.collect;
161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport static org.junit.contrib.truth.Truth.ASSERT;
181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtCompatible;
201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.TestCase;
221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Arrays;
241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.List;
251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.SortedSet;
261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/**
281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unit tests for {@code SortedIterables}.
291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Louis Wasserman
311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */
321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@GwtCompatible
331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class SortedIterablesTest extends TestCase {
341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  @SuppressWarnings("unchecked")
351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testSortedCounts() {
361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    List<Integer> list = Arrays.asList(3, 9, 8, 4, 5, 2, 2, 8);
371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    ASSERT.that(SortedIterables.sortedCounts(Ordering.natural(), list))
381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        .hasContentsInOrder(
391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert            Multisets.immutableEntry(2, 2), Multisets.immutableEntry(3, 1),
401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert            Multisets.immutableEntry(4, 1), Multisets.immutableEntry(5, 1),
411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert            Multisets.immutableEntry(8, 2), Multisets.immutableEntry(9, 1));
421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  @SuppressWarnings("unchecked")
451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testSortedCountsIterator() {
461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    List<Integer> list = Arrays.asList(3, 9, 8, 4, 5, 2, 2, 8);
471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    ASSERT.that(SortedIterables.sortedCounts(Ordering.natural(), list.iterator()))
481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        .hasContentsInOrder(
491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert            Multisets.immutableEntry(2, 2), Multisets.immutableEntry(3, 1),
501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert            Multisets.immutableEntry(4, 1), Multisets.immutableEntry(5, 1),
511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert            Multisets.immutableEntry(8, 2), Multisets.immutableEntry(9, 1));
521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testSameComparator() {
551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(SortedIterables.hasSameComparator(Ordering.natural(), Sets.newTreeSet()));
561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // Before JDK6 (including under GWT), the TreeMap keySet is a plain Set.
571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    if (Maps.newTreeMap().keySet() instanceof SortedSet) {
581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertTrue(
591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert          SortedIterables.hasSameComparator(Ordering.natural(), Maps.newTreeMap().keySet()));
601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(SortedIterables.hasSameComparator(Ordering.natural().reverse(),
621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        Sets.newTreeSet(Ordering.natural().reverse())));
631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert}
65