You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/06/27 12:48:46 UTC
[commons-text] 02/02: Add RandomStringGenerator.builder()
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-text.git
commit 668907895826e4fa6a9db7a3709a98390d1a825e
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Tue Jun 27 08:48:40 2023 -0400
Add RandomStringGenerator.builder()
---
src/changes/changes.xml | 1 +
.../apache/commons/text/RandomStringGenerator.java | 16 +++++--
.../apache/commons/text/TextRandomProvider.java | 2 +-
.../commons/text/RandomStringGeneratorTest.java | 50 +++++++++++-----------
4 files changed, 40 insertions(+), 29 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 82f27e10..87329deb 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -65,6 +65,7 @@ The <action> type attribute can be add,update,fix,remove.
<action issue="TEXT-224" type="add" dev="ggregory" due-to="PJ Fanning, Gary Gregory">Set SecureProcessing feature in XmlStringLookup by default.</action>
<action issue="TEXT-224" type="add" dev="ggregory" due-to="Gary Gregory">Add StringLookupFactory.xmlStringLookup(Map<String, Boolean>...).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add @FunctionalInterface to FormatFactory.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add RandomStringGenerator.builder().</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot">Bump actions/cache from 3.0.8 to 3.0.10 #361, #365.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump actions/setup-java from 3 to 3.5.1.</action>
diff --git a/src/main/java/org/apache/commons/text/RandomStringGenerator.java b/src/main/java/org/apache/commons/text/RandomStringGenerator.java
index 8ae6d002..8f7bd5ae 100644
--- a/src/main/java/org/apache/commons/text/RandomStringGenerator.java
+++ b/src/main/java/org/apache/commons/text/RandomStringGenerator.java
@@ -35,7 +35,7 @@ import org.apache.commons.lang3.Validate;
*
* <pre>
* // Generates a 20 code point string, using only the letters a-z
- * RandomStringGenerator generator = new RandomStringGenerator.Builder()
+ * RandomStringGenerator generator = RandomStringGenerator.builder()
* .withinRange('a', 'z').build();
* String randomLetters = generator.generate(20);
* </pre>
@@ -43,7 +43,7 @@ import org.apache.commons.lang3.Validate;
* // Using Apache Commons RNG for randomness
* UniformRandomProvider rng = RandomSource.create(...);
* // Generates a 20 code point string, using only the letters a-z
- * RandomStringGenerator generator = new RandomStringGenerator.Builder()
+ * RandomStringGenerator generator = RandomStringGenerator.builder()
* .withinRange('a', 'z')
* .usingRandom(rng::nextInt) // uses Java 8 syntax
* .build();
@@ -205,7 +205,7 @@ public final class RandomStringGenerator {
* <pre>
* {@code
* UniformRandomProvider rng = RandomSource.create(...);
- * RandomStringGenerator gen = new RandomStringGenerator.Builder()
+ * RandomStringGenerator gen = RandomStringGenerator.builder()
* .usingRandom(rng::nextInt)
* // additional builder calls as needed
* .build();
@@ -290,6 +290,16 @@ public final class RandomStringGenerator {
}
}
+ /**
+ * Constructs a new builder.
+ * @return a new builder.
+ *
+ * @since 1.11.0
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
/**
* The smallest allowed code point (inclusive).
*/
diff --git a/src/main/java/org/apache/commons/text/TextRandomProvider.java b/src/main/java/org/apache/commons/text/TextRandomProvider.java
index 268b23be..0190d9cb 100644
--- a/src/main/java/org/apache/commons/text/TextRandomProvider.java
+++ b/src/main/java/org/apache/commons/text/TextRandomProvider.java
@@ -29,7 +29,7 @@ package org.apache.commons.text;
* <pre>
* {@code
* UniformRandomProvider rng = RandomSource.create(...);
- * RandomStringGenerator gen = new RandomStringGenerator.Builder()
+ * RandomStringGenerator gen = RandomStringGenerator.builder()
* .usingRandom(rng::nextInt)
* // additional builder calls as needed
* .build();
diff --git a/src/test/java/org/apache/commons/text/RandomStringGeneratorTest.java b/src/test/java/org/apache/commons/text/RandomStringGeneratorTest.java
index 14f91f52..9895500c 100644
--- a/src/test/java/org/apache/commons/text/RandomStringGeneratorTest.java
+++ b/src/test/java/org/apache/commons/text/RandomStringGeneratorTest.java
@@ -41,22 +41,22 @@ public class RandomStringGeneratorTest {
@Test
public void testBadMaximumCodePoint() {
- assertThatIllegalArgumentException().isThrownBy(() -> new RandomStringGenerator.Builder().withinRange(0, Character.MAX_CODE_POINT + 1));
+ assertThatIllegalArgumentException().isThrownBy(() -> RandomStringGenerator.builder().withinRange(0, Character.MAX_CODE_POINT + 1));
}
@Test
public void testBadMinAndMax() {
- assertThatIllegalArgumentException().isThrownBy(() -> new RandomStringGenerator.Builder().withinRange(2, 1));
+ assertThatIllegalArgumentException().isThrownBy(() -> RandomStringGenerator.builder().withinRange(2, 1));
}
@Test
public void testBadMinimumCodePoint() {
- assertThatIllegalArgumentException().isThrownBy(() -> new RandomStringGenerator.Builder().withinRange(-1, 1));
+ assertThatIllegalArgumentException().isThrownBy(() -> RandomStringGenerator.builder().withinRange(-1, 1));
}
@Test
public void testChangeOfFilter() {
- final RandomStringGenerator.Builder builder = new RandomStringGenerator.Builder().withinRange('a', 'z')
+ final RandomStringGenerator.Builder builder = RandomStringGenerator.builder().withinRange('a', 'z')
.filteredBy(A_FILTER);
final String str = builder.filteredBy(B_FILTER).build().generate(100);
@@ -69,7 +69,7 @@ public class RandomStringGeneratorTest {
public void testGenerateMinMaxLength() {
final int minLength = 0;
final int maxLength = 3;
- final RandomStringGenerator generator = new RandomStringGenerator.Builder().build();
+ final RandomStringGenerator generator = RandomStringGenerator.builder().build();
final String str = generator.generate(minLength, maxLength);
assertThat(codePointLength(str)).isBetween(0, 3);
}
@@ -77,7 +77,7 @@ public class RandomStringGeneratorTest {
@Test
public void testGenerateMinMaxLengthInvalidLength() {
assertThatIllegalArgumentException().isThrownBy(() -> {
- final RandomStringGenerator generator = new RandomStringGenerator.Builder().build();
+ final RandomStringGenerator generator = RandomStringGenerator.builder().build();
generator.generate(-1, 0);
});
}
@@ -85,7 +85,7 @@ public class RandomStringGeneratorTest {
@Test
public void testGenerateMinMaxLengthMinGreaterThanMax() {
assertThatIllegalArgumentException().isThrownBy(() -> {
- final RandomStringGenerator generator = new RandomStringGenerator.Builder().build();
+ final RandomStringGenerator generator = RandomStringGenerator.builder().build();
generator.generate(1, 0);
});
}
@@ -93,7 +93,7 @@ public class RandomStringGeneratorTest {
@Test
public void testGenerateTakingIntThrowsNullPointerException() {
assertThatNullPointerException().isThrownBy(() -> {
- final RandomStringGenerator.Builder randomStringGeneratorBuilder = new RandomStringGenerator.Builder();
+ final RandomStringGenerator.Builder randomStringGeneratorBuilder = RandomStringGenerator.builder();
final CharacterPredicate[] characterPredicateArray = new CharacterPredicate[2];
randomStringGeneratorBuilder.filteredBy(characterPredicateArray);
final RandomStringGenerator randomStringGenerator = randomStringGeneratorBuilder.build();
@@ -105,14 +105,14 @@ public class RandomStringGeneratorTest {
@Test
public void testInvalidLength() {
assertThatIllegalArgumentException().isThrownBy(() -> {
- final RandomStringGenerator generator = new RandomStringGenerator.Builder().build();
+ final RandomStringGenerator generator = RandomStringGenerator.builder().build();
generator.generate(-1);
});
}
@Test
public void testMultipleFilters() {
- final String str = new RandomStringGenerator.Builder().withinRange('a', 'd')
+ final String str = RandomStringGenerator.builder().withinRange('a', 'd')
.filteredBy(A_FILTER, B_FILTER).build().generate(5000);
boolean aFound = false;
@@ -134,7 +134,7 @@ public class RandomStringGeneratorTest {
@Test
public void testNoLoneSurrogates() {
final int length = 5000;
- final String str = new RandomStringGenerator.Builder().build().generate(length);
+ final String str = RandomStringGenerator.builder().build().generate(length);
char lastChar = str.charAt(0);
for (int i = 1; i < str.length(); i++) {
@@ -163,7 +163,7 @@ public class RandomStringGeneratorTest {
// Request a string in an area of the Basic Multilingual Plane that is
// largely occupied by private characters
- final String str = new RandomStringGenerator.Builder().withinRange(startOfPrivateBMPChars,
+ final String str = RandomStringGenerator.builder().withinRange(startOfPrivateBMPChars,
Character.MIN_SUPPLEMENTARY_CODE_POINT - 1).build().generate(5000);
int i = 0;
@@ -176,7 +176,7 @@ public class RandomStringGeneratorTest {
@Test
public void testRemoveFilters() {
- final RandomStringGenerator.Builder builder = new RandomStringGenerator.Builder().withinRange('a', 'z')
+ final RandomStringGenerator.Builder builder = RandomStringGenerator.builder().withinRange('a', 'z')
.filteredBy(A_FILTER);
builder.filteredBy();
@@ -196,7 +196,7 @@ public class RandomStringGeneratorTest {
public void testSelectFromCharArray() {
final String str = "abc";
final char[] charArray = str.toCharArray();
- final RandomStringGenerator generator = new RandomStringGenerator.Builder().selectFrom(charArray).build();
+ final RandomStringGenerator generator = RandomStringGenerator.builder().selectFrom(charArray).build();
final String randomText = generator.generate(5);
@@ -208,7 +208,7 @@ public class RandomStringGeneratorTest {
@Test
public void testSelectFromCharVarargs() {
final String str = "abc";
- final RandomStringGenerator generator = new RandomStringGenerator.Builder().selectFrom('a', 'b', 'c').build();
+ final RandomStringGenerator generator = RandomStringGenerator.builder().selectFrom('a', 'b', 'c').build();
final String randomText = generator.generate(5);
for (final char c : randomText.toCharArray()) {
assertThat(str.indexOf(c) != -1).isTrue();
@@ -219,7 +219,7 @@ public class RandomStringGeneratorTest {
public void testSelectFromCharVarargs2() {
final String str = "abcde";
// @formatter:off
- final RandomStringGenerator generator = new RandomStringGenerator.Builder()
+ final RandomStringGenerator generator = RandomStringGenerator.builder()
.selectFrom()
.selectFrom(null)
.selectFrom('a', 'b')
@@ -236,7 +236,7 @@ public class RandomStringGeneratorTest {
@Test
public void testSelectFromCharVarargSize1() {
- final RandomStringGenerator generator = new RandomStringGenerator.Builder().selectFrom('a').build();
+ final RandomStringGenerator generator = RandomStringGenerator.builder().selectFrom('a').build();
final String randomText = generator.generate(5);
for (final char c : randomText.toCharArray()) {
assertEquals('a', c);
@@ -245,7 +245,7 @@ public class RandomStringGeneratorTest {
@Test
public void testSelectFromEmptyCharVarargs() {
- final RandomStringGenerator generator = new RandomStringGenerator.Builder().selectFrom().build();
+ final RandomStringGenerator generator = RandomStringGenerator.builder().selectFrom().build();
final String randomText = generator.generate(5);
for (final char c : randomText.toCharArray()) {
assertTrue(c >= Character.MIN_CODE_POINT && c <= Character.MAX_CODE_POINT);
@@ -255,14 +255,14 @@ public class RandomStringGeneratorTest {
@Test
public void testSelectFromNullCharVarargs() {
final int length = 5;
- RandomStringGenerator generator = new RandomStringGenerator.Builder().selectFrom(null).build();
+ RandomStringGenerator generator = RandomStringGenerator.builder().selectFrom(null).build();
String randomText = generator.generate(length);
assertThat(codePointLength(randomText)).isEqualTo(length);
for (final char c : randomText.toCharArray()) {
assertTrue(c >= Character.MIN_CODE_POINT && c <= Character.MAX_CODE_POINT);
}
//
- final Builder builder = new RandomStringGenerator.Builder().selectFrom('a');
+ final Builder builder = RandomStringGenerator.builder().selectFrom('a');
generator = builder.build();
randomText = generator.generate(length);
for (final char c : randomText.toCharArray()) {
@@ -280,7 +280,7 @@ public class RandomStringGeneratorTest {
@Test
public void testSetLength() {
final int length = 99;
- final RandomStringGenerator generator = new RandomStringGenerator.Builder().build();
+ final RandomStringGenerator generator = RandomStringGenerator.builder().build();
final String str = generator.generate(length);
assertThat(codePointLength(str)).isEqualTo(length);
}
@@ -290,7 +290,7 @@ public class RandomStringGeneratorTest {
final char testChar = 'a';
final TextRandomProvider testRandom = n -> testChar;
- final String str = new RandomStringGenerator.Builder().usingRandom(testRandom).build().generate(10);
+ final String str = RandomStringGenerator.builder().usingRandom(testRandom).build().generate(10);
for (final char c : str.toCharArray()) {
assertThat(c).isEqualTo(testChar);
}
@@ -300,7 +300,7 @@ public class RandomStringGeneratorTest {
public void testWithinMultipleRanges() {
final int length = 5000;
final char[][] pairs = {{'a', 'z'}, {'0', '9'}};
- final RandomStringGenerator generator = new RandomStringGenerator.Builder()
+ final RandomStringGenerator generator = RandomStringGenerator.builder()
.withinRange(pairs).build();
final String str = generator.generate(length);
@@ -324,7 +324,7 @@ public class RandomStringGeneratorTest {
final int length = 5000;
final int minimumCodePoint = 'a';
final int maximumCodePoint = 'z';
- final RandomStringGenerator generator = new RandomStringGenerator.Builder()
+ final RandomStringGenerator generator = RandomStringGenerator.builder()
.withinRange(minimumCodePoint, maximumCodePoint).build();
final String str = generator.generate(length);
@@ -338,7 +338,7 @@ public class RandomStringGeneratorTest {
@Test
public void testZeroLength() {
- final RandomStringGenerator generator = new RandomStringGenerator.Builder().build();
+ final RandomStringGenerator generator = RandomStringGenerator.builder().build();
assertThat(generator.generate(0)).isEqualTo("");
}
}