# HG changeset patch # User bpb # Date 1545426183 28800 # Node ID a99c27c78f9ea089f5557ef79662641eb6a62922 # Parent 2e82ca64b25dfa5c191e076c1472784e4b422c19 8215759: [test] java/math/BigInteger/ModPow.java can throw an ArithmeticException Reviewed-by: rriggs, plevart, smarks diff -r 2e82ca64b25d -r a99c27c78f9e test/jdk/java/math/BigInteger/ModPow.java --- a/test/jdk/java/math/BigInteger/ModPow.java Fri Dec 21 10:38:33 2018 -0800 +++ b/test/jdk/java/math/BigInteger/ModPow.java Fri Dec 21 13:03:03 2018 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2018, 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 @@ -22,18 +22,25 @@ */ /* @test - * @bug 4181191 - * @summary test BigInteger modPow method + * @bug 4181191 8215759 + * @summary test BigInteger modPow method (use -Dseed=X to set PRNG seed) + * @library /test/lib + * @build jdk.test.lib.RandomFactory + * @run main ModPow + * @key randomness */ import java.math.BigInteger; import java.util.Random; +import jdk.test.lib.RandomFactory; public class ModPow { public static void main(String[] args) { - Random rnd = new Random(1234); + Random rnd = RandomFactory.getRandom(); for (int i=0; i<2000; i++) { - BigInteger m = new BigInteger(800, rnd); + // Clamp random modulus to a positive value or modPow() will + // throw an ArithmeticException. + BigInteger m = new BigInteger(800, rnd).max(BigInteger.ONE); BigInteger base = new BigInteger(16, rnd); if (rnd.nextInt() % 1 == 0) base = base.negate();