Repository: commons-text
Updated Branches:
  refs/heads/master 6276d029b -> 2035ed14f


TEXT-91: RandomStringGenerator should be able to generate a String with a 
random length (closes #51)


Project: http://git-wip-us.apache.org/repos/asf/commons-text/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-text/commit/2035ed14
Tree: http://git-wip-us.apache.org/repos/asf/commons-text/tree/2035ed14
Diff: http://git-wip-us.apache.org/repos/asf/commons-text/diff/2035ed14

Branch: refs/heads/master
Commit: 2035ed14fc77342909a35c1b61b28e8be66f49e0
Parents: 6276d02
Author: Pascal Schumacher <pascalschumac...@gmx.net>
Authored: Wed Jun 14 22:34:09 2017 +0200
Committer: Pascal Schumacher <pascalschumac...@gmx.net>
Committed: Sun Jun 18 09:02:55 2017 +0200

----------------------------------------------------------------------
 src/changes/changes.xml                         |  1 +
 .../commons/text/RandomStringGenerator.java     | 21 +++++++++++++++++
 .../commons/text/RandomStringGeneratorTest.java | 24 ++++++++++++++++++++
 3 files changed, 46 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-text/blob/2035ed14/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 86abf92..a97b474 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -46,6 +46,7 @@ The <action> type attribute can be add,update,fix,remove.
   <body>
 
   <release version="1.2" date="tbd" description="tbd">
+    <action issue="TEXT-91" type="add" dev="pschumacher">RandomStringGenerator 
should be able to generate a String with a random length</action>
     <action issue="TEXT-92" type="update" dev="pschumacher">Update 
commons-lang dependency to version 3.6</action>
     <action issue="TEXT-83" type="update" dev="chtompki" due-to="Amey 
Jadiye">Document that commons-csv should be used in preference to 
CsvTranslators</action>
     <action issue="TEXT-67" type="update" 
dev="kinow">NumericEntityUnescaper.options - fix TODO</action>

http://git-wip-us.apache.org/repos/asf/commons-text/blob/2035ed14/src/main/java/org/apache/commons/text/RandomStringGenerator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/text/RandomStringGenerator.java 
b/src/main/java/org/apache/commons/text/RandomStringGenerator.java
index 6df21aa..37aec28 100644
--- a/src/main/java/org/apache/commons/text/RandomStringGenerator.java
+++ b/src/main/java/org/apache/commons/text/RandomStringGenerator.java
@@ -177,6 +177,27 @@ public final class RandomStringGenerator {
     }
 
     /**
+     * Generates a random string, containing between the minimum (inclusive) 
and the maximum (inclusive)
+     * number of code points.
+     *
+     * @param minLengthInclusive
+     *            the minimum (inclusive) number of code points to generate
+     * @param maxLengthInclusive
+     *            the maximum (inclusive) number of code points to generate
+     * @return the generated string
+     * @throws IllegalArgumentException
+     *             if {@code minLengthInclusive < 0}, or {@code 
maxLengthInclusive < minLengthInclusive}
+     * @see RandomStringGenerator#generate(int)
+     * @since 1.2
+     */
+    public String generate(final int minLengthInclusive, final int 
maxLengthInclusive) {
+        Validate.isTrue(minLengthInclusive >= 0, "Minimum length %d is smaller 
than zero.", minLengthInclusive);
+        Validate.isTrue(minLengthInclusive <= maxLengthInclusive,
+                "Maximum length %d is smaller than minimum length %d.", 
maxLengthInclusive, minLengthInclusive);
+        return generate(generateRandomNumber(minLengthInclusive, 
maxLengthInclusive));
+    }
+
+    /**
      * <p>A builder for generating {@code RandomStringGenerator} instances.</p>
      * <p>The behaviour of a generator is controlled by properties set by this
      * builder. Each property has a default value, which can be overridden by

http://git-wip-us.apache.org/repos/asf/commons-text/blob/2035ed14/src/test/java/org/apache/commons/text/RandomStringGeneratorTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/commons/text/RandomStringGeneratorTest.java 
b/src/test/java/org/apache/commons/text/RandomStringGeneratorTest.java
index 86537fa..ff50ac4 100644
--- a/src/test/java/org/apache/commons/text/RandomStringGeneratorTest.java
+++ b/src/test/java/org/apache/commons/text/RandomStringGeneratorTest.java
@@ -18,6 +18,9 @@ package org.apache.commons.text;
 
 import org.junit.Test;
 
+import static org.hamcrest.Matchers.allOf;
+import static org.hamcrest.Matchers.greaterThanOrEqualTo;
+import static org.hamcrest.Matchers.lessThanOrEqualTo;
 import static org.junit.Assert.*;
 
 /**
@@ -45,6 +48,18 @@ public class RandomStringGeneratorTest {
         generator.generate(-1);
     }
 
+    @Test(expected = IllegalArgumentException.class)
+    public void testGenerateMinMaxLengthInvalidLength() {
+        RandomStringGenerator generator = new 
RandomStringGenerator.Builder().build();
+        generator.generate(-1, 0);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testGenerateMinMaxLengthMinGreaterThanMax() {
+        RandomStringGenerator generator = new 
RandomStringGenerator.Builder().build();
+        generator.generate(1, 0);
+    }
+
     private static int codePointLength(String s) {
         return s.codePointCount(0, s.length());
     }
@@ -57,6 +72,15 @@ public class RandomStringGeneratorTest {
         assertEquals(length, codePointLength(str));
     }
 
+    @Test
+    public void testGenerateMinMaxLength() {
+        final int minLength = 0;
+        final int maxLength = 3;
+        RandomStringGenerator generator = new 
RandomStringGenerator.Builder().build();
+        String str = generator.generate(minLength, maxLength);
+        assertThat(codePointLength(str), allOf(greaterThanOrEqualTo(0), 
lessThanOrEqualTo(3)));
+    }
+
     @Test(expected = IllegalArgumentException.class)
     public void testBadMinimumCodePoint() {
         new RandomStringGenerator.Builder().withinRange(-1, 1);

Reply via email to