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 static java.math.BigInteger.ONE;
181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.math.BigInteger;
201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Random;
211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.TestCase;
231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtCompatible;
251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtIncompatible;
261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.NullPointerTester;
271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/**
291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for UnsignedLongs
301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Brian Milch
321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Louis Wasserman
331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */
341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@GwtCompatible(emulated = true)
351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class UnsignedLongsTest extends TestCase {
361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testCompare() {
381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // max value
391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue((UnsignedLongs.compare(0, 0xffffffffffffffffL) < 0));
401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue((UnsignedLongs.compare(0xffffffffffffffffL, 0) > 0));
411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // both with high bit set
431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue((UnsignedLongs.compare(0xff1a618b7f65ea12L, 0xffffffffffffffffL) < 0));
441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue((UnsignedLongs.compare(0xffffffffffffffffL, 0xff1a618b7f65ea12L) > 0));
451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // one with high bit set
471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue((UnsignedLongs.compare(0x5a4316b8c153ac4dL, 0xff1a618b7f65ea12L) < 0));
481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue((UnsignedLongs.compare(0xff1a618b7f65ea12L, 0x5a4316b8c153ac4dL) > 0));
491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // neither with high bit set
511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue((UnsignedLongs.compare(0x5a4316b8c153ac4dL, 0x6cf78a4b139a4e2aL) < 0));
521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue((UnsignedLongs.compare(0x6cf78a4b139a4e2aL, 0x5a4316b8c153ac4dL) > 0));
531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // same value
551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue((UnsignedLongs.compare(0xff1a618b7f65ea12L, 0xff1a618b7f65ea12L) == 0));
561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testDivide() {
591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(2, UnsignedLongs.divide(14, 5));
601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, UnsignedLongs.divide(0, 50));
611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(1, UnsignedLongs.divide(0xfffffffffffffffeL, 0xfffffffffffffffdL));
621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, UnsignedLongs.divide(0xfffffffffffffffdL, 0xfffffffffffffffeL));
631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(281479271743488L, UnsignedLongs.divide(0xfffffffffffffffeL, 65535));
641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0x7fffffffffffffffL, UnsignedLongs.divide(0xfffffffffffffffeL, 2));
651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(3689348814741910322L, UnsignedLongs.divide(0xfffffffffffffffeL, 5));
661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testRemainder() {
691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(4, UnsignedLongs.remainder(14, 5));
701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, UnsignedLongs.remainder(0, 50));
711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(1, UnsignedLongs.remainder(0xfffffffffffffffeL, 0xfffffffffffffffdL));
721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0xfffffffffffffffdL,
731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        UnsignedLongs.remainder(0xfffffffffffffffdL, 0xfffffffffffffffeL));
741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(65534L, UnsignedLongs.remainder(0xfffffffffffffffeL, 65535));
751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0, UnsignedLongs.remainder(0xfffffffffffffffeL, 2));
761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(4, UnsignedLongs.remainder(0xfffffffffffffffeL, 5));
771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  @GwtIncompatible("Too slow in GWT (~3min fully optimized)")
801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testDivideRemainderEuclideanProperty() {
811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // Use a seed so that the test is deterministic:
821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    Random r = new Random(0L);
831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    for (int i = 0; i < 1000000; i++) {
841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      long dividend = r.nextLong();
851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      long divisor = r.nextLong();
861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      // Test that the Euclidean property is preserved:
871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertTrue(dividend - (divisor * UnsignedLongs.divide(dividend, divisor)
881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert          + UnsignedLongs.remainder(dividend, divisor)) == 0);
891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testParseLong() {
931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertEquals(0xffffffffffffffffL, UnsignedLongs.parseUnsignedLong("18446744073709551615"));
951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertEquals(0x7fffffffffffffffL, UnsignedLongs.parseUnsignedLong("9223372036854775807"));
961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertEquals(0xff1a618b7f65ea12L, UnsignedLongs.parseUnsignedLong("18382112080831834642"));
971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertEquals(0x5a4316b8c153ac4dL, UnsignedLongs.parseUnsignedLong("6504067269626408013"));
981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertEquals(0x6cf78a4b139a4e2aL, UnsignedLongs.parseUnsignedLong("7851896530399809066"));
991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (NumberFormatException e) {
1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      fail(e.getMessage());
1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    boolean overflowCaught = false;
1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      // One more than maximum value
1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      UnsignedLongs.parseUnsignedLong("18446744073709551616");
1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (NumberFormatException e) {
1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      overflowCaught = true;
1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertTrue(overflowCaught);
1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testParseLongWithRadix() throws NumberFormatException {
1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0xffffffffffffffffL, UnsignedLongs.parseUnsignedLong("ffffffffffffffff", 16));
1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    assertEquals(0x1234567890abcdefL, UnsignedLongs.parseUnsignedLong("1234567890abcdef", 16));
1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    BigInteger max = BigInteger.ZERO.setBit(64).subtract(ONE);
1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // loops through all legal radix values.
1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX; radix++) {
1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      // tests can successfully parse a number string with this radix.
1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      String maxAsString = max.toString(radix);
1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      assertEquals(max.longValue(), UnsignedLongs.parseUnsignedLong(maxAsString, radix));
1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      try {
1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        // tests that we get exception whre an overflow would occur.
1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        BigInteger overflow = max.add(ONE);
1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        String overflowAsString = overflow.toString(radix);
1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        UnsignedLongs.parseUnsignedLong(overflowAsString, radix);
1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        fail();
1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      } catch (NumberFormatException nfe) {
1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        // expected
1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      }
1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testParseLongThrowsExceptionForInvalidRadix() {
1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // Valid radix values are Character.MIN_RADIX to Character.MAX_RADIX,
1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // inclusive.
1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      UnsignedLongs.parseUnsignedLong("0", Character.MIN_RADIX - 1);
1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      fail();
1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (NumberFormatException nfe) {
1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      // expected
1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      UnsignedLongs.parseUnsignedLong("0", Character.MAX_RADIX + 1);
1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      fail();
1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (NumberFormatException nfe) {
1501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      // expected
1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    // The radix is used as an array index, so try a negative value.
1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    try {
1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      UnsignedLongs.parseUnsignedLong("0", -1);
1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      fail();
1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    } catch (NumberFormatException nfe) {
1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      // expected
1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testToString() {
1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    String[] tests = {
1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        "ffffffffffffffff",
1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        "7fffffffffffffff",
1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        "ff1a618b7f65ea12",
1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        "5a4316b8c153ac4d",
1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        "6cf78a4b139a4e2a"};
1691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    int[] bases = {2, 5, 7, 8, 10, 16};
1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    for (int base : bases) {
1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      for (String x : tests) {
1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        BigInteger xValue = new BigInteger(x, 16);
1731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        long xLong = xValue.longValue(); // signed
1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        assertEquals(xValue.toString(base), UnsignedLongs.toString(xLong, base));
1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert      }
1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
1791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  @GwtIncompatible("NullPointerTester")
1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  public void testNulls() throws Exception {
1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    NullPointerTester tester = new NullPointerTester();
1821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    tester.setDefault(long[].class, new long[0]);
1831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    tester.setDefault(BigInteger.class, BigInteger.ZERO);
1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    tester.testAllPublicStaticMethods(UnsignedLongs.class);
1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert  }
1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert}
187