11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/*
21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2008 The Guava Authors
31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * you may not use this file except in compliance with the License.
61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * You may obtain a copy of the License at
71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0
91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unless required by applicable law or agreed to in writing, software
111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * See the License for the specific language governing permissions and
141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * limitations under the License.
151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */
161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage com.google.common.primitives;
181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtCompatible;
201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtIncompatible;
210888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport com.google.common.base.Converter;
221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.Helpers;
231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.NullPointerTester;
241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.SerializableTester;
251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
260888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport junit.framework.TestCase;
270888a09821a98ac0680fad765217302858e70fa4Paul Duffin
281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Arrays;
291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Collection;
301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Collections;
311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Comparator;
321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.List;
331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Random;
341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/**
361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unit test for {@link Shorts}.
371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Kevin Bourrillion
391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */
401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@GwtCompatible(emulated = true)
411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@SuppressWarnings("cast") // redundant casts are intentional and harmless
421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class ShortsTest extends TestCase {
431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  private static final short[] EMPTY = {};
441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  private static final short[] ARRAY1 = {(short) 1};
451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  private static final short[] ARRAY234
461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      = {(short) 2, (short) 3, (short) 4};
471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  private static final short LEAST = Short.MIN_VALUE;
491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  private static final short GREATEST = Short.MAX_VALUE;
501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  private static final short[] VALUES =
521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      { LEAST, (short) -1, (short) 0, (short) 1, GREATEST };
531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testHashCode() {
551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    for (short value : VALUES) {
561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertEquals(((Short) value).hashCode(), Shorts.hashCode(value));
571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testCheckedCast() {
611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    for (short value : VALUES) {
621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertEquals(value, Shorts.checkedCast((long) value));
631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertCastFails(GREATEST + 1L);
651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertCastFails(LEAST - 1L);
661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertCastFails(Long.MAX_VALUE);
671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertCastFails(Long.MIN_VALUE);
681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testSaturatedCast() {
711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    for (short value : VALUES) {
721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertEquals(value, Shorts.saturatedCast((long) value));
731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(GREATEST, Shorts.saturatedCast(GREATEST + 1L));
751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(LEAST, Shorts.saturatedCast(LEAST - 1L));
761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(GREATEST, Shorts.saturatedCast(Long.MAX_VALUE));
771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(LEAST, Shorts.saturatedCast(Long.MIN_VALUE));
781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
807dd252788645e940eada959bdde927426e2531c9Paul Duffin  private static void assertCastFails(long value) {
811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      Shorts.checkedCast(value);
831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      fail("Cast to short should have failed: " + value);
841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (IllegalArgumentException ex) {
851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertTrue(value + " not found in exception text: " + ex.getMessage(),
861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert          ex.getMessage().contains(String.valueOf(value)));
871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testCompare() {
911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    for (short x : VALUES) {
921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      for (short y : VALUES) {
931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        // Only compare the sign of the result of compareTo().
941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        int expected = Short.valueOf(x).compareTo(y);
951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        int actual = Shorts.compare(x, y);
961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        if (expected == 0) {
971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert          assertEquals(x + ", " + y, expected, actual);
981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        } else if (expected < 0) {
991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert          assertTrue(x + ", " + y + " (expected: " + expected + ", actual" + actual + ")",
1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert              actual < 0);
1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        } else {
1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert          assertTrue(x + ", " + y + " (expected: " + expected + ", actual" + actual + ")",
1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert              actual > 0);
1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        }
1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      }
1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testContains() {
1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertFalse(Shorts.contains(EMPTY, (short) 1));
1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertFalse(Shorts.contains(ARRAY1, (short) 2));
1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertFalse(Shorts.contains(ARRAY234, (short) 1));
1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Shorts.contains(new short[] {(short) -1}, (short) -1));
1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Shorts.contains(ARRAY234, (short) 2));
1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Shorts.contains(ARRAY234, (short) 3));
1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Shorts.contains(ARRAY234, (short) 4));
1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testIndexOf() {
1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(-1, Shorts.indexOf(EMPTY, (short) 1));
1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(-1, Shorts.indexOf(ARRAY1, (short) 2));
1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(-1, Shorts.indexOf(ARRAY234, (short) 1));
1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, Shorts.indexOf(
1241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {(short) -1}, (short) -1));
1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, Shorts.indexOf(ARRAY234, (short) 2));
1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(1, Shorts.indexOf(ARRAY234, (short) 3));
1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(2, Shorts.indexOf(ARRAY234, (short) 4));
1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(1, Shorts.indexOf(
1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] { (short) 2, (short) 3, (short) 2, (short) 3 },
1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        (short) 3));
1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testIndexOf_arrayTarget() {
1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, Shorts.indexOf(EMPTY, EMPTY));
1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, Shorts.indexOf(ARRAY234, EMPTY));
1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(-1, Shorts.indexOf(EMPTY, ARRAY234));
1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(-1, Shorts.indexOf(ARRAY234, ARRAY1));
1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(-1, Shorts.indexOf(ARRAY1, ARRAY234));
1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, Shorts.indexOf(ARRAY1, ARRAY1));
1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, Shorts.indexOf(ARRAY234, ARRAY234));
1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, Shorts.indexOf(
1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        ARRAY234, new short[] { (short) 2, (short) 3 }));
1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(1, Shorts.indexOf(
1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        ARRAY234, new short[] { (short) 3, (short) 4 }));
1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(1, Shorts.indexOf(ARRAY234, new short[] { (short) 3 }));
1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(2, Shorts.indexOf(ARRAY234, new short[] { (short) 4 }));
1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(1, Shorts.indexOf(new short[] { (short) 2, (short) 3,
1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        (short) 3, (short) 3, (short) 3 },
1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] { (short) 3 }
1501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    ));
1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(2, Shorts.indexOf(
1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] { (short) 2, (short) 3, (short) 2,
1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert            (short) 3, (short) 4, (short) 2, (short) 3},
1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] { (short) 2, (short) 3, (short) 4}
1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    ));
1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(1, Shorts.indexOf(
1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] { (short) 2, (short) 2, (short) 3,
1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert            (short) 4, (short) 2, (short) 3, (short) 4},
1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] { (short) 2, (short) 3, (short) 4}
1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    ));
1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(-1, Shorts.indexOf(
1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] { (short) 4, (short) 3, (short) 2},
1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] { (short) 2, (short) 3, (short) 4}
1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    ));
1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testLastIndexOf() {
1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(-1, Shorts.lastIndexOf(EMPTY, (short) 1));
1691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(-1, Shorts.lastIndexOf(ARRAY1, (short) 2));
1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(-1, Shorts.lastIndexOf(ARRAY234, (short) 1));
1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, Shorts.lastIndexOf(
1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {(short) -1}, (short) -1));
1731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, Shorts.lastIndexOf(ARRAY234, (short) 2));
1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(1, Shorts.lastIndexOf(ARRAY234, (short) 3));
1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(2, Shorts.lastIndexOf(ARRAY234, (short) 4));
1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(3, Shorts.lastIndexOf(
1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] { (short) 2, (short) 3, (short) 2, (short) 3 },
1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        (short) 3));
1791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testMax_noArgs() {
1821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
1831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      Shorts.max();
1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      fail();
1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (IllegalArgumentException expected) {
1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
1871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testMax() {
1901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(LEAST, Shorts.max(LEAST));
1911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(GREATEST, Shorts.max(GREATEST));
1921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals((short) 9, Shorts.max(
1931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        (short) 8, (short) 6, (short) 7,
1941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        (short) 5, (short) 3, (short) 0, (short) 9));
1951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testMin_noArgs() {
1981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
1991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      Shorts.min();
2001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      fail();
2011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (IllegalArgumentException expected) {
2021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
2031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
2041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testMin() {
2061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(LEAST, Shorts.min(LEAST));
2071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(GREATEST, Shorts.min(GREATEST));
2081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals((short) 0, Shorts.min(
2091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        (short) 8, (short) 6, (short) 7,
2101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        (short) 5, (short) 3, (short) 0, (short) 9));
2111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
2121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testConcat() {
2141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(EMPTY, Shorts.concat()));
2151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(EMPTY, Shorts.concat(EMPTY)));
2161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(EMPTY, Shorts.concat(EMPTY, EMPTY, EMPTY)));
2171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(ARRAY1, Shorts.concat(ARRAY1)));
2181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertNotSame(ARRAY1, Shorts.concat(ARRAY1));
2191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(ARRAY1, Shorts.concat(EMPTY, ARRAY1, EMPTY)));
2201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(
2211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {(short) 1, (short) 1, (short) 1},
2221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        Shorts.concat(ARRAY1, ARRAY1, ARRAY1)));
2231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(
2241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {(short) 1, (short) 2, (short) 3, (short) 4},
2251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        Shorts.concat(ARRAY1, ARRAY234)));
2261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
2271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  @GwtIncompatible("Shorts.toByteArray")
2291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testToByteArray() {
2301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(
2311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new byte[] {0x23, 0x45}, Shorts.toByteArray((short) 0x2345)));
2321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(
2331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new byte[] {(byte) 0xFE, (byte) 0xDC},
2341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        Shorts.toByteArray((short) 0xFEDC)));
2351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
2361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  @GwtIncompatible("Shorts.fromByteArray")
2381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testFromByteArray() {
2391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals((short) 0x2345,
2401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        Shorts.fromByteArray(new byte[] {0x23, 0x45}));
2411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals((short) 0xFEDC, Shorts.fromByteArray(
2421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new byte[] {(byte) 0xFE, (byte) 0xDC}));
2431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
2451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      Shorts.fromByteArray(new byte[] {0x01});
2461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      fail();
2471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (IllegalArgumentException expected) {
2481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
2491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
2501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  @GwtIncompatible("Shorts.fromBytes")
2521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testFromBytes() {
2531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals((short) 0x2345, Shorts.fromBytes((byte) 0x23, (byte) 0x45));
2541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals((short) 0xFEDC, Shorts.fromBytes((byte) 0xFE, (byte) 0xDC));
2551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
2561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  @GwtIncompatible("Shorts.fromByteArray, Shorts.toByteArray")
2581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testByteArrayRoundTrips() {
2591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    Random r = new Random(5);
2601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    byte[] b = new byte[Shorts.BYTES];
2611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // total overkill, but, it takes 0.1 sec so why not...
2631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    for (int i = 0; i < 10000; i++) {
2641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      short num = (short) r.nextInt();
2651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertEquals(num, Shorts.fromByteArray(Shorts.toByteArray(num)));
2661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      r.nextBytes(b);
2681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertTrue(Arrays.equals(b,
2691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert          Shorts.toByteArray(Shorts.fromByteArray(b))));
2701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
2711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
2721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testEnsureCapacity() {
2741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertSame(EMPTY, Shorts.ensureCapacity(EMPTY, 0, 1));
2751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertSame(ARRAY1, Shorts.ensureCapacity(ARRAY1, 0, 1));
2761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertSame(ARRAY1, Shorts.ensureCapacity(ARRAY1, 1, 1));
2771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(
2781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {(short) 1, (short) 0, (short) 0},
2791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        Shorts.ensureCapacity(ARRAY1, 2, 1)));
2801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
2811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testEnsureCapacity_fail() {
2831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
2841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      Shorts.ensureCapacity(ARRAY1, -1, 1);
2851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      fail();
2861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (IllegalArgumentException expected) {
2871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
2881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
2891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      // notice that this should even fail when no growth was needed
2901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      Shorts.ensureCapacity(ARRAY1, 1, -1);
2911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      fail();
2921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (IllegalArgumentException expected) {
2931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
2941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
2951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
2961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testJoin() {
2971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals("", Shorts.join(",", EMPTY));
2981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals("1", Shorts.join(",", ARRAY1));
2991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals("1,2", Shorts.join(",", (short) 1, (short) 2));
3001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals("123",
3011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        Shorts.join("", (short) 1, (short) 2, (short) 3));
3021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
3031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testLexicographicalComparator() {
3051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    List<short[]> ordered = Arrays.asList(
3061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {},
3071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {LEAST},
3081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {LEAST, LEAST},
3091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {LEAST, (short) 1},
3101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {(short) 1},
3111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {(short) 1, LEAST},
3121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {GREATEST, GREATEST - (short) 1},
3131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {GREATEST, GREATEST},
3141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] {GREATEST, GREATEST, GREATEST});
3151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    Comparator<short[]> comparator = Shorts.lexicographicalComparator();
3171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    Helpers.testComparator(comparator, ordered);
3181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
3191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  @GwtIncompatible("SerializableTester")
3211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testLexicographicalComparatorSerializable() {
3221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    Comparator<short[]> comparator = Shorts.lexicographicalComparator();
3231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertSame(comparator, SerializableTester.reserialize(comparator));
3241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
3251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3260888a09821a98ac0680fad765217302858e70fa4Paul Duffin  @GwtIncompatible("SerializableTester")
3270888a09821a98ac0680fad765217302858e70fa4Paul Duffin  public void testStringConverterSerialization() {
3280888a09821a98ac0680fad765217302858e70fa4Paul Duffin    SerializableTester.reserializeAndAssert(Shorts.stringConverter());
3290888a09821a98ac0680fad765217302858e70fa4Paul Duffin  }
3300888a09821a98ac0680fad765217302858e70fa4Paul Duffin
3311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testToArray() {
3321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // need explicit type parameter to avoid javac warning!?
3331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    List<Short> none = Arrays.<Short>asList();
3341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(EMPTY, Shorts.toArray(none)));
3351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    List<Short> one = Arrays.asList((short) 1);
3371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(ARRAY1, Shorts.toArray(one)));
3381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    short[] array = {(short) 0, (short) 1, (short) 3};
3401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    List<Short> three = Arrays.asList((short) 0, (short) 1, (short) 3);
3421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(array, Shorts.toArray(three)));
3431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(array, Shorts.toArray(Shorts.asList(array))));
3451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
3461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testToArray_threadSafe() {
3481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    for (int delta : new int[] { +1, 0, -1 }) {
3491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      for (int i = 0; i < VALUES.length; i++) {
3501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        List<Short> list = Shorts.asList(VALUES).subList(0, i);
3511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        Collection<Short> misleadingSize =
3521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert            Helpers.misleadingSizeCollection(delta);
3531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        misleadingSize.addAll(list);
3541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        short[] arr = Shorts.toArray(misleadingSize);
3551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        assertEquals(i, arr.length);
3561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        for (int j = 0; j < i; j++) {
3571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert          assertEquals(VALUES[j], arr[j]);
3581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        }
3591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      }
3601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
3611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
3621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testToArray_withNull() {
3641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    List<Short> list = Arrays.asList((short) 0, (short) 1, null);
3651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
3661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      Shorts.toArray(list);
3671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      fail();
3681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (NullPointerException expected) {
3691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
3701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
3711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3727dd252788645e940eada959bdde927426e2531c9Paul Duffin  public void testToArray_withConversion() {
3737dd252788645e940eada959bdde927426e2531c9Paul Duffin    short[] array = {(short) 0, (short) 1, (short) 2};
3747dd252788645e940eada959bdde927426e2531c9Paul Duffin
3757dd252788645e940eada959bdde927426e2531c9Paul Duffin    List<Byte> bytes = Arrays.asList((byte) 0, (byte) 1, (byte) 2);
3767dd252788645e940eada959bdde927426e2531c9Paul Duffin    List<Short> shorts = Arrays.asList((short) 0, (short) 1, (short) 2);
3777dd252788645e940eada959bdde927426e2531c9Paul Duffin    List<Integer> ints = Arrays.asList(0, 1, 2);
3787dd252788645e940eada959bdde927426e2531c9Paul Duffin    List<Float> floats = Arrays.asList((float) 0, (float) 1, (float) 2);
3797dd252788645e940eada959bdde927426e2531c9Paul Duffin    List<Long> longs = Arrays.asList((long) 0, (long) 1, (long) 2);
3807dd252788645e940eada959bdde927426e2531c9Paul Duffin    List<Double> doubles = Arrays.asList((double) 0, (double) 1, (double) 2);
3817dd252788645e940eada959bdde927426e2531c9Paul Duffin
3827dd252788645e940eada959bdde927426e2531c9Paul Duffin    assertTrue(Arrays.equals(array, Shorts.toArray(bytes)));
3837dd252788645e940eada959bdde927426e2531c9Paul Duffin    assertTrue(Arrays.equals(array, Shorts.toArray(shorts)));
3847dd252788645e940eada959bdde927426e2531c9Paul Duffin    assertTrue(Arrays.equals(array, Shorts.toArray(ints)));
3857dd252788645e940eada959bdde927426e2531c9Paul Duffin    assertTrue(Arrays.equals(array, Shorts.toArray(floats)));
3867dd252788645e940eada959bdde927426e2531c9Paul Duffin    assertTrue(Arrays.equals(array, Shorts.toArray(longs)));
3877dd252788645e940eada959bdde927426e2531c9Paul Duffin    assertTrue(Arrays.equals(array, Shorts.toArray(doubles)));
3887dd252788645e940eada959bdde927426e2531c9Paul Duffin  }
3897dd252788645e940eada959bdde927426e2531c9Paul Duffin
3901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testAsList_isAView() {
3911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    short[] array = {(short) 0, (short) 1};
3921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    List<Short> list = Shorts.asList(array);
3931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    list.set(0, (short) 2);
3941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(new short[] {(short) 2, (short) 1}, array));
3951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    array[1] = (short) 3;
3961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(Arrays.asList((short) 2, (short) 3), list);
3971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
3981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
3991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testAsList_toArray_roundTrip() {
4001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    short[] array = { (short) 0, (short) 1, (short) 2 };
4011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    List<Short> list = Shorts.asList(array);
4021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    short[] newArray = Shorts.toArray(list);
4031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
4041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // Make sure it returned a copy
4051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    list.set(0, (short) 4);
4061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(
4071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        new short[] { (short) 0, (short) 1, (short) 2 }, newArray));
4081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    newArray[1] = (short) 5;
4091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals((short) 1, (short) list.get(1));
4101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
4111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
4121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  // This test stems from a real bug found by andrewk
4131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testAsList_subList_toArray_roundTrip() {
4141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    short[] array = { (short) 0, (short) 1, (short) 2, (short) 3 };
4151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    List<Short> list = Shorts.asList(array);
4161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(new short[] { (short) 1, (short) 2 },
4171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        Shorts.toArray(list.subList(1, 3))));
4181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(Arrays.equals(new short[] {},
4191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        Shorts.toArray(list.subList(2, 2))));
4201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
4211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
4221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testAsListEmpty() {
4231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertSame(Collections.emptyList(), Shorts.asList(EMPTY));
4241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
4251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
4261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  @GwtIncompatible("NullPointerTester")
4277dd252788645e940eada959bdde927426e2531c9Paul Duffin  public void testNulls() {
4287dd252788645e940eada959bdde927426e2531c9Paul Duffin    new NullPointerTester().testAllPublicStaticMethods(Shorts.class);
4291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
4300888a09821a98ac0680fad765217302858e70fa4Paul Duffin
4310888a09821a98ac0680fad765217302858e70fa4Paul Duffin  public void testStringConverter_convert() {
4320888a09821a98ac0680fad765217302858e70fa4Paul Duffin    Converter<String, Short> converter = Shorts.stringConverter();
4330888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals((Short) (short) 1, converter.convert("1"));
4340888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals((Short) (short) 0, converter.convert("0"));
4350888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals((Short) (short) (-1), converter.convert("-1"));
4360888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals((Short) (short) 255, converter.convert("0xff"));
4370888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals((Short) (short) 255, converter.convert("0xFF"));
4380888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals((Short) (short) (-255), converter.convert("-0xFF"));
4390888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals((Short) (short) 255, converter.convert("#0000FF"));
4400888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals((Short) (short) 438, converter.convert("0666"));
4410888a09821a98ac0680fad765217302858e70fa4Paul Duffin  }
4420888a09821a98ac0680fad765217302858e70fa4Paul Duffin
4430888a09821a98ac0680fad765217302858e70fa4Paul Duffin  public void testStringConverter_convertError() {
4440888a09821a98ac0680fad765217302858e70fa4Paul Duffin    try {
4450888a09821a98ac0680fad765217302858e70fa4Paul Duffin      Shorts.stringConverter().convert("notanumber");
4460888a09821a98ac0680fad765217302858e70fa4Paul Duffin      fail();
4470888a09821a98ac0680fad765217302858e70fa4Paul Duffin    } catch (NumberFormatException expected) {
4480888a09821a98ac0680fad765217302858e70fa4Paul Duffin    }
4490888a09821a98ac0680fad765217302858e70fa4Paul Duffin  }
4500888a09821a98ac0680fad765217302858e70fa4Paul Duffin
4510888a09821a98ac0680fad765217302858e70fa4Paul Duffin  public void testStringConverter_nullConversions() {
4520888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertNull(Shorts.stringConverter().convert(null));
4530888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertNull(Shorts.stringConverter().reverse().convert(null));
4540888a09821a98ac0680fad765217302858e70fa4Paul Duffin  }
4550888a09821a98ac0680fad765217302858e70fa4Paul Duffin
4560888a09821a98ac0680fad765217302858e70fa4Paul Duffin  public void testStringConverter_reverse() {
4570888a09821a98ac0680fad765217302858e70fa4Paul Duffin    Converter<String, Short> converter = Shorts.stringConverter();
4580888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals("1", converter.reverse().convert((short) 1));
4590888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals("0", converter.reverse().convert((short) 0));
4600888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals("-1", converter.reverse().convert((short) -1));
4610888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals("255", converter.reverse().convert((short) 0xff));
4620888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals("255", converter.reverse().convert((short) 0xFF));
4630888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals("-255", converter.reverse().convert((short) -0xFF));
4640888a09821a98ac0680fad765217302858e70fa4Paul Duffin    assertEquals("438", converter.reverse().convert((short) 0666));
4650888a09821a98ac0680fad765217302858e70fa4Paul Duffin  }
4660888a09821a98ac0680fad765217302858e70fa4Paul Duffin
4670888a09821a98ac0680fad765217302858e70fa4Paul Duffin  @GwtIncompatible("NullPointerTester")
4680888a09821a98ac0680fad765217302858e70fa4Paul Duffin  public void testStringConverter_nullPointerTester() throws Exception {
4690888a09821a98ac0680fad765217302858e70fa4Paul Duffin    NullPointerTester tester = new NullPointerTester();
4700888a09821a98ac0680fad765217302858e70fa4Paul Duffin    tester.testAllPublicInstanceMethods(Shorts.stringConverter());
4710888a09821a98ac0680fad765217302858e70fa4Paul Duffin  }
4721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert}
473