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