aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/com/drivergrp/core/generators.scala
diff options
context:
space:
mode:
authorvlad <vlad@drivergrp.com>2016-07-19 15:01:30 -0400
committervlad <vlad@drivergrp.com>2016-07-19 15:01:30 -0400
commit979ff9e765e3c08501cbd00354a87013853fe796 (patch)
treec5d41ed99759c3bf97ba4ef9162aeb68ed4c29f8 /src/main/scala/com/drivergrp/core/generators.scala
parent8d45c2ec5e8abc63046c610109471cc3fa7bfaa2 (diff)
downloaddriver-core-979ff9e765e3c08501cbd00354a87013853fe796.tar.gz
driver-core-979ff9e765e3c08501cbd00354a87013853fe796.tar.bz2
driver-core-979ff9e765e3c08501cbd00354a87013853fe796.zip
Unit tests for core code and bug fixes
Diffstat (limited to 'src/main/scala/com/drivergrp/core/generators.scala')
-rw-r--r--src/main/scala/com/drivergrp/core/generators.scala32
1 files changed, 23 insertions, 9 deletions
diff --git a/src/main/scala/com/drivergrp/core/generators.scala b/src/main/scala/com/drivergrp/core/generators.scala
index 6055cd0..a564374 100644
--- a/src/main/scala/com/drivergrp/core/generators.scala
+++ b/src/main/scala/com/drivergrp/core/generators.scala
@@ -12,12 +12,14 @@ object generators {
import random._
private val DefaultMaxLength = 100
+ private val StringLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ".toSet
- def nextId[T](): Id[T] = Id[T](nextLong())
+ def nextId[T](): Id[T] = Id[T](scala.math.abs(nextLong()))
def nextName[T](maxLength: Int = DefaultMaxLength): Name[T] = Name[T](nextString(maxLength))
- def nextString(maxLength: Int = DefaultMaxLength) = random.nextString(maxLength)
+ def nextString(maxLength: Int = DefaultMaxLength): String =
+ (oneOf[Char](StringLetters) +: arrayOf(oneOf[Char](StringLetters), maxLength - 1)).mkString
def nextOption[T](value: => T): Option[T] = if (nextBoolean) Option(value) else None
@@ -27,23 +29,35 @@ object generators {
def nextTime(): Time = Time(math.abs(nextLong() % System.currentTimeMillis))
- def nextTimeRange(): TimeRange = TimeRange(nextTime(), nextTime())
+ def nextTimeRange(): TimeRange = {
+ val oneTime = nextTime()
+ val anotherTime = nextTime()
+
+ TimeRange(Time(scala.math.min(oneTime.millis, anotherTime.millis)),
+ Time(scala.math.max(oneTime.millis, anotherTime.millis)))
+ }
def nextBigDecimal(multiplier: Double = 1000000.00, precision: Int = 2): BigDecimal =
BigDecimal(multiplier * nextDouble, new MathContext(precision))
- def oneOf[T](items: Seq[T]): T = items(nextInt(items.size))
+ def oneOf[T](items: T*): T = oneOf(items.toSet)
+
+ def oneOf[T](items: Set[T]): T = items.toSeq(nextInt(items.size))
def arrayOf[T: ClassTag](generator: => T, maxLength: Int = DefaultMaxLength): Array[T] =
- Array.fill(maxLength)(generator)
+ Array.fill(nextInt(maxLength))(generator)
- def seqOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Seq[T] = Seq.fill(maxLength)(generator)
+ def seqOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Seq[T] =
+ Seq.fill(nextInt(maxLength))(generator)
- def vectorOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Vector[T] = Vector.fill(maxLength)(generator)
+ def vectorOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Vector[T] =
+ Vector.fill(nextInt(maxLength))(generator)
- def listOf[T](generator: => T, maxLength: Int = DefaultMaxLength): List[T] = List.fill(maxLength)(generator)
+ def listOf[T](generator: => T, maxLength: Int = DefaultMaxLength): List[T] =
+ List.fill(nextInt(maxLength))(generator)
- def setOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Set[T] = seqOf(generator, maxLength).toSet
+ def setOf[T](generator: => T, maxLength: Int = DefaultMaxLength): Set[T] =
+ seqOf(generator, nextInt(maxLength)).toSet
def mapOf[K, V](maxLength: Int, keyGenerator: => K, valueGenerator: => V): Map[K, V] =
seqOf(nextPair(keyGenerator, valueGenerator), maxLength).toMap