blob: 3b0958053ec6643614c7b54fca2c8530d86cf722 [file] [log] [blame]
/*
* Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.emultest.java.util;
import com.google.gwt.junit.client.GWTTestCase;
import java.util.Random;
/**
* Tests for GWT's emulation of the JRE Random class. The JRE specifies the
* exact algorithm used to generate the pseudorandom output.
*/
public class RandomTest extends GWTTestCase {
/**
* Sets module name so that javascript compiler can operate.
*/
@Override
public String getModuleName() {
return "com.google.gwt.emultest.EmulSuite";
}
public void testNextBytes() {
Random r = new Random(1);
byte[] b = new byte[5];
r.nextBytes(b);
assertEquals((byte) 115, b[0]);
assertEquals((byte) -43, b[1]);
assertEquals((byte) 26, b[2]);
assertEquals((byte) -69, b[3]);
assertEquals((byte) -40, b[4]);
try {
r.nextBytes(null);
fail("Expected NullPointerException");
} catch (NullPointerException e) {
}
}
public void testNextDouble() {
Random r = new Random(1);
assertEquals(0.7308781907032909, r.nextDouble());
assertEquals(0.41008081149220166, r.nextDouble());
assertEquals(0.20771484130971707, r.nextDouble());
assertEquals(0.3327170559595112, r.nextDouble());
assertEquals(0.9677559094241207, r.nextDouble());
}
public void testNextFloat() {
Random r = new Random(1);
assertEquals(0.7308782f, r.nextFloat());
assertEquals(0.100473166f, r.nextFloat());
assertEquals(0.4100808f, r.nextFloat());
assertEquals(0.40743977f, r.nextFloat());
assertEquals(0.2077148f, r.nextFloat());
}
public void testNextGaussian() {
Random r = new Random(1);
assertEquals(1.561581040188955, r.nextGaussian());
assertEquals(-0.6081826070068602, r.nextGaussian());
assertEquals(-1.0912278829447088, r.nextGaussian());
assertEquals(-0.6245401364066232, r.nextGaussian());
assertEquals(-1.1182832102556484, r.nextGaussian());
}
public void testNextInt() {
Random r = new Random(1);
assertEquals(-1155869325, r.nextInt());
assertEquals(431529176, r.nextInt());
assertEquals(1761283695, r.nextInt());
assertEquals(1749940626, r.nextInt());
assertEquals(892128508, r.nextInt());
try {
r.nextInt(0);
fail("Expected IlledgalArgumentException");
} catch (IllegalArgumentException e) {
}
try {
r.nextInt(-1);
fail("Expected IlledgalArgumentException");
} catch (IllegalArgumentException e) {
}
}
public void testNextInt100() {
Random r = new Random(1);
assertEquals(85, r.nextInt(100));
assertEquals(88, r.nextInt(100));
assertEquals(47, r.nextInt(100));
assertEquals(13, r.nextInt(100));
assertEquals(54, r.nextInt(100));
}
public void testNextInt128() {
Random r = new Random(1);
assertEquals(93, r.nextInt(128));
assertEquals(12, r.nextInt(128));
assertEquals(52, r.nextInt(128));
assertEquals(52, r.nextInt(128));
assertEquals(26, r.nextInt(128));
}
public void testNextLong() {
Random r = new Random(1);
assertEquals(-4964420948893066024L, r.nextLong());
assertEquals(7564655870752979346L, r.nextLong());
assertEquals(3831662765844904176L, r.nextLong());
assertEquals(6137546356583794141L, r.nextLong());
assertEquals(-594798593157429144L, r.nextLong());
}
public void testSetSeed() {
Random r = new Random();
r.setSeed(1);
byte[] b = new byte[1];
r.nextBytes(b);
assertEquals((byte) 115, b[0]);
r.setSeed(1);
assertEquals(0.7308781907032909, r.nextDouble());
r.setSeed(1);
assertEquals(0.7308782f, r.nextFloat());
r.setSeed(1);
assertEquals(1.561581040188955, r.nextGaussian());
r.setSeed(1);
assertEquals(-1155869325, r.nextInt());
r.setSeed(1);
assertEquals(85, r.nextInt(100));
r.setSeed(1);
assertEquals(93, r.nextInt(128));
r.setSeed(1);
assertEquals(-4964420948893066024L, r.nextLong());
}
}