alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Java example source code file (SymmetricRangeTests.java)

This example Java source code file (SymmetricRangeTests.java) is included in the alvinalexander.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Learn more about this Java project at its project page.

Java - Java tags/keywords

arithmeticexception, biginteger, bytearrayinputstream, bytearrayoutputstream, classnotfoundexception, ioexception, math, max_value, min_value, objectinputstream, objectoutputstream, random, runtimeexception, string, stringbuilder, util

The SymmetricRangeTests.java Java example source code

/*
 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/*
 * This test is intentionally ignored because of huge memory requirements
 * @ test
 * @run main/timeout=180/othervm -Xmx8g SymmetricRangeTests
 * @bug 6910473 8021204 8021203 9005933
 * @summary Test range of BigInteger values
 * @author Dmitry Nadezhin
 */
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Arrays;
import java.util.Random;
import java.math.BigInteger;

public class SymmetricRangeTests {

    private static final BigInteger MAX_VALUE = makeMaxValue();
    private static final BigInteger MIN_VALUE = MAX_VALUE.negate();

    private static BigInteger makeMaxValue() {
        byte[] ba = new byte[1 << 28];
        Arrays.fill(ba, (byte) 0xFF);
        ba[0] = (byte) 0x7F;
        return new BigInteger(ba);
    }

    private static void check(String msg, BigInteger actual, BigInteger expected) {
        if (!actual.equals(expected)) {
            throw new RuntimeException(msg + ".bitLength()=" + actual.bitLength());
        }
    }

    private static void check(String msg, double actual, double expected) {
        if (actual != expected) {
            throw new RuntimeException(msg + "=" + actual);
        }
    }

    private static void check(String msg, float actual, float expected) {
        if (actual != expected) {
            throw new RuntimeException(msg + "=" + actual);
        }
    }

    private static void check(String msg, long actual, long expected) {
        if (actual != expected) {
            throw new RuntimeException(msg + "=" + actual);
        }
    }

    private static void check(String msg, int actual, int expected) {
        if (actual != expected) {
            throw new RuntimeException(msg + "=" + actual);
        }
    }

    private static void testOverflowInMakePositive() {
        System.out.println("Testing overflow in BigInteger.makePositive");
        byte[] ba = new byte[Integer.MAX_VALUE - 2];
        ba[0] = (byte) 0x80;
        try {
            BigInteger actual = new BigInteger(ba);
            throw new RuntimeException("new BigInteger(ba).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testBug8021204() {
        System.out.println("Testing Bug 8021204");
        StringBuilder sb = new StringBuilder();
        sb.append('1');
        for (int i = 0; i < (1 << 30) - 1; i++) {
            sb.append('0');
        }
        sb.append('1');
        String s = sb.toString();
        sb = null;
        try {
            BigInteger actual = new BigInteger(s, 16);
            throw new RuntimeException("new BigInteger(\"1000...001\").bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testOverflowInBitSieve() {
        System.out.println("Testing overflow in BitSieve.sieveSingle");
        int bitLength = (5 << 27) - 1;
        try {
            Random rnd = new Random();
            BigInteger actual = new BigInteger(bitLength, 0, rnd);
            throw new RuntimeException("new BigInteger(bitLength, 0, null).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
        try {
            BigInteger bi = BigInteger.ONE.shiftLeft(bitLength - 1).subtract(BigInteger.ONE);
            BigInteger actual = bi.nextProbablePrime();
            throw new RuntimeException("bi.nextActualPrime().bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testAdd() {
        System.out.println("Testing BigInteger.add");
        try {
            BigInteger actual = MAX_VALUE.add(BigInteger.ONE);
            throw new RuntimeException("BigInteger.MAX_VALUE.add(BigInteger.ONE).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testSubtract() {
        System.out.println("Testing BigInteger.subtract");
        try {
            BigInteger actual = MIN_VALUE.subtract(BigInteger.ONE);
            throw new RuntimeException("BigInteger.MIN_VALUE.subtract(BigInteger.ONE).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testMultiply() {
        System.out.println("Testing BigInteger.multiply");
        int py = 2000;
        int px = Integer.MAX_VALUE - py;
        BigInteger x = BigInteger.ONE.shiftLeft(px);
        BigInteger y = BigInteger.ONE.shiftLeft(py);
        try {
            BigInteger actual = x.multiply(y);
            throw new RuntimeException("(1 << " + px + " ) * (1 << " + py + ").bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testDivide() {
        System.out.println("Testing BigInteger.divide");
        check("BigInteger.MIN_VALUE.divide(BigInteger.valueOf(-1))",
                MIN_VALUE.divide(BigInteger.valueOf(-1)), MAX_VALUE);
        check("BigInteger.MIN_VALUE.divide(BigInteger.ONE)",
                MIN_VALUE.divide(BigInteger.ONE), MIN_VALUE);
    }

    private static void testDivideAndRemainder(String msg, BigInteger dividend, BigInteger divisor,
            BigInteger expectedQuotent, BigInteger expectedRemainder) {
        BigInteger[] qr = dividend.divideAndRemainder(divisor);
        check(msg + "[0]", qr[0], expectedQuotent);
        check(msg + "[1]", qr[1], expectedRemainder);
    }

    private static void testDivideAndRemainder() {
        System.out.println("Testing BigInteger.divideAndRemainder");
        testDivideAndRemainder("BigInteger.MIN_VALUE.divideAndRemainder(BigInteger.valueOf(-1))",
                MIN_VALUE, BigInteger.valueOf(-1),
                MAX_VALUE,
                BigInteger.ZERO);
    }

    private static void testBug9005933() {
        System.out.println("Testing Bug 9005933");
        int dividendPow = 2147483646;
        int divisorPow = 1568;
        BigInteger dividend = BigInteger.ONE.shiftLeft(dividendPow);
        BigInteger divisor = BigInteger.ONE.shiftLeft(divisorPow);
        testDivideAndRemainder("(1 << " + dividendPow + ").divideAndRemainder(1 << " + divisorPow + ")",
                dividend, divisor,
                BigInteger.ONE.shiftLeft(dividendPow - divisorPow),
                BigInteger.ZERO);
    }

    private static void testRemainder() {
        System.out.println("Testing BigInteger.remainder");
        check("BigInteger.MIN_VALUE.remainder(BigInteger.valueOf(-1))",
                MIN_VALUE.remainder(BigInteger.valueOf(-1)), BigInteger.ZERO);
    }

    private static void testPow() {
        System.out.println("Testing BigInteger.pow");
        check("BigInteger.MIN_VALUE.pow(1)",
                MIN_VALUE.pow(1), MIN_VALUE);
        try {
            BigInteger actual = BigInteger.valueOf(4).pow(Integer.MAX_VALUE);
            throw new RuntimeException("BigInteger.valueOf(4).pow(Integer.MAX_VALUE).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testGcd() {
        System.out.println("Testing BigInteger.gcd");
        check("BigInteger.MIN_VALUE.gcd(BigInteger.MIN_VALUE)",
                MIN_VALUE.gcd(MIN_VALUE), MAX_VALUE);
        check("BigInteger.MIN_VALUE.gcd(BigInteger.ZERO)",
                MIN_VALUE.gcd(BigInteger.ZERO), MAX_VALUE);
        check("BigInteger.ZERO.gcd(MIN_VALUE)",
                BigInteger.ZERO.gcd(MIN_VALUE), MAX_VALUE);
    }

    private static void testAbs() {
        System.out.println("Testing BigInteger.abs");
        check("BigInteger.MIN_VALUE.abs()",
                MIN_VALUE.abs(), MAX_VALUE);
        check("BigInteger.MAX_VALUE.abs()",
                MAX_VALUE.abs(), MAX_VALUE);
    }

    private static void testNegate() {
        System.out.println("Testing BigInteger.negate");
        check("BigInteger.MIN_VALUE.negate()",
                MIN_VALUE.negate(), MAX_VALUE);
        check("BigInteger.MAX_VALUE.negate()",
                MAX_VALUE.negate(), MIN_VALUE);
    }

    private static void testMod() {
        System.out.println("Testing BigInteger.mod");
        check("BigInteger.MIN_VALUE.mod(BigInteger.MAX_VALUE)",
                MIN_VALUE.mod(MAX_VALUE), BigInteger.ZERO);
        check("BigInteger.MAX_VALUE.mod(BigInteger.MAX_VALUE)",
                MIN_VALUE.mod(MAX_VALUE), BigInteger.ZERO);
    }

    private static void testModPow() {
        System.out.println("Testing BigInteger.modPow");
        BigInteger x = BigInteger.valueOf(3);
        BigInteger m = BigInteger.valueOf(-4).subtract(MIN_VALUE);
        check("BigInteger.valueOf(3).modPow(BigInteger.ONE, m)",
                x.modPow(BigInteger.ONE, m), x);
    }

    // slow test
    private static void testModInverse() {
        System.out.println("Testing BigInteger.modInverse");
        check("BigInteger.MIN_VALUE.modInverse(BigInteger.MAX_VALUE)",
                MIN_VALUE.modInverse(MAX_VALUE), MAX_VALUE.subtract(BigInteger.ONE));
    }

    private static void testShiftLeft() {
        System.out.println("Testing BigInteger.shiftLeft");
        try {
            BigInteger actual = MIN_VALUE.shiftLeft(1);
            throw new RuntimeException("BigInteger.MIN_VALUE.shiftLeft(1).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
        try {
            BigInteger actual = MAX_VALUE.shiftLeft(1);
            throw new RuntimeException("BigInteger.MAX_VALUE.shiftLeft(1).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testShiftRight() {
        System.out.println("Testing BigInteger.shiftRight");
        try {
            BigInteger actual = MIN_VALUE.shiftRight(-1);
            throw new RuntimeException("BigInteger.MIN_VALUE.shiftRight(-1).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
        try {
            BigInteger actual = MAX_VALUE.shiftRight(-1);
            throw new RuntimeException("BigInteger.MAX_VALUE.shiftRight(-1).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testAnd() {
        System.out.println("Testing BigInteger.and");
        check("BigInteger.MIN_VALUE.and(BigInteger.MIN_VALUE)",
                MIN_VALUE.and(MIN_VALUE), MIN_VALUE);
        check("BigInteger.MAX_VALUE.and(BigInteger.MAX_VALUE)",
                MAX_VALUE.and(MAX_VALUE), MAX_VALUE);
        check("BigInteger.MIN_VALUE.and(BigInteger.MAX_VALUE)",
                MIN_VALUE.and(MAX_VALUE), BigInteger.ONE);
        try {
            BigInteger actual = MIN_VALUE.and(BigInteger.valueOf(-2));
            throw new RuntimeException("BigInteger.MIN_VALUE.and(-2)).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testOr() {
        System.out.println("Testing BigInteger.or");
        check("BigInteger.MIN_VALUE.or(BigInteger.MIN_VALUE)",
                MIN_VALUE.or(MIN_VALUE), MIN_VALUE);
        check("BigInteger.MAX_VALUE.or(BigInteger.MAX_VALUE)",
                MAX_VALUE.or(MAX_VALUE), MAX_VALUE);
        check("BigInteger.MIN_VALUE.and(BigInteger.MAX_VALUE)",
                MIN_VALUE.or(MAX_VALUE), BigInteger.valueOf(-1));
    }

    private static void testXor() {
        System.out.println("Testing BigInteger.xor");
        check("BigInteger.MIN_VALUE.xor(BigInteger.MIN_VALUE)",
                MIN_VALUE.xor(MIN_VALUE), BigInteger.ZERO);
        check("BigInteger.MAX_VALUE.xor(BigInteger.MAX_VALUE)",
                MAX_VALUE.xor(MAX_VALUE), BigInteger.ZERO);
        check("BigInteger.MIN_VALUE.xor(BigInteger.MAX_VALUE)",
                MIN_VALUE.xor(MAX_VALUE), BigInteger.valueOf(-2));
        try {
            BigInteger actual = MIN_VALUE.xor(BigInteger.ONE);
            throw new RuntimeException("BigInteger.MIN_VALUE.xor(BigInteger.ONE)).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testNot() {
        System.out.println("Testing BigInteger.not");
        check("BigInteger.MIN_VALUE.not()",
                MIN_VALUE.not(), MAX_VALUE.subtract(BigInteger.ONE));
        try {
            BigInteger actual = MAX_VALUE.not();
            throw new RuntimeException("BigInteger.MAX_VALUE.not()).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testSetBit() {
        System.out.println("Testing BigInteger.setBit");
        check("BigInteger.MIN_VALUE.setBit(" + Integer.MAX_VALUE + ")",
                MIN_VALUE.setBit(Integer.MAX_VALUE), MIN_VALUE);
        try {
            BigInteger actual = MAX_VALUE.setBit(Integer.MAX_VALUE);
            throw new RuntimeException("BigInteger.MAX_VALUE.setBit(" + Integer.MAX_VALUE + ").bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testClearBit() {
        System.out.println("Testing BigInteger.clearBit");
        check("BigInteger.MAX_VALUE.clearBit(" + Integer.MAX_VALUE + ")",
                MAX_VALUE.clearBit(Integer.MAX_VALUE), MAX_VALUE);
        try {
            BigInteger actual = MIN_VALUE.clearBit(Integer.MAX_VALUE);
            throw new RuntimeException("BigInteger.MIN_VALUE.clearBit(" + Integer.MAX_VALUE + ").bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
        try {
            BigInteger actual = MIN_VALUE.clearBit(0);
            throw new RuntimeException("BigInteger.MIN_VALUE.clearBit(0).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testFlipBit() {
        System.out.println("Testing BigInteger.flipBit");
        try {
            BigInteger actual = MIN_VALUE.flipBit(Integer.MAX_VALUE);
            throw new RuntimeException("BigInteger.MIN_VALUE.flipBit(" + Integer.MAX_VALUE + ").bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
        try {
            BigInteger actual = MIN_VALUE.flipBit(0);
            throw new RuntimeException("BigInteger.MIN_VALUE.flipBit(0).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
        try {
            BigInteger actual = MAX_VALUE.flipBit(Integer.MAX_VALUE);
            throw new RuntimeException("BigInteger.MAX_VALUE.flipBit(" + Integer.MAX_VALUE + ").bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testGetLowestSetBit() {
        System.out.println("Testing BigInteger.getLowestSetBit");
        check("BigInteger.MIN_VALUE.getLowestSetBit()",
                MIN_VALUE.getLowestSetBit(), 0);
        check("BigInteger.MAX_VALUE.getLowestSetBit()",
                MAX_VALUE.getLowestSetBit(), 0);
    }

    private static void testBitLength() {
        System.out.println("Testing BigInteger.bitLength");
        check("BigInteger.MIN_NEXT.bitLength()",
                MIN_VALUE.bitLength(), Integer.MAX_VALUE);
        check("BigInteger.MAX_VALUE.bitLength()",
                MAX_VALUE.bitLength(), Integer.MAX_VALUE);
    }

    private static void testBitCount() {
        System.out.println("Testing BigInteger.bitCount");
        check("BigInteger.MIN_VALUE.bitCount()",
                MIN_VALUE.bitCount(), Integer.MAX_VALUE - 1);
        check("BigInteger.MAX_VALUE.bitCount()",
                MAX_VALUE.bitCount(), Integer.MAX_VALUE);
    }

    private static void testToString(String msg, int radix, BigInteger bi, int length, String startsWith, char c) {
        String s = bi.toString(radix);
        if (s.length() != length) {
            throw new RuntimeException(msg + ".length=" + s.length());
        }
        if (!s.startsWith(startsWith)) {
            throw new RuntimeException(msg + "[0]=" + s.substring(0, startsWith.length()));
        }
        for (int i = startsWith.length(); i < s.length(); i++) {
            if (s.charAt(i) != c) {
                throw new RuntimeException(msg + "[" + i + "]='" + s.charAt(i) + "'");
            }
        }
    }

    private static void testToString() {
        System.out.println("Testing BigInteger.toString");
        testToString("BigInteger.MIN_VALUE.toString(16)=", 16,
                BigInteger.valueOf(-1).shiftLeft(Integer.MAX_VALUE - 1),
                (1 << 29) + 1, "-4", '0');
    }

    private static void testToByteArrayWithConstructor(String msg, BigInteger bi, int length, byte msb, byte b, byte lsb) {
        byte[] ba = bi.toByteArray();
        if (ba.length != length) {
            throw new RuntimeException(msg + ".length=" + ba.length);
        }
        if (ba[0] != msb) {
            throw new RuntimeException(msg + "[0]=" + ba[0]);
        }
        for (int i = 1; i < ba.length - 1; i++) {
            if (ba[i] != b) {
                throw new RuntimeException(msg + "[" + i + "]=" + ba[i]);
            }
        }
        if (ba[ba.length - 1] != lsb) {
            throw new RuntimeException(msg + "[" + (ba.length - 1) + "]=" + ba[ba.length - 1]);
        }
        BigInteger actual = new BigInteger(ba);
        if (!actual.equals(bi)) {
            throw new RuntimeException(msg + ".bitLength()=" + actual.bitLength());
        }
    }

    private static void testToByteArrayWithConstructor() {
        System.out.println("Testing BigInteger.toByteArray with constructor");
        testToByteArrayWithConstructor("BigInteger.MIN_VALUE.toByteArray()",
                MIN_VALUE, (1 << 28), (byte) 0x80, (byte) 0x00, (byte) 0x01);
        testToByteArrayWithConstructor("BigInteger.MAX_VALUE.toByteArray()",
                MAX_VALUE, (1 << 28), (byte) 0x7f, (byte) 0xff, (byte) 0xff);

        byte[] ba = new byte[1 << 28];
        ba[0] = (byte) 0x80;
        try {
            BigInteger actual = new BigInteger(-1, ba);
            throw new RuntimeException("new BigInteger(-1, ba).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
        try {
            BigInteger actual = new BigInteger(1, ba);
            throw new RuntimeException("new BigInteger(1, ba).bitLength()=" + actual.bitLength());
        } catch (ArithmeticException e) {
            // expected
        }
    }

    private static void testIntValue() {
        System.out.println("Testing BigInteger.intValue");
        check("BigInteger.MIN_VALUE.intValue()",
                MIN_VALUE.intValue(), 1);
        check("BigInteger.MAX_VALUE.floatValue()",
                MAX_VALUE.intValue(), -1);
    }

    private static void testLongValue() {
        System.out.println("Testing BigInteger.longValue");
        check("BigInteger.MIN_VALUE.longValue()",
                MIN_VALUE.longValue(), 1L);
        check("BigInteger.MAX_VALUE.longValue()",
                MAX_VALUE.longValue(), -1L);
    }

    private static void testFloatValue() {
        System.out.println("Testing BigInteger.floatValue, Bug 8021203");
        check("BigInteger.MIN_VALUE_.floatValue()",
                MIN_VALUE.floatValue(), Float.NEGATIVE_INFINITY);
        check("BigInteger.MAX_VALUE.floatValue()",
                MAX_VALUE.floatValue(), Float.POSITIVE_INFINITY);
    }

    private static void testDoubleValue() {
        System.out.println("Testing BigInteger.doubleValue, Bug 8021203");
        check("BigInteger.MIN_VALUE.doubleValue()",
                MIN_VALUE.doubleValue(), Double.NEGATIVE_INFINITY);
        check("BigInteger.MAX_VALUE.doubleValue()",
                MAX_VALUE.doubleValue(), Double.POSITIVE_INFINITY);
    }

    private static void testSerialization(String msg, BigInteger bi) {
        try {
            ByteArrayOutputStream baOut = new ByteArrayOutputStream((1 << 28) + 1000);
            ObjectOutputStream out = new ObjectOutputStream(baOut);
            out.writeObject(bi);
            out.close();
            out = null;
            byte[] ba = baOut.toByteArray();
            baOut = null;
            ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(ba));
            BigInteger actual = (BigInteger) in.readObject();
            if (!actual.equals(bi)) {
                throw new RuntimeException(msg + ".bitLength()=" + actual.bitLength());
            }
        } catch (IOException | ClassNotFoundException e) {
            throw new RuntimeException(msg + " raised exception ", e);
        }
    }

    private static void testSerialization() {
        System.out.println("Testing BigInteger serialization");
        testSerialization("BigInteger.MIN_VALUE.intValue()",
                MIN_VALUE);
        testSerialization("BigInteger.MAX_VALUE.floatValue()",
                MAX_VALUE);
    }

    private static void testLongValueExact() {
        System.out.println("Testing BigInteger.longValueExact");
        try {
            long actual = MIN_VALUE.longValueExact();
            throw new RuntimeException("BigInteger.MIN_VALUE.longValueExact()= " + actual);
        } catch (ArithmeticException e) {
            // excpected
        }
        try {
            long actual = MAX_VALUE.longValueExact();
            throw new RuntimeException("BigInteger.MAX_VALUE.longValueExact()= " + actual);
        } catch (ArithmeticException e) {
            // excpected
        }
    }

    private static void testIntValueExact() {
        System.out.println("Testing BigInteger.intValueExact");
        try {
            long actual = MIN_VALUE.intValueExact();
            throw new RuntimeException("BigInteger.MIN_VALUE.intValueExact()= " + actual);
        } catch (ArithmeticException e) {
            // excpected
        }
        try {
            long actual = MAX_VALUE.intValueExact();
            throw new RuntimeException("BigInteger.MAX_VALUE.intValueExact()= " + actual);
        } catch (ArithmeticException e) {
            // excpected
        }
    }

    private static void testShortValueExact() {
        System.out.println("Testing BigInteger.shortValueExact");
        try {
            long actual = MIN_VALUE.shortValueExact();
            throw new RuntimeException("BigInteger.MIN_VALUE.shortValueExact()= " + actual);
        } catch (ArithmeticException e) {
            // excpected
        }
        try {
            long actual = MAX_VALUE.shortValueExact();
            throw new RuntimeException("BigInteger.MAX_VALUE.shortValueExact()= " + actual);
        } catch (ArithmeticException e) {
            // excpected
        }
    }

    private static void testByteValueExact() {
        System.out.println("Testing BigInteger.byteValueExact");
        try {
            long actual = MIN_VALUE.byteValueExact();
            throw new RuntimeException("BigInteger.MIN_VALUE.byteValueExact()= " + actual);
        } catch (ArithmeticException e) {
            // excpected
        }
        try {
            long actual = MAX_VALUE.byteValueExact();
            throw new RuntimeException("BigInteger.MAX_VALUE.byteValueExact()= " + actual);
        } catch (ArithmeticException e) {
            // excpected
        }
    }

    public static void main(String... args) {
        testOverflowInMakePositive();
        testBug8021204();
        testOverflowInBitSieve();
        testAdd();
        testSubtract();
        testMultiply();
        testDivide();
        testDivideAndRemainder();
        testBug9005933();
        testRemainder();
        testPow();
        testGcd();
        testAbs();
        testNegate();
        testMod();
        testModPow();
//        testModInverse();
        testShiftLeft();
        testShiftRight();
        testAnd();
        testOr();
        testXor();
        testNot();
        testSetBit();
        testClearBit();
        testFlipBit();
        testGetLowestSetBit();
        testBitLength();
        testBitCount();
        testToString();
        testToByteArrayWithConstructor();
        testIntValue();
        testLongValue();
        testFloatValue();
        testDoubleValue();
        testSerialization();
        testLongValueExact();
        testIntValueExact();
        testShortValueExact();
        testByteValueExact();
    }
}

Other Java examples (source code examples)

Here is a short list of links related to this Java SymmetricRangeTests.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.