11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/* 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2011 The Guava Authors 37dd252788645e940eada959bdde927426e2531c9Paul Duffin * 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 67dd252788645e940eada959bdde927426e2531c9Paul Duffin * 71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0 87dd252788645e940eada959bdde927426e2531c9Paul Duffin * 91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unless required by applicable law or agreed to in writing, software distributed under the 101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * express or implied. See the License for the specific language governing permissions and 121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * limitations under the License. 131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage com.google.common.collect; 161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport static com.google.common.collect.BoundType.CLOSED; 181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport static com.google.common.collect.BoundType.OPEN; 191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtCompatible; 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtIncompatible; 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.base.Objects; 231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.NullPointerTester; 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 250888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport junit.framework.TestCase; 260888a09821a98ac0680fad765217302858e70fa4Paul Duffin 277dd252788645e940eada959bdde927426e2531c9Paul Duffinimport java.util.Arrays; 287dd252788645e940eada959bdde927426e2531c9Paul Duffinimport java.util.List; 297dd252788645e940eada959bdde927426e2531c9Paul Duffin 301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/** 311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for {@code GeneralRange}. 327dd252788645e940eada959bdde927426e2531c9Paul Duffin * 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Louis Wasserman 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@GwtCompatible(emulated = true) 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class GeneralRangeTest extends TestCase { 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final Ordering<Integer> ORDERING = Ordering.natural().nullsFirst(); 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final List<Integer> IN_ORDER_VALUES = Arrays.asList(null, 1, 2, 3, 4, 5); 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreateEmptyRangeFails() { 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (BoundType lboundType : BoundType.values()) { 431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (BoundType uboundType : BoundType.values()) { 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 457dd252788645e940eada959bdde927426e2531c9Paul Duffin GeneralRange.range(ORDERING, 4, lboundType, 2, uboundType); 461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("Expected IAE"); 471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalArgumentException expected) {} 481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreateEmptyRangeOpenOpenFails() { 531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (Integer i : IN_ORDER_VALUES) { 541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange.range(ORDERING, i, OPEN, i, OPEN); 561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("Expected IAE"); 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalArgumentException expected) {} 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreateEmptyRangeClosedOpenSucceeds() { 621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (Integer i : IN_ORDER_VALUES) { 631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> range = GeneralRange.range(ORDERING, i, CLOSED, i, OPEN); 641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (Integer j : IN_ORDER_VALUES) { 651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(range.contains(j)); 661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreateEmptyRangeOpenClosedSucceeds() { 711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (Integer i : IN_ORDER_VALUES) { 721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> range = GeneralRange.range(ORDERING, i, OPEN, i, CLOSED); 731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (Integer j : IN_ORDER_VALUES) { 741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(range.contains(j)); 751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreateSingletonRangeSucceeds() { 801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (Integer i : IN_ORDER_VALUES) { 811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> range = GeneralRange.range(ORDERING, i, CLOSED, i, CLOSED); 821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (Integer j : IN_ORDER_VALUES) { 831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(Objects.equal(i, j), range.contains(j)); 841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testSingletonRange() { 891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> range = GeneralRange.range(ORDERING, 3, CLOSED, 3, CLOSED); 901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (Integer i : IN_ORDER_VALUES) { 911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(ORDERING.compare(i, 3) == 0, range.contains(i)); 921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testLowerRange() { 961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (BoundType lBoundType : BoundType.values()) { 971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> range = GeneralRange.downTo(ORDERING, 3, lBoundType); 981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (Integer i : IN_ORDER_VALUES) { 991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(ORDERING.compare(i, 3) > 0 1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert || (ORDERING.compare(i, 3) == 0 && lBoundType == CLOSED), range.contains(i)); 1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(ORDERING.compare(i, 3) < 0 1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert || (ORDERING.compare(i, 3) == 0 && lBoundType == OPEN), range.tooLow(i)); 1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(range.tooHigh(i)); 1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testUpperRange() { 1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (BoundType lBoundType : BoundType.values()) { 1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> range = GeneralRange.upTo(ORDERING, 3, lBoundType); 1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (Integer i : IN_ORDER_VALUES) { 1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(ORDERING.compare(i, 3) < 0 1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert || (ORDERING.compare(i, 3) == 0 && lBoundType == CLOSED), range.contains(i)); 1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(ORDERING.compare(i, 3) > 0 1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert || (ORDERING.compare(i, 3) == 0 && lBoundType == OPEN), range.tooHigh(i)); 1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(range.tooLow(i)); 1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testDoublyBoundedAgainstRange() { 1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (BoundType lboundType : BoundType.values()) { 1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (BoundType uboundType : BoundType.values()) { 1247dd252788645e940eada959bdde927426e2531c9Paul Duffin Range<Integer> range = Range.range(2, lboundType, 4, uboundType); 1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> gRange = GeneralRange.range(ORDERING, 2, lboundType, 4, uboundType); 1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (Integer i : IN_ORDER_VALUES) { 1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(i != null && range.contains(i), gRange.contains(i)); 1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIntersectAgainstMatchingEndpointsRange() { 1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> range = GeneralRange.range(ORDERING, 2, CLOSED, 4, OPEN); 1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.range(ORDERING, 2, OPEN, 4, OPEN), 1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert range.intersect(GeneralRange.range(ORDERING, 2, OPEN, 4, CLOSED))); 1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIntersectAgainstBiggerRange() { 1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> range = GeneralRange.range(ORDERING, 2, CLOSED, 4, OPEN); 1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.range(ORDERING, 2, CLOSED, 4, OPEN), 1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert range.intersect(GeneralRange.range(ORDERING, null, OPEN, 5, CLOSED))); 1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.range(ORDERING, 2, OPEN, 4, OPEN), 1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert range.intersect(GeneralRange.range(ORDERING, 2, OPEN, 5, CLOSED))); 1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.range(ORDERING, 2, CLOSED, 4, OPEN), 1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert range.intersect(GeneralRange.range(ORDERING, 1, OPEN, 4, OPEN))); 1501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIntersectAgainstSmallerRange() { 1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> range = GeneralRange.range(ORDERING, 2, OPEN, 4, OPEN); 1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.range(ORDERING, 3, CLOSED, 4, OPEN), 1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert range.intersect(GeneralRange.range(ORDERING, 3, CLOSED, 4, CLOSED))); 1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIntersectOverlappingRange() { 1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> range = GeneralRange.range(ORDERING, 2, OPEN, 4, CLOSED); 1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.range(ORDERING, 3, CLOSED, 4, CLOSED), 1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert range.intersect(GeneralRange.range(ORDERING, 3, CLOSED, 5, CLOSED))); 1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.range(ORDERING, 2, OPEN, 3, OPEN), 1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert range.intersect(GeneralRange.range(ORDERING, 1, OPEN, 3, OPEN))); 1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIntersectNonOverlappingRange() { 1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange<Integer> range = GeneralRange.range(ORDERING, 2, OPEN, 4, CLOSED); 1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(range.intersect(GeneralRange.range(ORDERING, 5, CLOSED, 6, CLOSED)).isEmpty()); 1691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(range.intersect(GeneralRange.range(ORDERING, 1, OPEN, 2, OPEN)).isEmpty()); 1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testFromRangeAll() { 1737dd252788645e940eada959bdde927426e2531c9Paul Duffin assertEquals(GeneralRange.all(Ordering.natural()), GeneralRange.from(Range.all())); 1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testFromRangeOneEnd() { 1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (BoundType endpointType : BoundType.values()) { 1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.upTo(Ordering.natural(), 3, endpointType), 1797dd252788645e940eada959bdde927426e2531c9Paul Duffin GeneralRange.from(Range.upTo(3, endpointType))); 1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.downTo(Ordering.natural(), 3, endpointType), 1827dd252788645e940eada959bdde927426e2531c9Paul Duffin GeneralRange.from(Range.downTo(3, endpointType))); 1831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testFromRangeTwoEnds() { 1871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (BoundType lowerType : BoundType.values()) { 1881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (BoundType upperType : BoundType.values()) { 1891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.range(Ordering.natural(), 3, lowerType, 4, upperType), 1907dd252788645e940eada959bdde927426e2531c9Paul Duffin GeneralRange.from(Range.range(3, lowerType, 4, upperType))); 1911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testReverse() { 1961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.all(ORDERING.reverse()), GeneralRange.all(ORDERING).reverse()); 1971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.downTo(ORDERING.reverse(), 3, CLOSED), 1981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange.upTo(ORDERING, 3, CLOSED).reverse()); 1991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.upTo(ORDERING.reverse(), 3, OPEN), 2001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange.downTo(ORDERING, 3, OPEN).reverse()); 2011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(GeneralRange.range(ORDERING.reverse(), 5, OPEN, 3, CLOSED), 2021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert GeneralRange.range(ORDERING, 3, CLOSED, 5, OPEN).reverse()); 2031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("NullPointerTester") 2067dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testNullPointers() { 2077dd252788645e940eada959bdde927426e2531c9Paul Duffin new NullPointerTester().testAllPublicStaticMethods(GeneralRange.class); 2081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 210