11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/* 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2011 The Guava Authors 31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * in compliance with the License. You may obtain a copy of the License at 61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0 81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unless required by applicable law or agreed to in writing, software distributed under the 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.primitives; 161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.math.BigInteger; 181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.TestCase; 201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtCompatible; 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtIncompatible; 231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.ImmutableSet; 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.EqualsTester; 251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.NullPointerTester; 261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.SerializableTester; 271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/** 291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for {@code UnsignedLong}. 301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Louis Wasserman 321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@GwtCompatible(emulated = true) 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class UnsignedLongTest extends TestCase { 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final ImmutableSet<Long> TEST_LONGS; 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert static { 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableSet.Builder<Long> testLongsBuilder = ImmutableSet.builder(); 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long i = -3; i <= 3; i++) { 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert testLongsBuilder 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .add(i) 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .add(Long.MAX_VALUE + i) 431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .add(Long.MIN_VALUE + i) 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .add(Integer.MIN_VALUE + i) 451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .add(Integer.MAX_VALUE + i); 461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert TEST_LONGS = testLongsBuilder.build(); 481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAsUnsignedAndLongValueAreInverses() { 511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long value : TEST_LONGS) { 521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals( 531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLongs.toString(value), value, UnsignedLong.asUnsigned(value).longValue()); 541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAsUnsignedBigIntegerValue() { 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long value : TEST_LONGS) { 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert BigInteger expected = (value >= 0) 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ? BigInteger.valueOf(value) 611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert : BigInteger.valueOf(value).add(BigInteger.ZERO.setBit(64)); 621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(UnsignedLongs.toString(value), expected, 631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong.asUnsigned(value).bigIntegerValue()); 641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testToString() { 681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long value : TEST_LONGS) { 691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong unsignedValue = UnsignedLong.asUnsigned(value); 701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(unsignedValue.bigIntegerValue().toString(), unsignedValue.toString()); 711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("too slow") 751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testToStringRadix() { 761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX; radix++) { 771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long l : TEST_LONGS) { 781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong value = UnsignedLong.asUnsigned(l); 791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(value.bigIntegerValue().toString(radix), value.toString(radix)); 801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testToStringRadixQuick() { 851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert int[] radices = {2, 3, 5, 7, 10, 12, 16, 21, 31, 36}; 861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (int radix : radices) { 871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long l : TEST_LONGS) { 881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong value = UnsignedLong.asUnsigned(l); 891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(value.bigIntegerValue().toString(radix), value.toString(radix)); 901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testFloatValue() { 951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long value : TEST_LONGS) { 961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong unsignedValue = UnsignedLong.asUnsigned(value); 971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(unsignedValue.bigIntegerValue().floatValue(), unsignedValue.floatValue()); 981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testDoubleValue() { 1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long value : TEST_LONGS) { 1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong unsignedValue = UnsignedLong.asUnsigned(value); 1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(unsignedValue.bigIntegerValue().doubleValue(), unsignedValue.doubleValue()); 1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAdd() { 1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long a : TEST_LONGS) { 1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long b : TEST_LONGS) { 1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong aUnsigned = UnsignedLong.asUnsigned(a); 1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong bUnsigned = UnsignedLong.asUnsigned(b); 1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert long expected = aUnsigned 1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .bigIntegerValue() 1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .add(bUnsigned.bigIntegerValue()) 1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .longValue(); 1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong unsignedSum = aUnsigned.add(bUnsigned); 1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(expected, unsignedSum.longValue()); 1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testSubtract() { 1241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long a : TEST_LONGS) { 1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long b : TEST_LONGS) { 1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong aUnsigned = UnsignedLong.asUnsigned(a); 1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong bUnsigned = UnsignedLong.asUnsigned(b); 1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert long expected = aUnsigned 1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .bigIntegerValue() 1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .subtract(bUnsigned.bigIntegerValue()) 1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .longValue(); 1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong unsignedSub = aUnsigned.subtract(bUnsigned); 1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(expected, unsignedSub.longValue()); 1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testMultiply() { 1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long a : TEST_LONGS) { 1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long b : TEST_LONGS) { 1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong aUnsigned = UnsignedLong.asUnsigned(a); 1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong bUnsigned = UnsignedLong.asUnsigned(b); 1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert long expected = aUnsigned 1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .bigIntegerValue() 1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .multiply(bUnsigned.bigIntegerValue()) 1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .longValue(); 1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong unsignedMul = aUnsigned.multiply(bUnsigned); 1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(expected, unsignedMul.longValue()); 1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testDivide() { 1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long a : TEST_LONGS) { 1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long b : TEST_LONGS) { 1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (b != 0) { 1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong aUnsigned = UnsignedLong.asUnsigned(a); 1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong bUnsigned = UnsignedLong.asUnsigned(b); 1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert long expected = aUnsigned 1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .bigIntegerValue() 1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .divide(bUnsigned.bigIntegerValue()) 1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .longValue(); 1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong unsignedDiv = aUnsigned.divide(bUnsigned); 1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(expected, unsignedDiv.longValue()); 1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testDivideByZeroThrows() { 1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long a : TEST_LONGS) { 1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong.asUnsigned(a).divide(UnsignedLong.ZERO); 1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("Expected ArithmeticException"); 1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (ArithmeticException expected) {} 1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testRemainder() { 1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long a : TEST_LONGS) { 1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long b : TEST_LONGS) { 1821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (b != 0) { 1831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong aUnsigned = UnsignedLong.asUnsigned(a); 1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong bUnsigned = UnsignedLong.asUnsigned(b); 1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert long expected = aUnsigned 1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .bigIntegerValue() 1871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .remainder(bUnsigned.bigIntegerValue()) 1881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .longValue(); 1891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong unsignedRem = aUnsigned.remainder(bUnsigned); 1901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(expected, unsignedRem.longValue()); 1911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testRemainderByZero() { 1971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long a : TEST_LONGS) { 1981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong.asUnsigned(a).remainder(UnsignedLong.ZERO); 2001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("Expected ArithmeticException"); 2011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (ArithmeticException expected) {} 2021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCompare() { 2061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long a : TEST_LONGS) { 2071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long b : TEST_LONGS) { 2081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong aUnsigned = UnsignedLong.asUnsigned(a); 2091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong bUnsigned = UnsignedLong.asUnsigned(b); 2101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(aUnsigned.bigIntegerValue().compareTo(bUnsigned.bigIntegerValue()), 2111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert aUnsigned.compareTo(bUnsigned)); 2121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("too slow") 2171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testEqualsAndValueOf() { 2181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert EqualsTester equalsTester = new EqualsTester(); 2191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long a : TEST_LONGS) { 2201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert BigInteger big = 2211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert (a >= 0) ? BigInteger.valueOf(a) : BigInteger.valueOf(a).add(BigInteger.ZERO.setBit(64)); 2221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert equalsTester.addEqualityGroup(UnsignedLong.asUnsigned(a), UnsignedLong.valueOf(big), 2231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong.valueOf(big.toString()), UnsignedLong.valueOf(big.toString(16), 16)); 2241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert equalsTester.testEquals(); 2261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIntValue() { 2291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long a : TEST_LONGS) { 2301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnsignedLong aUnsigned = UnsignedLong.asUnsigned(a); 2311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert int intValue = aUnsigned.bigIntegerValue().intValue(); 2321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(intValue, aUnsigned.intValue()); 2331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("serialization") 2371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testSerialization() { 2381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (long a : TEST_LONGS) { 2391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SerializableTester.reserializeAndAssert(UnsignedLong.asUnsigned(a)); 2401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("NullPointerTester") 2441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testNulls() throws Exception { 2451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert NullPointerTester tester = new NullPointerTester(); 2461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.setDefault(UnsignedLong.class, UnsignedLong.ONE); 2471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.testAllPublicStaticMethods(UnsignedLong.class); 2481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 250