summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-08-30 00:11:58 +0000
committerPaul Phillips <paulp@improving.org>2009-08-30 00:11:58 +0000
commite6efa38619f20445bbb1febcda1104f07f2b77a4 (patch)
treef46107b7407fad1d1c4dc1fbefb153f2940a4f49
parent1d19903447d0044ed843d81e9d70c9e37c4e7ceb (diff)
downloadscala-e6efa38619f20445bbb1febcda1104f07f2b77a4.tar.gz
scala-e6efa38619f20445bbb1febcda1104f07f2b77a4.tar.bz2
scala-e6efa38619f20445bbb1febcda1104f07f2b77a4.zip
Tightening the character range in random string...
Tightening the character range in random string generation.
-rw-r--r--src/library/scala/util/Random.scala20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/library/scala/util/Random.scala b/src/library/scala/util/Random.scala
index 334c76a5db..291b0d052a 100644
--- a/src/library/scala/util/Random.scala
+++ b/src/library/scala/util/Random.scala
@@ -78,11 +78,23 @@ class Random(val self: java.util.Random) {
* @return the String
*/
def nextString(length: Int) = {
- def toChar(ch: Int): List[Char] =
- try new String(Array(ch), 0, 1) toList
- catch { case _: IllegalArgumentException => Nil }
+ def safeChar() = {
+ val surrogateStart: Int = 0xD800
+ val res = nextInt(surrogateStart - 1) + 1
+ res.toChar
+ }
+
+ List.fill(length)(safeChar()).mkString
+ }
+
+ /** Returns a pseudorandomly generated String drawing upon
+ * only ASCII characters between 33 and 126.
+ */
+ def nextASCIIString(length: Int) = {
+ val (min, max) = (33, 126)
+ def nextDigit = nextInt(max - min) + min
- Stream continually toChar(Math.abs(nextInt()) % (1 << 16)) flatMap (x => x) take length mkString
+ new String(Array.fill(length)(nextDigit.toByte), "ASCII")
}
def setSeed(seed: Long) { self.setSeed(seed) }