2018-07-14 15:00:37 +02:00
|
|
|
package com.baeldung.random;
|
2014-07-19 21:33:42 +03:00
|
|
|
|
2014-07-21 22:08:24 +03:00
|
|
|
import org.apache.commons.lang3.RandomStringUtils;
|
2014-07-19 21:33:42 +03:00
|
|
|
import org.apache.commons.math3.random.RandomDataGenerator;
|
|
|
|
|
import org.junit.Test;
|
2017-05-03 09:29:10 +02:00
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
2014-07-19 21:33:42 +03:00
|
|
|
|
2017-02-05 08:55:35 +01:00
|
|
|
import java.nio.charset.Charset;
|
|
|
|
|
import java.util.Random;
|
|
|
|
|
|
2014-11-02 01:19:58 +02:00
|
|
|
public class JavaRandomUnitTest {
|
2014-07-19 21:33:42 +03:00
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
private static final Logger LOG = LoggerFactory.getLogger(JavaRandomUnitTest.class);
|
|
|
|
|
|
2014-07-19 21:33:42 +03:00
|
|
|
// tests - random long
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenUsingPlainJava_whenGeneratingRandomLongUnbounded_thenCorrect() {
|
|
|
|
|
final long generatedLong = new Random().nextLong();
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedLong);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
2014-08-05 09:50:16 +03:00
|
|
|
@Test
|
|
|
|
|
public void givenUsingApacheCommons_whenGeneratingRandomLongUnbounded_thenCorrect() {
|
2017-08-24 13:11:52 +03:00
|
|
|
final long generatedLong = new RandomDataGenerator().getRandomGenerator()
|
|
|
|
|
.nextLong();
|
2014-08-05 09:50:16 +03:00
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedLong);
|
2014-08-05 09:50:16 +03:00
|
|
|
}
|
|
|
|
|
|
2014-07-19 21:33:42 +03:00
|
|
|
@Test
|
|
|
|
|
public void givenUsingPlainJava_whenGeneratingRandomLongBounded_thenCorrect() {
|
|
|
|
|
final long leftLimit = 1L;
|
|
|
|
|
final long rightLimit = 10L;
|
|
|
|
|
final long generatedLong = leftLimit + (long) (Math.random() * (rightLimit - leftLimit));
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedLong);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenUsingApacheCommons_whenGeneratingRandomLongBounded_thenCorrect() {
|
|
|
|
|
final long leftLimit = 10L;
|
|
|
|
|
final long rightLimit = 100L;
|
|
|
|
|
final long generatedLong = new RandomDataGenerator().nextLong(leftLimit, rightLimit);
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedLong);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// tests - random int
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenUsingPlainJava_whenGeneratingRandomIntegerUnbounded_thenCorrect() {
|
|
|
|
|
final int generatedInteger = new Random().nextInt();
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedInteger);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenUsingPlainJava_whenGeneratingRandomIntegerBounded_thenCorrect() {
|
|
|
|
|
final int leftLimit = 1;
|
|
|
|
|
final int rightLimit = 10;
|
|
|
|
|
final int generatedInteger = leftLimit + (int) (new Random().nextFloat() * (rightLimit - leftLimit));
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedInteger);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
2014-08-05 09:50:16 +03:00
|
|
|
@Test
|
|
|
|
|
public void givenUsingApache_whenGeneratingRandomIntegerUnbounded_thenCorrect() {
|
2017-08-24 13:11:52 +03:00
|
|
|
final Integer generatedInteger = new RandomDataGenerator().getRandomGenerator()
|
|
|
|
|
.nextInt();
|
2014-08-05 09:50:16 +03:00
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedInteger);
|
2014-08-05 09:50:16 +03:00
|
|
|
}
|
|
|
|
|
|
2014-07-19 21:33:42 +03:00
|
|
|
@Test
|
|
|
|
|
public void givenUsingApache_whenGeneratingRandomIntegerBounded_thenCorrect() {
|
|
|
|
|
final int leftLimit = 1;
|
|
|
|
|
final int rightLimit = 10;
|
|
|
|
|
final int generatedInteger = new RandomDataGenerator().nextInt(leftLimit, rightLimit);
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedInteger);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// tests - random float
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenUsingPlainJava_whenGeneratingRandomFloatUnbouned_thenCorrect() {
|
|
|
|
|
final float generatedFloat = new Random().nextFloat();
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedFloat);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
2014-08-05 09:50:16 +03:00
|
|
|
@Test
|
|
|
|
|
public void givenUsingApache_whenGeneratingRandomFloatUnbounded_thenCorrect() {
|
2017-08-24 13:11:52 +03:00
|
|
|
final float generatedFloat = new RandomDataGenerator().getRandomGenerator()
|
|
|
|
|
.nextFloat();
|
2014-08-05 09:50:16 +03:00
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedFloat);
|
2014-08-05 09:50:16 +03:00
|
|
|
}
|
|
|
|
|
|
2014-07-19 21:33:42 +03:00
|
|
|
@Test
|
|
|
|
|
public void givenUsingPlainJava_whenGeneratingRandomFloatBouned_thenCorrect() {
|
|
|
|
|
final float leftLimit = 1F;
|
|
|
|
|
final float rightLimit = 10F;
|
|
|
|
|
final float generatedFloat = leftLimit + new Random().nextFloat() * (rightLimit - leftLimit);
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedFloat);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenUsingApache_whenGeneratingRandomFloatBounded_thenCorrect() {
|
|
|
|
|
final float leftLimit = 1F;
|
|
|
|
|
final float rightLimit = 10F;
|
2017-08-24 13:11:52 +03:00
|
|
|
final float randomFloat = new RandomDataGenerator().getRandomGenerator()
|
|
|
|
|
.nextFloat();
|
2014-07-19 21:33:42 +03:00
|
|
|
final float generatedFloat = leftLimit + randomFloat * (rightLimit - leftLimit);
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedFloat);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// tests - random double
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenUsingPlainJava_whenGeneratingRandomDoubleUnbounded_thenCorrect() {
|
|
|
|
|
final double generatedDouble = Math.random();
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedDouble);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
2014-07-21 22:08:24 +03:00
|
|
|
public void givenUsingApache_whenGeneratingRandomDoubleUnbounded_thenCorrect() {
|
2017-08-24 13:11:52 +03:00
|
|
|
final double generatedDouble = new RandomDataGenerator().getRandomGenerator()
|
|
|
|
|
.nextDouble();
|
2014-07-19 21:33:42 +03:00
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedDouble);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
2014-07-21 22:08:24 +03:00
|
|
|
public void givenUsingPlainJava_whenGeneratingRandomDoubleBounded_thenCorrect() {
|
|
|
|
|
final double leftLimit = 1D;
|
|
|
|
|
final double rightLimit = 10D;
|
|
|
|
|
final double generatedDouble = leftLimit + new Random().nextDouble() * (rightLimit - leftLimit);
|
2014-07-19 21:33:42 +03:00
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedDouble);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenUsingApache_whenGeneratingRandomDoubleBounded_thenCorrect() {
|
|
|
|
|
final double leftLimit = 1D;
|
|
|
|
|
final double rightLimit = 100D;
|
|
|
|
|
final double generatedDouble = new RandomDataGenerator().nextUniform(leftLimit, rightLimit);
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug("{}", generatedDouble);
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|
|
|
|
|
|
2014-07-21 22:08:24 +03:00
|
|
|
// tests - random String
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() {
|
|
|
|
|
final byte[] array = new byte[7]; // length is bounded by 7
|
|
|
|
|
new Random().nextBytes(array);
|
2014-10-05 17:27:27 +03:00
|
|
|
final String generatedString = new String(array, Charset.forName("UTF-8"));
|
2014-07-21 22:08:24 +03:00
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug(generatedString);
|
2014-07-21 22:08:24 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect() {
|
|
|
|
|
final int leftLimit = 97; // letter 'a'
|
|
|
|
|
final int rightLimit = 122; // letter 'z'
|
|
|
|
|
final int targetStringLength = 10;
|
2017-05-27 20:13:30 +02:00
|
|
|
final Random random = new Random();
|
2014-07-21 22:08:24 +03:00
|
|
|
final StringBuilder buffer = new StringBuilder(targetStringLength);
|
2017-05-27 20:13:30 +02:00
|
|
|
|
2014-07-21 22:08:24 +03:00
|
|
|
for (int i = 0; i < targetStringLength; i++) {
|
2017-05-27 20:13:30 +02:00
|
|
|
final int randomLimitedInt = leftLimit + (int) (random.nextFloat() * (rightLimit - leftLimit + 1));
|
2014-07-21 22:08:24 +03:00
|
|
|
buffer.append((char) randomLimitedInt);
|
|
|
|
|
}
|
2014-10-05 17:27:27 +03:00
|
|
|
final String generatedString = buffer.toString();
|
2014-07-21 22:08:24 +03:00
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug(generatedString);
|
2014-07-21 22:08:24 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
2014-08-05 11:43:48 +03:00
|
|
|
public void givenUsingApache_whenGeneratingRandomString_thenCorrect() {
|
2014-07-21 22:08:24 +03:00
|
|
|
final String generatedString = RandomStringUtils.random(10);
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug(generatedString);
|
2014-07-21 22:08:24 +03:00
|
|
|
}
|
|
|
|
|
|
2014-08-05 11:43:48 +03:00
|
|
|
@Test
|
|
|
|
|
public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() {
|
|
|
|
|
final String generatedString = RandomStringUtils.randomAlphabetic(10);
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug(generatedString);
|
2014-08-05 11:43:48 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect() {
|
|
|
|
|
final String generatedString = RandomStringUtils.randomAlphanumeric(10);
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug(generatedString);
|
2014-08-05 11:43:48 +03:00
|
|
|
}
|
|
|
|
|
|
2014-07-21 22:08:24 +03:00
|
|
|
@Test
|
|
|
|
|
public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect() {
|
|
|
|
|
final int length = 10;
|
|
|
|
|
final boolean useLetters = true;
|
|
|
|
|
final boolean useNumbers = false;
|
|
|
|
|
final String generatedString = RandomStringUtils.random(length, useLetters, useNumbers);
|
|
|
|
|
|
2017-05-03 09:29:10 +02:00
|
|
|
LOG.debug(generatedString);
|
2014-07-21 22:08:24 +03:00
|
|
|
}
|
|
|
|
|
|
2014-07-19 21:33:42 +03:00
|
|
|
}
|