BAEL-3589 : Improvement: Java Generate Random String

This commit is contained in:
sampada 2019-12-12 19:49:29 +05:30
parent 8d1acf29d5
commit 6cf81c0e0a

View File

@ -1,72 +1,101 @@
package com.baeldung.randomstrings; package com.baeldung.randomstrings;
import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomStringUtils;
import org.junit.Test; import org.junit.Test;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.Random; import java.util.Random;
public class RandomStringsUnitTest { public class RandomStringsUnitTest {
private static final Logger LOG = LoggerFactory.getLogger(RandomStringsUnitTest.class); private static final Logger LOG = LoggerFactory.getLogger(RandomStringsUnitTest.class);
@Test @Test
public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() { public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() {
final byte[] array = new byte[7]; // length is bounded by 7 final byte[] array = new byte[7]; // length is bounded by 7
new Random().nextBytes(array); new Random().nextBytes(array);
final String generatedString = new String(array, Charset.forName("UTF-8")); final String generatedString = new String(array, Charset.forName("UTF-8"));
LOG.debug(generatedString); LOG.debug(generatedString);
} }
@Test @Test
public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect() { public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect() {
final int leftLimit = 97; // letter 'a' final int leftLimit = 97; // letter 'a'
final int rightLimit = 122; // letter 'z' final int rightLimit = 122; // letter 'z'
final int targetStringLength = 10; final int targetStringLength = 10;
final Random random = new Random(); final Random random = new Random();
final StringBuilder buffer = new StringBuilder(targetStringLength); final StringBuilder buffer = new StringBuilder(targetStringLength);
for (int i = 0; i < targetStringLength; i++) { for (int i = 0; i < targetStringLength; i++) {
final int randomLimitedInt = leftLimit + (int) (random.nextFloat() * (rightLimit - leftLimit + 1)); final int randomLimitedInt = leftLimit + (int) (random.nextFloat() * (rightLimit - leftLimit + 1));
buffer.append((char) randomLimitedInt); buffer.append((char) randomLimitedInt);
} }
final String generatedString = buffer.toString(); final String generatedString = buffer.toString();
LOG.debug(generatedString); LOG.debug(generatedString);
} }
@Test @Test
public void givenUsingApache_whenGeneratingRandomString_thenCorrect() { public void givenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect() {
final String generatedString = RandomStringUtils.random(10); final int leftLimit = 97; // letter 'a'
final int rightLimit = 122; // letter 'z'
LOG.debug(generatedString); final int targetStringLength = 10;
} final Random random = new Random();
@Test final String generatedString = random.ints(targetStringLength, leftLimit, rightLimit + 1)
public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() { .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
final String generatedString = RandomStringUtils.randomAlphabetic(10); .toString();
LOG.debug(generatedString); LOG.debug(generatedString);
} }
@Test @Test
public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect() { public void givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect() {
final String generatedString = RandomStringUtils.randomAlphanumeric(10); final int leftLimit = 48; // numeral '0'
final int rightLimit = 122; // letter 'z'
LOG.debug(generatedString); final int targetStringLength = 10;
} final Random random = new Random();
@Test final String generatedString = random.ints(targetStringLength, leftLimit, rightLimit + 1)
public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect() { .filter(i -> (i < 57 || i > 65) && (i < 90 || i > 97))
final int length = 10; .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
final boolean useLetters = true; .toString();
final boolean useNumbers = false;
final String generatedString = RandomStringUtils.random(length, useLetters, useNumbers); LOG.debug(generatedString);
}
LOG.debug(generatedString);
} @Test
public void givenUsingApache_whenGeneratingRandomString_thenCorrect() {
} final String generatedString = RandomStringUtils.random(10);
LOG.debug(generatedString);
}
@Test
public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() {
final String generatedString = RandomStringUtils.randomAlphabetic(10);
LOG.debug(generatedString);
}
@Test
public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect() {
final String generatedString = RandomStringUtils.randomAlphanumeric(10);
LOG.debug(generatedString);
}
@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);
LOG.debug(generatedString);
}
}