示例#1
0
  /** test reseeding, algorithm/provider games */
  @Test
  public void testConfig() {
    randomData.reSeed(1000);
    double v = randomData.nextUniform(0, 1);
    randomData.reSeed();
    Assert.assertTrue("different seeds", Math.abs(v - randomData.nextUniform(0, 1)) > 10E-12);
    randomData.reSeed(1000);
    Assert.assertEquals("same seeds", v, randomData.nextUniform(0, 1), 10E-12);
    randomData.reSeedSecure(1000);
    String hex = randomData.nextSecureHexString(40);
    randomData.reSeedSecure();
    Assert.assertTrue("different seeds", !hex.equals(randomData.nextSecureHexString(40)));
    randomData.reSeedSecure(1000);
    Assert.assertTrue("same seeds", !hex.equals(randomData.nextSecureHexString(40)));

    /*
     * remove this test back soon, since it takes about 4 seconds
     *
     * try { randomData.setSecureAlgorithm("SHA1PRNG","SUN"); } catch
     * (NoSuchProviderException ex) { ; } Assert.assertTrue("different seeds",
     * !hex.equals(randomData.nextSecureHexString(40))); try {
     * randomData.setSecureAlgorithm("NOSUCHTHING","SUN");
     * Assert.fail("expecting NoSuchAlgorithmException"); } catch
     * (NoSuchProviderException ex) { ; } catch (NoSuchAlgorithmException
     * ex) { ; }
     *
     * try { randomData.setSecureAlgorithm("SHA1PRNG","NOSUCHPROVIDER");
     * Assert.fail("expecting NoSuchProviderException"); } catch
     * (NoSuchProviderException ex) { ; }
     */

    // test reseeding without first using the generators
    RandomDataGenerator rd = new RandomDataGenerator();
    rd.reSeed(100);
    rd.nextLong(1, 2);
    RandomDataGenerator rd2 = new RandomDataGenerator();
    rd2.reSeedSecure(2000);
    rd2.nextSecureLong(1, 2);
    rd = new RandomDataGenerator();
    rd.reSeed();
    rd.nextLong(1, 2);
    rd2 = new RandomDataGenerator();
    rd2.reSeedSecure();
    rd2.nextSecureLong(1, 2);
  }
示例#2
0
 /** test dispersion and failure modes for nextHex() */
 @Test
 @Retry(3)
 public void testNextSecureHex() {
   try {
     randomData.nextSecureHexString(-1);
     Assert.fail("negative length -- MathIllegalArgumentException expected");
   } catch (MathIllegalArgumentException ex) {
     // ignored
   }
   try {
     randomData.nextSecureHexString(0);
     Assert.fail("zero length -- MathIllegalArgumentException expected");
   } catch (MathIllegalArgumentException ex) {
     // ignored
   }
   String hexString = randomData.nextSecureHexString(3);
   if (hexString.length() != 3) {
     Assert.fail("incorrect length for generated string");
   }
   hexString = randomData.nextSecureHexString(1);
   if (hexString.length() != 1) {
     Assert.fail("incorrect length for generated string");
   }
   try {
     hexString = randomData.nextSecureHexString(0);
     Assert.fail("zero length requested -- expecting MathIllegalArgumentException");
   } catch (MathIllegalArgumentException ex) {
     // ignored
   }
   Frequency f = new Frequency();
   for (int i = 0; i < smallSampleSize; i++) {
     hexString = randomData.nextSecureHexString(100);
     if (hexString.length() != 100) {
       Assert.fail("incorrect length for generated string");
     }
     for (int j = 0; j < hexString.length(); j++) {
       f.addValue(hexString.substring(j, j + 1));
     }
   }
   double[] expected = new double[16];
   long[] observed = new long[16];
   for (int i = 0; i < 16; i++) {
     expected[i] = (double) smallSampleSize * 100 / 16;
     observed[i] = f.getCount(hex[i]);
   }
   TestUtils.assertChiSquareAccept(expected, observed, 0.001);
 }