summaryrefslogtreecommitdiff
path: root/test/junit
diff options
context:
space:
mode:
authorDenton Cockburn <kanielc@gmail.com>2015-01-02 18:31:07 -0500
committerAdriaan Moors <adriaan.moors@typesafe.com>2015-02-13 11:45:14 -0800
commit01fad26258d73c1901dedeaf50db02d1407acd65 (patch)
treed875b4f217189e6775095f0808796f74db1b175b /test/junit
parent4554a10bcafce6fb14eb8b123bf76887bb6a8114 (diff)
downloadscala-01fad26258d73c1901dedeaf50db02d1407acd65.tar.gz
scala-01fad26258d73c1901dedeaf50db02d1407acd65.tar.bz2
scala-01fad26258d73c1901dedeaf50db02d1407acd65.zip
SI-9059 Random.alphanumeric is inefficient
Generate alphanumeric values by taking random element of string containing all alphanumerics. Instead of generating nextPrintableChar then filtering for alphanumerics, we can just take from a string containing all alphanumerics. This provides a significant performance improvement.
Diffstat (limited to 'test/junit')
-rw-r--r--test/junit/scala/util/RandomTest.scala15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/junit/scala/util/RandomTest.scala b/test/junit/scala/util/RandomTest.scala
new file mode 100644
index 0000000000..32959675ee
--- /dev/null
+++ b/test/junit/scala/util/RandomTest.scala
@@ -0,0 +1,15 @@
+package scala.util
+
+import org.junit.{ Assert, Test }
+
+class RandomTest {
+ // Test for SI-9059
+ @Test def testAlphanumeric: Unit = {
+ def isAlphaNum(c: Char) = (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9')
+
+ val items = Random.alphanumeric.take(100000)
+ for (c <- items) {
+ Assert.assertTrue(s"$c should be alphanumeric", isAlphaNum(c))
+ }
+ }
+}